i have an issue when handling silent push in my app when the user close the app, here is my native code which works like charm when the app in the foreground, background or terminated status from a short time from closing the app, and after long time from closing it (+30min) it will not work anymore, it make me confuse why it does not work and other messaging app like viber, whatsapp and messanger you can still receive messages and calls even you swipe the app and close it !! is there any thing must i add !!
override func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
Messaging.messaging().appDidReceiveMessage(userInfo)
if Auth.auth().canHandleNotification(userInfo) {
completionHandler(.noData)
return
}
// sample notification for testing
let content = UNMutableNotificationContent()
content.title = "Hi there"
content.body = "Just test"
content.sound = UNNotificationSound.default
let request = UNNotificationRequest(identifier: "helloNotification", content: content, trigger: nil)
UNUserNotificationCenter.current().add(request) { (error) in
if let error = error {
print("Error adding notification request: \(error.localizedDescription)")
}
}
// resent to dart side
let controller: FlutterViewController = window?.rootViewController as! FlutterViewController
let notificationChannel = FlutterMethodChannel(name: "notificationHandler", binaryMessenger: controller.binaryMessenger)
var dataToSend: [String: Any] = [:]
if let text = userInfo["text"] as? String {
dataToSend["text"] = text
}
// Convert the dictionary to NSDictionary
let nsDataToSend = NSDictionary(dictionary: dataToSend)
// Pass the NSDictionary to Dart
notificationChannel.invokeMethod("handleRemoteMessage", arguments: nsDataToSend)
}
i checked :
background capabilities : remote notifs, background fetching, voip, background processing
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
I have successfully created an Apple Pass wallet with a 'webServiceURL' using PHP. The pass is added to the Apple Wallet successfully. However, when I sent a push notification to update a specific pass using its serial number, it worked as expected initially.
However, in the last few days, Apple has been triggering the 'webServiceURL' callback for all passes, when we trigger a push for one pass/deviceID. I'm unsure how to prevent this callback from Apple. Please provide assistance on resolving this issue.
in iOS 17.2.1, Got received push repeat message twice time
but sever send only once
LiveActivity is effective in ios16, but error reported only in ios14
Some error message reported from Xcode:
Process: LiveExtension [20099]
Path: my.app/PlugIns/LiveExtension.appex/LiveExtension
libswiftCore.dylib
swift_getAssociatedTypeWitness
SwiftUI
BodyAccessor.makeBody(container:inputs:fields:)
SwiftUl
closure #1 in WidgetGraph.init(rootBundle:)
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.
When there is an ongoing call, if the user gets another one, we don't want to support multi-call and directly send the new call to the voicemail. For this operation what should be CXCallEndedReason?
My understanding is that remoteEnded is used when the call connected and then ended. unanswered might be the choice for me but would it cause any issue if i directly reject a call with this status (the difference between the incoming call and reject time would be too short)? There is also declinedElsewhere , which might be suitable
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,
More than a iOS dev i'm first of all a support tech.
My company develops and makes available to our customers three iOS apps like one who received 3,4k reviews on the AppStore.
Since many users of our apps upgrated to iOS 17 they started complaining their iPhones are not playing a sound anymore when a push notification is received.
Thought at first glance that it was a simple issue like the new "rebound" ringing playing less lounder than the usual "tri-tones". But i ran my tests and it's a fact: our applications doesn't ring anymore when push notifications are received (while other apps like Protonmail rings well on the same set-up).
Does any of you folks faced or are facing the same issue?
Is this a setting to do on each phone? Or can it be solved by improved development (I wish it could)?
Thank you very much for reading and feel free to ask any further infos.
Kind regards,
Pierre
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.
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.
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?
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?
I have implemented Web push notifications for a website built on NextJs 13 using Firebase and they are working perfectly on desktop Chrome, Safari, and Android Chrome. But on IOS after adding the website to the home screen, the user initially starts receiving notifications after 3-4 notifications even if the user does nothing and just leaves the PWA open, the user stops receiving notifications foreground and background. On further debugging, I found out that the FCM device token gets changed.
I have no idea why it is changing automatically without doing anything It happens only for IOS.
IOS version 17.3 and 16.7, Firebase version 10.7.1
Is this a bug? or if someone can guide me on this?
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.
When is there going to be access to the ScreenTime API / ActivityKit API so that we can programmatically access Phone Pickups and Screen Time for applications?
Currently, the information is limited to getting callbacks when a threshold is hit or approached, but we don't know really anything about what the threshold is, and we cannot do that in the background.
It seems incredibly limited on scope.
Any thoughts or estimates on when this might be possible? Thank you so much!
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 ?
On Safari 17.3 and onwards getting this error on previous version push popup is working as expected
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
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?
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