我在我的应用中显示本地和远程通知。现在有一种情况,如果通知是本地的,那么我想采取不同的行动,或者如果通知是远程的,那么我想采取一些不同的行动。
直到iOS 9我使用下面的代码来检测通知是本地还是远程。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if launchOptions?[UIApplicationLaunchOptionsKey.localNotification] != nil {
// Do what you want to happen when a remote notification is tapped.
}
return true
}
但是在iOS 10中这种方法已被弃用,所以现在如何确保通知是本地的还是远程的?
答案 0 :(得分:10)
对于使用UserNotifications
框架的iOS 10及更高版本。
检查用户是否对通知采取了措施。您可以符合UNUserNotificationCenterDelegate
并实施userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:
检查它是否是远程通知。您可以检查trigger
的类型,因为远程通知触发器是UNPushNotificationTrigger
。
这是代码......
#pragma mark - UNUserNotificationCenterDelegate
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void (^)(void))completionHandler {
if ([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
// User did tap at remote notification
}
completionHandler();
}
答案 1 :(得分:3)
在UNMutableNotificationContent
添加userInfo
,如下所示:
content.userInfo = ["isLocalNotification" : true]
现在AppDelegate
设置UNUserNotificationCenterDelegate
中的didFinishLaunchingWithOptions
,如下所示:
UNUserNotificationCenter.current().delegate = self
然后实施didReceive response
的{{1}}方法:
UNUserNotificationCenterDelegate
在输出中,您将得到如下内容:
[AnyHashable(“isLocalNotification”):1]
您可以使用func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
print(response.notification.request.content.userInfo)
}
密钥识别本地通知。
答案 2 :(得分:0)
答案 3 :(得分:0)
您可以参考以下链接。你会得到你的答案。如果没有,请告诉我:
Local and Push Notifications in IOS 9 and 10 using swift3
有关通知类别的更多信息:
要识别本地和远程通知,您可以为通知对象分配标识符。 iOS 10中不推荐使用UIMutableUserNotificationCategory
,因此请使用UNNotificationCategory
为通知分配标识符。
请参阅以下链接,为通知分配标识符:
https://developer.apple.com/documentation/uikit/uimutableusernotificationcategory/ https://developer.apple.com/documentation/usernotifications/unnotificationcategory