直接运行代码以响应收到APNS消息

时间:2019-11-08 09:02:34

标签: ios apple-push-notifications voip ios-background-mode

我们有一个iOS应用,可通过FCM向其发送通知。

理想情况下,我们希望能够使该应用直接从通知中运行一些代码。

如果我们发送数据类型通知并且该应用位于前台,这似乎可行。

但是-如果我们怎么做 a)该应用程序处于后台 b)该应用程序已终止。有什么方法可以自动运行该应用程序,或者在终止时使它自己运行。

谢谢

1 个答案:

答案 0 :(得分:1)

应用位于前台

在AppDelegate中实施 didReceiveRemoteNotification 委托方法,以处理通知并在应用程序处于前台时运行所需的代码。

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
    //write your code here when app is in foreground
}

应用处于后台

当应用程序处于后台并且用户收到推送通知时,如果用户点击通知,则会调用 didReceiveRemoteNotification ,但是如果用户点击应用程序图标,则不会调用此方法。如果您必须与服务器进行通信,或者可以使用以前的值检查徽章编号(可以将其存储在NSUserDefaults中),然后运行所需的代码。

应用已终止

应用终止后,将不会调用 didReceiveRemoteNotification 方法, 但是您可以在appdelegate的 didFinishWithLaunchOptions 方法中检查 launchOptions 来了解应用程序是否已从通知中启动,并相应地执行任务。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {

    if launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] != nil {
     // Do your task here
    }

}
相关问题