Hi, I need a feature in the iOS app that requires updating the user screen via FCM.
In other words, I have to update it with no sound and screen display, but this doesn't work.
When I remove the notification field, the notification will not be displayed to the user, but the sound will be played.
If I remove the sound field, I can make no sound, but the user will be notified.
If I remove both, I'm not getting this from the iOS app.
How can I solve this??
Which option should I send Push from the server??
I'm also using Notification Service Extension.
APNS
RSS for tagSend push notifications to Mac, iOS, iPadOS, tvOS devices through your app using the Apple Push Notifications service (APNs).
Posts under APNS tag
200 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Prior to .p8 tokens, we were using .p12 cert for communication with APNS. We have since migrated to use .p8 token within our 3rd party push notification provider however, we still have the .p12 cert associated with our AppStore provisioning profile.
Do we still need to maintain the .p12 cert to ensure the validity of the AppStore provisioning profile?
Will revoking the .p12 cert result in inability for Apple to recognize that the app has push notifications enabled?
In Flutter application, Is there FCM related any changes for new iOS versions? I didn't find any solution regarding this. Working fine in android all versions and in iOS working fine till version 16.
Also verified from app setting (version 17 and above), Notification permissions enabled.
Also get success from this API - https://fcm.googleapis.com/fcm/send
response -
"multicast_id": 912044660XXXXXX, "success": 1, "failure": 0,
But not receiving any message, tried with debug and console log but there is no message/log or error message.
We are enrolled in the Apple Developer Program as an organization but still, I don't see any options to create an MDM certificate in the certification section.
Kindly guide us the steps and options to enable the same.
One Line Summary
window.safari.pushNotification.requestPermission() is no longer showing a prompt to the user with Safari 17.3 on macOS 14.3 and it's callback fires as "denied".
Why this is is important to fix
Starting with Safari 16 for macOS 13 Apple introduced support for the standard Push API. However it is expected that the original Safari JS API window.safari.pushNotification should continue working, as many sites have not fully upgraded to the new API and Apple has not announced a deprecation.
Environments
NOT Working
macOS 14.3 with Safari Version 17.3 (19617.2.4.11.8)
macOS 14.4 Beta (23E5191e) with Safari Version 17.4 (19618.1.13.11.5)
Working
macOS 13.6.4 with Safari Version 17.3 (18617.2.4.11.11, 18617)
MRE (minimal reproducible example)
See the following site to quickly reproduce the issue noted here:
https://public-mre-macos-window-safari-prompt-bug.glitch.me/
This question is a follow-on and clarification from this earlier post.
I'd just like to confirm that after an App Transfer has been completed, whether there is any need for a new release to be cut? Judging from the prior post, my understanding is that a new release would not be necessary, and that all the existing versions of the app will continue to connect successfully with the APN servers.
The only necessary update would be the server connection between the APN servers and the server used to generate notifications, with a new token or certificate.
Is my understanding correct?
Hi, I have a UNNotificationServiceExtension, which was running perfectly fine for more than a year. Last week, it has suddenly stopped working, with no apparent changes to the server-side application sending the notification to APNS. The strange part is that it works on some devices and it doesn't work on others. I have confirmed that notifications are enabled for the app in iOS system preferences.
com.company.product is the bundle identifier of the main app
com.company.product.yyyyy is the bundle identifies of the NSE
appname.app and nse.appex are the placeholders for the name of the app and name of the NSE respectively
Following is the NSE info.plist:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDisplayName</key>
<string>yyyy</string>
<key>CFBundleName</key>
<string>yyyy</string>
<key>CFBundleIdentifier</key>
<string>com.company.product.yyyy</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>XPC!</string>
<key>CFBundleShortVersionString</key>
<string>y.y.y</string>
<key>MinimumOSVersion</key>
<string>13.0</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.service</string>
<key>NSExtensionPrincipalClass</key>
<string>NotificationService</string>
</dict>
<key>CFBundleVersion</key>
<string>yyy</string>
</dict>
</plist>
Model: iPhone 15 Pro Max
iOS Version: 17.3
We have noticed that the notification service extension stops working after app update for some users and it only starts working again after rebooting the device.
Does anybody else have similar problem and what was the solution?
In my app code I used TARGET_OS_IPHONE/TARGET_OS_IOS for SDK 15 and 16.
After go on SDK 17.x these macros are not defined.
In my investigation, I found that in /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/TargetConditionals.h
__is_target_environment(macabi) return false hence the issue.
Could you please verify and explain, if I do not understand / use correctly.
Regards,
Alexei
I'm observing a sporadic bug in our web client where incoming URLs (triggered by a Push Notification or link tapped in another app) do not trigger either of the two expected API callbacks noted in the developer documentation for UISceneDelegate.
Specifically, Apple's docs say:
If your app has opted into Scenes, and your app isn’t running, the system delivers the URL to the scene(_:willConnectTo:options:) delegate method after launch, and to scene(_:openURLContexts:) when your app opens a URL while running or suspended in memory.
Our client app has opted into scenes and the two callbacks mentioned above work reliably most of the time for incoming URLs. However, using the exact same test links or push notifications, I'm able to reproduce intermittent issues where I can see that neither of the above callbacks are triggered when the app is foregrounded to handle a URL.
The bug seems to occur when:
The app has been previously launched, and is backgrounded
It's left in the background for some time (system memory pressure, from using other apps etc., might possibly play a factor also)
In this scenario, sometimes when either an external link or URL via push notification is opened, I can see that neither of the two iOS delegate methods for UISceneDelegate are called. Our app is brought to the foreground correctly as though the URL will be handled, but the URL/link is not processed since it is never sent to our client.
A few other notes:
When the bug is repro'd using push notifications, I can see that our app receives a callback to userNotificationCenter:didReceive:, so the push notification definitely arrives. However, as noted above, the normal 2 API callbacks for UISceneDelegate are never triggered, and since those two callsites are where we handle incoming URLs, the URL from the push notification is never opened
I haven't been able to observe any code in our app that precedes these hooks in our scene delegate that could be interfering. (As mentioned above, the same steps to replicate work the majority of the time)
Does anyone know whether this could be a possible iOS bug?
Any help/suggestions are greatly appreciated. Thank you
On Safari 17.3 and onwards getting this error on previous version push popup is working as expected
Refer to the document:
https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/handling_notification_responses_from_apns#3394529
Error code 410, 'Unregistered' means: The device token is inactive for the specified topic.
But since February 1st, 2024, we did not got 'Unregistered' response any more. Do you know why ?
I'm experiencing an issue while attempting to create a provisioning profile for push notifications. But I can clearly see that the push notification service is enabled for the new provisioning profile. However it still shows error.
Since upgrading to iOS 17.2.1 some app notifications have been duplicated 6 times. Tried turning off the notification then restarting the device & finally turning the notifications back on for the apps but still no luck. The notifications are the same and show up at the same time. Is anyone else experiencing this?
How do you wake up an app without using push notification? I am developing a medical app which is isolated from the internet for cybersecurity/HIPAA reasons. When the iPhone is locked, I would like the app to launch, or return to the foreground, when the server notifies it that an event occurred. Is there a way implement this using Swift?
When device polling occurs in the link below, is there a way to determine from the requests received on the server side whether the request was device polling?
https://developer.apple.com/documentation/devicemanagement/implementing_device_management/handling_notnow_status_responses#3690890
Or can I add a specific parameter when the MDM server instructs the APNs so that the device sends the request to the MDM server with that parameter included?
If this is possible, we think we can determine if the request is a polling request.
Even in the event of a disaster, push notifications are used to notify smartphone owners.
However, we have received requests from customers for an app that assumes that the LTE network is disconnected due to base station inconveniences during disasters, and communication from the Apple cloud cannot be considered. In that case, you would like to send push notifications to the iOS app on-premises within the customer's server, but there is a way to do that.
I want to understand if my Remote notification will be throttled based on the payload that I am sending from my backend.
The confusion is due to the introduction of apns-alert-type key with possible values of alert and background.
I want to understand if I set the value of apns-alert-type to alert but include the content-available key in the aps dictionary, will such notifications be throttled if sent at a more than recommended frequency of two or three per hour?
I have documented by understand here in this sheet: https://docs.google.com/spreadsheets/d/13RU0tS9w4OsPpFjqPeoM0DNm045_5CF9DDdhIM9jarQ/edit?usp=sharing
Also adding the same here for easy reference:
Case No.
apns-push-type
apns-priority
aps.content-available
aps.alert/badge/sound
My understanding
Observation
Notification displayed?
App woken up?
1
background
5
0
absent
Misconfiguration: content-available should not be 0.
❌
❌
2
background
5
0
present
Misconfiguration: content-available should not be 0. alert/badge/sound is not alllowed.
❌
❌
3
background
5
1
absent
Correct Configuration: This is a background notification.
❌
✅
4
background
5
1
present
Misconfiguration: alert/sound/badge is not allowed.
❌
✅
5
background
10
0
absent
Misconfiguration:priority 10 is not allowed. content-available should not be 0.
❌
❌
6
background
10
0
present
Misconfiguration:priority 10 is not allowed. content-available should not be 0. alert/sound/badge is not allowed.
❌
❌
7
background
10
1
absent
Misconfiguration: priority 10 is not allowed.
❌
✅
8
background
10
1
present
Misconfiguration:priority 10 is not allowed. alert/sound/badge is not allowed.
❌
✅
9
alert
5
0
absent
Misconfiguration: alert/sound/badge should not be absent.
❌
❌
10
alert
5
0
present
Correct configuration: Alert is shown w/o waking up the app.
✅
❌
11
alert
5
1
absent
Misconfiguration: alert/sound/badge should not be absent.
❌
❌
12
alert
5
1
present
Correct configuration: Alert is shown with waking up the app.
✅
✅
13
alert
10
0
absent
Misconfiguration: alert/sound/badge should not be absent.
❌
❌
14
alert
10
0
present
Correct configuration: Alert is shown w/o waking up the app.
✅
❌
15
alert
10
1
absent
Misconfiguration: alert/sound/badge should not be absent.
❌
❌
16
alert
10
1
present
Correct configuration: Alert is shown with waking up the app.
✅
✅
I have an app that uses CloudKit push notification (CKDatabaseSubscription) and it's been working all along on Ventura 13.5/Xcode 15.0.
But since I upgraded my Mac to Sonoma 14.3/Xcode 15.2, my app no longer receives push notification (didReceiveRemoteNotification is not called) on the Mac. Is this a known issue of either Sonoma or Xcode 15.2?
FYI, the same code works perfectly on iOS 17.2.
Hi all,
In the app I developed for iOS I am using Firebase SDK (cloud messaging FCM) to provide the topic feature to deliver notification to thousands subscribed iOS users. I know FCM does not directly deliver the notifications to the final users and this is just an intermediary that formats the notification in way the APNs can understand client by client (using the APN device tokens) and this service (APNs) is in charge of delivering the notifications to the final users.
The notifications are sent from a linux server through a cURL request to FCM. One example of silent notification that is like a heartbeat is below:
!/bin/sh
notifID=`date +"%Y%j"`
value=`date -u "+%s.%N"`
curl -H "Content-type: application/json" \
-H "Authorization:key=XXXXXXSECRETXXXXXX" \
-X POST -d '{ "to": "/topics/ioschannel","content_available":true,"data":{"notificationType":"silentNotification","silentNotificationId":"'$notifID'","senttime":'$value'},"priority":"high","headers":{"apns-priority":"10"},"time_to_live":60}' \
https://fcm.googleapis.com/fcm/send
In the below image you can see some statistics provided by the metrics in the Apple Push Notification Console.
We currently have almost 5.5k users who have mainly installed the app on their iPhones. As you can notice the APNs received a bit more than 5k notifications but what it is remarkable is the fact that only about 70% of the users receive the notification on their devices. Few notifications are on the APNs storage and delivered later on. Some devices can be offline and others are can be on power save mode but I don't understand why so many users are not receiving the notification (this particular notification is sent at 5 pm local time).
Aside from the example silent notification I send other notifications to be processed in the background in the app in order to evaluate and decide to present or not a notification on the notification bar with a sound. The situation is the same, almost the same percentage don't receive the notification and almost 70% receive them on time.
I have another app in Android and I don't have this problem. More than 90% of the users receive the notifications. What it is really interesting about Android is that the user can provide the permission to remove the app from the battery optimization. This is really important permission because the Android OS provides resources (network and giving priority to received push notifications) and even in power save mode the notifications are delivered.
If I go straight from our linux server to APNs this situation won't change because APNs cannot deliver the notifications.
Why is this happening? Is there any way to provide a permission to the app to have the highest priority?
Any advice, feedback or hint will be really appreciated.