是否可以检测用户是否点击了推送通知,或通过点击应用程序图标启动了应用程序?让我们考虑一种情况。应用程序处于非活动状态。用户收到了推送通知,但他打开了应用程序,不是通过通知,而是点击了应用程序图标。如何检测?
0yycz8jy1#
查看苹果关于UISceneDelgate/AppDelegate的文档https://developer.apple.com/documentation/uikit/uiscenedelegatehttps://developer.apple.com/documentation/uikit/uiapplicationdelegate
应用程序ID变为活动、应用程序将进入前景等方法。
在这些方法中添加一个断点,然后您可以根据需要继续执行操作。
thtygnil2#
要检测用户是否点击了推送通知,可以在“AppDelegate”类中实现“UNUserNotificationCenterDelegate”协议,并使用“userNotificationCenter(_:didReceive:withCompletionHandler:)”方法。以下是您的“AppDelegate”类的外观:
import UserNotifications @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Set UNUserNotificationCenter Delegate UNUserNotificationCenter.current().delegate = self return true } // Handle notification when app is in foreground func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) { // Display notification when app is in foreground completionHandler([.banner, .sound, .badge]) } // Handle notification when app is in background or terminated func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) { // Check if user tapped on the notification if response.actionIdentifier == UNNotificationDefaultActionIdentifier { print("User tapped on the notification") // Handle the notification } completionHandler() } }
仅当用户响应推送通知时才调用上述函数,如果未调用,则您可以考虑通过点击主屏幕上的应用程序图标启动应用程序。
2条答案
按热度按时间0yycz8jy1#
查看苹果关于UISceneDelgate/AppDelegate的文档
https://developer.apple.com/documentation/uikit/uiscenedelegatehttps://developer.apple.com/documentation/uikit/uiapplicationdelegate
应用程序ID变为活动、应用程序将进入前景等方法。
在这些方法中添加一个断点,然后您可以根据需要继续执行操作。
thtygnil2#
要检测用户是否点击了推送通知,可以在“AppDelegate”类中实现“UNUserNotificationCenterDelegate”协议,并使用“userNotificationCenter(_:didReceive:withCompletionHandler:)”方法。
以下是您的“AppDelegate”类的外观:
仅当用户响应推送通知时才调用上述函数,如果未调用,则您可以考虑通过点击主屏幕上的应用程序图标启动应用程序。