I would like the notification to stay.
I have inter alia following code, it works well but the notification disappears after 5 seconds (both when app is running or terminated):
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
let nc = UNUserNotificationCenter.current()
nc.delegate = self
return true
}
public func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let request = notification.request
let identifier = request.identifier
let userInfo = notification.request.content.userInfo
completionHandler([.banner, .list, .badge, .sound])
}
Notification Center
RSS for tagCreate and manage app extensions that implement Today widgets using Notification Center.
Posts under Notification Center tag
57 Posts
Sort by:
Post
Replies
Boosts
Views
Activity
Hi,
I just downloaded Xcode 15.3 beta 3 and went to create a new project, however I cannot find the widget extension. Do I have to enable this extension or download it?
When enabling direct C++ interoperability in Xcode, this simple code below
NotificationCenter.default.addObserver(self,
selector: #selector(subjectAreaDidChange(_:)),
name: .AVCaptureDeviceSubjectAreaDidChange,
object: nil)
gives me the following error
Type 'NSNotification.Name?' has no member 'AVCaptureDeviceSubjectAreaDidChange'
But if I switch C++ and Objective-C interoperability to just C / Objective-C then the code compiles without errors.
The issue seems to affect NSNotification.Name constants only from AVFoundation framework (although there maybe more).
Why do I get this error and how do I fix it?
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?
An app is hanging randomly on app launch, after looking into it, it appears it's hanging on a call to UNUserNotificationCenter.current() calls. I say this because there's logging and the sometimes the last line logged is prior to a call to UNUserNotificationCenter()
I have a hang log (.ips file) rom the iPhone and at the bottom it says this.
I presume blockingThreadInfo is talking about the thread being blocked, and it identifies the topBlockingProcess as user notifications.
"blockingThreadInfo" : {
"topBlockingProcess" : "usernotificationsd",
The following is the code, why would this code cause a hang?
The problem occurs when there's lots of notifications that have been posted i.e. something like 100.
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(appBecameActive)
name: UIApplicationDidBecomeActiveNotification
object:nil];
@objc func appBecameActive() {
method1()
method2()
}
@objc func method1() {
UNUserNotificationCenter.current().getDeliveredNotifications { notifications in
if SettingsManager.isProductionFinalBuild() == false {
// Log notification center contents
for notification in notifications {
let title = notification.request.content.title
let targetId = notification.request.content.targetContentIdentifier
let threadId = notification.request.content.threadIdentifier
let categoryIdentifer = notification.request.content.categoryIdentifier
let identifier = notification.request.identifier
let info = notification.request.content.userInfo
Logger.trace("Previously delivered notification: title: \(title) identifier: \(identifier) threadId: \(threadId) category: \(categoryIdentifer) target id: \(String(describing: targetId)) userInfo: \(info)")
}
let matchchingNotifications = notifications.filter({ $0.request.identifier == kMdnAccountNotFoundNotificationIdentifier })
UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: [kMdnAccountNotFoundNotificationIdentifier])
}
}
func method2() {
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [Constants.kWhatsNewNotificationIdentifier])
UNUserNotificationCenter.current().removeDeliveredNotifications(withIdentifiers: [Constants.kWhatsNewNotificationIdentifier])
}
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 ?
Hello Friends,
Could you please help me, whats wrong.
We have requirement that, when I receive remote notifications on device, I need to save it in to db (without tapping or opening notification banner), regardless my app is in Foreground or in Background.
I receive remote notifications on device & simulator both.
And
UNUserNotificationCenter delegates are being called if app is in foreground, but didReceiveRemoteNotification is not calling when app is background, not killed.
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
// Save to DB
completionHandler(.newData)
}
I am having Xcode 15.2 & I tried on iOS versions 16.x & 17.x both on Simulator and on real devices.
// Added this code in App delegate
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if granted {
// User granted permission
DispatchQueue.main.async {
UIApplication.shared.registerForRemoteNotifications()
}
} else {
// User denied permission
}
}
Hi,
Please take a response to me about my Notification Service Entitlement Request.
I have requested 5 times but i didn't get any repsonses.
The application cannot be released because authorization is not granted.
Please check my case and leave a response as soon as.
Thanks,
Hello all,
I'm trying to build a watch app for a research study built around heart rate. Currently I have built a IOS app with a companion watchOS app for a firebaseDatabase connection. There are two remaining goals of this project that include the following:
While the watch app is in the background or when it's closed, is it possible for the apple watch to send a notification to the user if per say the user's heart rate goes over a custom threshold of 70bpm?
If so, how should this be implemented, and can the app be consistently monitoring the heart rate to get accurate realtime notifications, or is does apple limit background updates to periodically?
For this study, we want to analyze if user's actually open the watchapp because of the notifications. Is it possible to record data / track user interactions from the notifications?
If so, what kind of data can be tracked and how can it be stored?
My application requires me to clear all the notifications from the notification centre after a certain time duration.
I have tried using a combination of removeAllDeliveredNotifications & removeAllPendingNotificationRequests and they work fine up until OS 17.
So then I tried using removeDeliveredNotificationsWithIdentifiers & removePendingNotificationRequestsWithIdentifiers to check if it works consistently for all OS, but they hasn't worked either.
Is there any other way to clear the notifications consistently for all OS?
I have read through many forums but haven't found a solution for myself. When sending a notification, my NotificationService is not being called. I added it exactly as described in the official Apple tutorial and tried adding it again following other tutorials. Nothing helped. I haven't made any changes to it; it is in the same form as it is automatically created. Here it is:
import UserNotifications
class NotificationService: UNNotificationServiceExtension {
var contentHandler: ((UNNotificationContent) -> Void)?
var bestAttemptContent: UNMutableNotificationContent?
override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
self.contentHandler = contentHandler
bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)
if let bestAttemptContent = bestAttemptContent {
// Modify the notification content here...
bestAttemptContent.title = "\(bestAttemptContent.title) [modified]"
contentHandler(bestAttemptContent)
}
}
override func serviceExtensionTimeWillExpire() {
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
if let contentHandler = contentHandler, let bestAttemptContent = bestAttemptContent {
contentHandler(bestAttemptContent)
}
}
}
It does not print anything or hit any breakpoints. The notification payload looks like this:
{
"Simulator Target Bundle": "my.bundle",
"aps": {
"alert": {
"title": "Its title",
"body": "Very nice text"
},
"sound": "default",
"category": "CustomSamplePush",
"mutable-content": 1
}
}
Things I've tried:
Ensured the minimum version matches that of the application.
Configured info.plist, including UNNotificationExtensionCategory.
Ensured "Copy Only When Installed" is unchecked.
The Content extension works. However, prints and breakpoints are also not working.
Can I have a play/pause button in a Live Activities notification for the user to play an audio file if he/she chooses to? Kind of like a Spotify-style/Apple-Music-style play/pause/skip/rewind functionality but in the long-lasting Live Activities notification. Thank you.
Is there any way we can add a global setting for sound notifications on MacOS, or an option to have the default for newly installed apps to have sound notifications off by default?
Currently, sound notifications for apps need to be turned off one by one, which can be time intensive if lots of apps are installed.
Hello!
We have issue with updating multiply widgets of one kind.
For my case we have widget with one setting (period), and it will be common case for user to use two widgets of one kind to see data for two periods. Also user need to sign in our app to see info on widget.
After installing app we add 2 or 3 widgets of one kind on home screen. Now widgets saying what we need to sign in. We tap on widget, signing in, app sends WidgetCenter.shared.reloadAllTimelines(). When we going to home screen.
One widget updated and showing data and another non-updated and saying what we need to sign in
I've noticed there are certain apps which seem to track that I'm using my iOS device, and then send me push notifications based on my usage.
For example, I may pick up my phone in the middle of the night, unlock it, check my email, and minutes later, this app will send me a push notification attempting to sell me something.
Is an actually app permitted to track my activity/usage on my iPhone, outside of my activity and usage within that app? If so, where can I learn more about this? Or is this app in violation of some rule in the ToU?
There's an issue in the iOS 17 beta where passing nil to activityBackgroundTint(_:) does not use the system's default background material as expected. Instead, it's showing a solid black color instead of the correct tint that matches the rest of the system in iOS 16.
We have an app where the notification service extension works well most of the time. However, sometimes we have noticed that the extension completely stops working even when the notification is sent successfully via the APNS server in production. We do not see even the log from the didReceive() function in that case. The only way we can get the extension working again is after restarting the iPhone.
Trying to understand when this might happen?
Is it something that is throttled by iOS?
Would it happen when the device memory is low or the app is using too much memory?
We have seen the extension crash sometimes due to hitting memory limits, however, the extension process is spawned again when a new notification comes in.
Any kind of help or guidance would be greatly appreciated.
Thanks
We have setup acknowledgment API calls in the notification service extension processing to be notified when the notifications reach the device. So based on that we know how often the devices stop responding with the ACK to sent notifications. It happens seldom with some users and we have to ask them to restart their device to get the extension functional again.