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

Ios 直接运行代码以响应接收APNS消息,ios,apple-push-notifications,voip,ios-background-mode,Ios,Apple Push Notifications,Voip,Ios Background Mode,我们有一个iOS应用程序,通过FCM向其发送通知 理想情况下,我们希望能够让应用程序直接从通知中运行一些代码 如果我们发送数据类型通知,并且应用程序位于前台,那么这似乎是可行的 func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { //write your code here when app is in foreground

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

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

如果我们发送数据类型通知,并且应用程序位于前台,那么这似乎是可行的

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
    //write your code here when app is in foreground
}
然而,如果 a) 应用程序在后台 b) 应用程序已被终止。是否有某种方法可以自动运行应用程序,或者在应用程序终止时使其自身运行备份


谢谢

应用程序在前台

在AppDelegate中实现DidReceiveMemotentificationdelegate方法来处理通知,并在应用程序位于前台时运行所需的代码

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
    //write your code here when app is in foreground
}
应用程序在后台

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

应用程序已终止

当应用程序被终止时,didReceiveMemotentification方法将不会被调用, 但是,您可以检查appdelegate中的didFinishWithLaunchOptions方法中的launchOptions以了解应用程序是否已通过通知启动,并相应地执行任务

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

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

}

感谢Prakash给出的清晰答案。我想探讨的是,我是否可以在后台模式下执行代码,而不必等待用户与通知交互。在我的问题中,我提到了使用“数据”消息(而不是通知)因此,就发出通知而言,用户无论如何都不会参与这些操作。例如,是否可以在代码中使用info.plist中的一种后台模式来处理APNS消息,如果可以,哪一种最适合响应FCM/APNS消息?只要“远程通知”的“启用后台模式”在info.plist中选择,不通知(即仅数据)FCM/APNS事件确实触发了DidReceiveEmotentification事件。因此,我能让代码在后台执行的唯一方法是发送静默通知。然而,静默通知的优先级比警报通知低,而且根据苹果的文档,无论如何,根本不保证一定会发送。所以这里的底线问题是,在发送警报通知后,我如何在后台执行代码?这可能吗?