ios - iOS应用启动时如何区分通知是本地通知还是远程通知

标签 ios swift localnotification

之前我使用下面的代码来区分当应用程序启动时我的通知是本地的还是远程的

    func application(_ application: UIApplication, 
    didFinishLaunchingWithOptions launchOptions: 
    [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    if (launchOptions?[UIApplication.LaunchOptionsKey.localNotification] != nil)
    {


    }
    if (launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification] != nil)
    {


    }
    }

条件是我的应用程序被终止,我正在从通知中打开它。

问题是这个方法

if (launchOptions?[UIApplication.LaunchOptionsKey.localNotification] != nil)
{


}

已弃用,从通知中心打开应用时不会调用以下方法

 func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {}

最佳答案

你也可以在 userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler: 中检查通知类型,

类层次结构是:

UNNotificationResponse > UNNotification > UNNotificationRequest > UNNotificationTrigger

UNNotificationRequest中有4种类型的触发器:

  • UNLocationNotificationTrigger
  • UNPushNotificationTrigger
  • UNTimeIntervalNotificationTrigger
  • UNCalendarNotificationTrigger

随便用,

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

    if response.notification.request.trigger is UNPushNotificationTrigger {
        print("remote notification");
    }

}

关于ios - iOS应用启动时如何区分通知是本地通知还是远程通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54567970/

相关文章:

android - Cordova Local Notification Android Plugin 2.2升级

ios - Apple 会拒绝 Plist 中 Key UIApplicationExitsOnSuspend 设置为 YES 的应用吗

ios - 如何在设备之间同步推送通知

ios - 将唯一对象添加到数组

ios - 是否可以使用相同的 View Controller 为每个 View Controller 显示不同的内容?

ios - 如何在收到本地通知数据后创建传递给使用 objective-c 的主视图 Controller ?

iphone - 获取距我当前位置最近的位置

swift - 以编程方式为约束设置动画 Swift 3

ios - 点击按钮时如何获取添加的行文本字段文本?

iphone - 当应用程序从后台而不是从设备中删除时,如何取消所有本地通知