If a server is sending a push to an app, then how can it know whether it should be sending the push using the Apple sandbox push server, or the production server?
If the app is on the app store or testflight then it needs to be using the sandbox server, but if the app is being run via XCode interactively as devs are developing/testing then the push needs to be sent via the sandbox server.
But the server itself has no idea if the app was installed via Testflight/app store/XCode/ or a development .ipa. So the server can't know how to send the push.
The app has to send the push token to the server anyway, so the app could inform the server which environment it should be sent over. But then how can the app detect that itself?
A naive answer is to use #ifdef DEBUG to detect this, but that is incorrect. Which environment a push should be sent over is not correlated with that. For example an app could be being run with a debug scheme or a release scheme, but in both cases if the app is installed/running via xcode then the push environment has to be the sandbox.
So my question is, is there a way the app can detect which push environment a push should be sent over in order than it can instruct the server accordingly?
Notifications
RSS for tagLearn about the technical aspects of notification delivery on device, including notification types, priorities, and notification center management.
Post
Replies
Boosts
Views
Activity
HI all
need urgent help here, so I have configured my router (enterprise company router) a hotspot and this as normal process, now, I am having difficult time for apple product to redirect this captive portal I configured, seems windows Android device directs me to the login page I need to be connected and then I register my credentials for internet use.
when using apple products, I connect to the same hotspot but nothing happens the redirection does not havppens on Https ? if I put the whole https address in my safari while connected to the hotspot that takes me to where I need to be but It wont redirect as the other products I have tried to reset browser both Iphone 15 pro max 17.3.1 and MacBook Pro 14.3.1
If I use https://abcde.companywifi.com/portal?GatewayID=145&proto=https it will not work because it has the https in it?
If I use without the https and just http://abcde.companywifi.com/portal?GatewayID=145 that works fine and auto directs as soon as I am connected to the hotspot but I dont want that I want secure connection and has to be Https connection
Hi Team,
We are facing issues about VOIP call for some users in USA who used the Wi-Fi network of some service provider. They are not receiving the calls on Wi-Fi but able to receive the call when connected to SIM/Data Connection. We implemented the VOIP services of apple and VOIP notification received and call kit UI displayed. Its working fine on public network mostly but not working on some Wi-Fi network in USA.
iPhone 12
Latest iOS version
VOIP notification not received
Call kit not display
App Name=> Owwll
Hello,
I would like get advice about the time-sensitive notification ‘interruption-level’ set to ‘time-sensitive’ in the push payload. I’m wondering if this setting applies to VOIP push notifications. I tried to find information in Apple’s documentation, but it doesn’t specify whether it is applicable for VOIP push notifications.
{
"aps": {
"interruption-level": "time-sensitive"
}
}
https://developer.apple.com/documentation/usernotifications/generating-a-remote-notification#:~:text=ContentIdentifier%[…]terruption%2Dlevel,-String
Hi, Team.
I use old widget(Today Extension) to show some info to users, but when my app had got updated , the widget missed and can't find it in today gallery. I see lot's of apps have same issue, is this a system bug?
Thanks you for your reply.
I'm trying to implement a unique Id for each pass that someone adds to their wallet. Something like a unique membership Id or even something as simple as displaying a unique username. What is the process of setting this up?
I already have everything set up to generate the pass and update the values of the pass fields, but how can I make this specific to a single pass? I feel like I have everything I need to support this but not sure of the workflow I should use.
I found this endpoint: https://developer.apple.com/documentation/walletpasses/return_a_personalized_pass but unsure what the personalizationToken is or how I'd provide this. Is this the same as the "pushToken"?
It also references this: https://developer.apple.com/documentation/walletpasses/personalizationdictionary/requiredpersonalizationinfo which seems to require previously entered user information.
Hello,
Scenario:
My app is running in the foreground, logged into my backend server and I have registered for push notifications and received a push token. I have pin code activated on the phone.
I make some code changes and re-flash it in Xcode, the app is running in debug mode wired to Xcode.
I put the app in the background and lock the screen and wait 30 sec until data protection is activated and the keychain cannot be accessed.
I send a push notification. In this case didRegisterForRemoteNotificationsWithDeviceToken if often called with the same push token as I had before.
Data is protected in this state, hence I cannot access the auth token and send the token to the server. In this case it is not needed since the token is the same, but it got me a bit worried. In didRegisterForRemoteNotificationsWithDeviceToken I send the push token to the server, as the Apple docs recommend.
My concern now is: could didRegisterForRemoteNotificationsWithDeviceToken be called in a real scenario when the phone is locked and data protection is activated?
The Apple docs say:
Device tokens can change periodically, so caching the value risks sending an invalid token to your server.
And gives an example:
For example, UIKit calls the method when the user launches an app after having restored a device from data that is not the device’s backup data.
In this case, since the user is initiating it, the phone is unlocked so data should be unprotected. But that is one example, what more scenarios could there be that triggers this function, and could data be protected in those scenarios?
I'm worried that it could be triggered, even if its rare, in a state where data protection is activated, hence I cannot send the new push token to the server, and thus future remote notifications from the server will not be received by my app until the users logs out and logs in again.
We have been seeing a large increase of errors since March 5, 2024 starting around 8pm UTC.
Example error response is
http2: server sent GOAWAY and closed the connection; LastStreamID=2147483647, ErrCode=PROTOCOL_ERROR, debug="Stream 169 does not exist"
We've been sending notifications the same way for about 8 months now, and a very similar way for over 2 years without this issue.
Currently getting about an 8% failure rate on requests. Sending about 20,000,000 notifications a day.
Has something changed that we need to modify our process for?
In a live activity view, the update occurs upon pressing the button intent but does not automatically refresh after the application transitions to the background in SwiftUI.
Hi,
I'm experiencing a bug that only occur in iPhone X/XS that run iOS 16.2. I couldn't tap the push notification when the app is already active. I need to trigger a feature when the push notification is tapped. When the app is on the background, it worked. But when the app is already active / on the foreground, it didn't. I tried this on an iPhone 8 Plus running iOS 16.2.1 and iPhone 14 and iPhone XR running iOS 17.1.2, but this bug didn't occur (ie. the tap was working and I can call didReceiveResponse callback). Why does this happen? Can anybody help me?
Thanks.
I want to create passes with Dynamic QR Codes which changes based on T-OTP. Google wallet do have this feature called RotatingBarCode, while there is nothing like this in Apple wallet. Can we do this by updating the passes? If yes, how? If apple wallet pass are getting updates using webServiceURL, how can we create the endpoint and what the body of get request will look like?
Our MDM customers often claim MDM push is not delivered to device and cannot manage devices via MDM.
The user first uninstalled the old description file and then installed the new one, but after the new description file was installed, our mdm server did not receive any notification from Apple about updating the token, only received an Authenticate message
We tried to restore network settings but it did not work. We hope to get your help to solve this problem. Currently, we can't figure out where the problem is.
I've got an app which has a notification service extension (and has had so for a few years).
I noticed that the pushes were getting delivered directly to the user for a handset, and in the log could see a SpringBoard error saying
Error Domain=PluginKit Code=4 RBSLanchRequest error trying to launch plugin
Error Domain=RBSRequestErrorDomain Code=5 Launch failed
ErrorDomain=NSPOSIXErrorDomain Code=111 Unknown error:111
I rebooted the phone and it started working as expected.
But it's worrisome this happened, and it's not the first time I've seen it either.
Observed with iOS 17.3.1
Hi. I'm looking to schedule a number of notifications based on the user's location and have them be triggered UNLocationNotificationTriggers. I want to know whether notifications get delivered so I can limit the number of notifications the user receives in a day. I was hoping I could determine their delivery by either the UNUserNotificationCenterDelegate's method userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse) (which only knows when the user has tapped on the notification or deleted it) or by UNUserNotificationCenter.current().deliveredNotifications() (which should return the notification if it was delivered and is in the Notification Center).
UNUserNotificationCenter.current().deliveredNotifications() is not returning notifications that were delivered via UNLocationNotificationTriggers. I'm assuming this is for some privacy reason? All of the UNLocationNotificationTriggers are configured with notifyOnEntry to be true, notifyOnExit to be false, and repeats to be false. They get delivered appropriately, but I can't determine if/when they get delivered to ensure the user doesn't receive too many notifications. Notifications delivered with a UNTimeIntervalNotificationTrigger are returned as expected.
Is all of this by design or is there another way to determine when a notification scheduled with a UNLocationNotificationTrigger gets delivered? I'm just trying to create the best experience for my users. Thank you.
Hi,
Has anyone found a way to send a push notification based on beacon region entry/exit? Since iOS 17, CLBeacionRegion which inherits CLRegion that made this possible is now deprecated and replaced by CLMonitor.CLBeaconIdentityCondition.
CLMonitor.CLBeaconIdentityCondition does not only work properly on the latest version of iOS, it also lacks such features like sending push notifications based on region entry/exit.
Even UNLocationNotificationTrigger only accepts CLRegion which is not possible to create one using existing classes that are not deprecated.
I am facing a strange problem with PushKit/CallKit when compiling with SDK 17.x. The app behaves normally on iOS 16 and iOS 17 devices but PushKit does not seem to work properly anymore with VoIP Push messages.
The behavior is as follows:
when the screen is unlocked, everything works as expected (app gets automatically started when not running and the call notification is displayed)
when the screen is locked and the app is already running, everything works as expected (CallKit call screen is shown)
when the app is not running and the screen is locked, nothing happens... but as soon as I unlock the screen the app gets started and CallKit can be informed about the call. After this the call notification is properly displayed. In the logs of the app I can see that the app didn't get started/informed about the VoIP Push notification before unlocking the screen
Now the second problem is: as iOS doesn't start the app properly when the screen is locked, the app can't display the call via CallKit. Because of that the app will get blacklisted after a while (and for a while). Before using iOS SDK 17 the app was working without any issues on iOS 15 devices. Is this a known issue?
hello
I'd like to transfer my application to another Apple dev account in the near future, my application uses FireBase cloud messaging to receive notifications
What exactly should I do once the transfer is done?
Should I just update the APNs authentication key on the FireBase console in Project parameters ? Should I also change the team ID on the fireBase console ?
Does this mean generating a new GoogleService-Info.plist file and therefore an application update ?
My goal is to send an image via APNS and let the user store it in the Photos app or the Files app.
Does APNS support this functionality?
How can I test it?
Hi.
I'm fixing issue of my push to talk app behavior.
While I'm joining Push To Talk channel, then I uninstall application, application does not exist but system shows PushToTalk status in status bar with blue button.
I want to automatically leave channel after uninstall app, but now I cannot handle this behavior.
If there is some expected behavior of apple, I want to know it but I cannot find their expectation in any document. Does anyone know it?
best regards.
I had post my app after a long develpment period, I don't know why. but in some devices works well, but in others is difficult to notice what is going on. First: my app is a softphone voip, but keep app open or in background for our register be active is not effective because of battery safety. Then is when apns coming in, we just need that or app come back to be active, even in background, to our call shows up. and this happens well in our development enviroment, exacly like I describe. but in some devices doesn't work at all. We are using apns and firebase tokens to identify our registers and devices, and keeping together in our server/DB. I will share a image to explain better the flux that I implemented:
Yes, I followed all instructions to insert apns, p12 and p8 certifies in the project, I just don't know why is working only in some devices. If anybody try test this function in my app, doesn't will work because I put some rules about IP address.