我目前正在开发一个 iOS 应用程序,我需要在发送本地通知时执行某些操作(例如日志记录)。但是,即使用户不与通知交互,我也希望执行这些操作。
我做了一些研究,发现 UNNotificationServiceExtension 可以用来修改通知,但它似乎只适用于远程通知,不适用于本地通知。
以下是我尝试和考虑过的总结:
使用 UNUserNotificationCenterDelegate:
我实施了
userNotificationCenter(_:willPresent:withCompletionHandler:)
userNotificationCenter(_:didReceive:withCompletionHandler:)
方法。 当应用程序位于前台或用户与通知交互时,这些方法非常适合处理通知。但是,如果应用程序位于后台并且用户不与其交互,则它们无助于在传递本地通知的确切时间执行操作。
Possible Workarounds:
Background Fetch: Enabling background fetch and performing periodic logging. However, this does not provide the exact moment of notification delivery.
Polling in AppDelegate: Checking for delivered notifications in the applicationDidBecomeActive method and logging actions accordingly. This approach only logs the action when the app is brought to the foreground, not at the exact delivery time.
但是,即使用户不与通知交互,我也希望执行这些操作
那是不可能的。您已寻求帮助的系统与用户之间会发出通知。您的应用程序不会仅仅因为通知被触发而收到通知。正如您所说,如果您的应用程序恰好正在运行并且在发送通知时位于最前面,并且您已相应地配置了通知,则您的应用程序可以听到它;但除此之外,不是。你需要改变你的愿望或完全考虑其他一些机制。