当应用程序处于非运行状态时,推送通知委托触发的解决方案是啥?

Posted

技术标签:

【中文标题】当应用程序处于非运行状态时,推送通知委托触发的解决方案是啥?【英文标题】:What is the solution for push notification delegate to fire when app is in not running state?当应用程序处于非运行状态时,推送通知委托触发的解决方案是什么? 【发布时间】:2016-02-08 08:27:39 【问题描述】:

如果应用程序未在运行状态而不点击收到的通知,我们如何触发推送通知委托。 1. 收到通知 2.不点击通知 3.点击应用图标启动应用

在这种状态下如何检查是否收到推送通知?

【问题讨论】:

检查静默推送通知。 【参考方案1】:

在此处查看评论:

UIApplicationLaunchOptionsRemoteNotificationKey not getting userinfo

在payload中基本设置“content-available”:1,调用application:didReceiveRemoteNotification:fetchCompletionHandler。

【讨论】:

【参考方案2】:

有一种方法,您可以使用它来处理您的每个推送通知。将值为 1 的 key content-available 添加到您的 aps 字典中。

它看起来像,


    "aps" : 
        "alert" : 
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
        ,
        "badge" : 5
        "content-available" : 1
    

如果 ios 系统检测到 pushNotification 的“content-available”键值为 1,它会调用你的 appDelegate 的 application:didReceiveRemoteNotification:fetchCompletionHandler:。

苹果 - 讨论

使用此方法处理传入的远程 您的应用程序的通知。不像 application:didReceiveRemoteNotification: 方法,只调用 当您的应用程序在前台运行时,系统会调用它 当您的应用程序在前台或后台运行时的方法。在 此外,如果您启用了远程通知后台模式,则 系统启动您的应用程序(或将其从挂起状态唤醒)和 当远程通知到达时将其置于后台状态。 但是,如果用户使用,系统不会自动启动您的应用 已强制退出。在这种情况下,用户必须重新启动您的应用 或在系统尝试启动您的应用之前重启设备 再次自动。

您需要启用后台模式。

【讨论】:

我已经在使用可用的内容:1 但是如果应用程序不是运行状态,这个委托会触发吗?同样,如果用户不点击通知,则只会触发完成启动选项。 它将唤醒您的应用并执行答案中提到的方法,但iOS无法唤醒被forceQueit退出的应用,即使用slideUp通过按两次home键退出。

以上是关于当应用程序处于非运行状态时,推送通知委托触发的解决方案是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在应用程序处于非活动状态时获取推送通知ios swift3

推送通知的“查看”委托

当应用程序处于未运行或后台状态时,如何处理推送通知有效负载而不点击它

当应用程序处于非活动状态时,GCM 推送通知不适用于 iOS

当我收到静默推送通知时,iOS 会唤醒我的应用程序吗?(当应用程序未处于运行状态时)

应用程序处于非活动状态时无法接收静默通知 iOS