在 iOS 上,我的应用如何获取手机在后台时收到的通知数据?

Posted

技术标签:

【中文标题】在 iOS 上,我的应用如何获取手机在后台时收到的通知数据?【英文标题】:On iOS, how can my app get the notification data that it received while the phone was in the background? 【发布时间】:2015-08-06 07:14:54 【问题描述】:

AppDelegate 中有没有办法获取所有通知数据的队列? (一旦用户打开应用程序)。

【问题讨论】:

【参考方案1】:

根据苹果文档:

当远程通知到达时,系统调用application:didReceiveRemoteNotification:fetchCompletionHandler:方法。通知通常表明新信息的可用性。在您的应用程序委托方法中,您可能会开始从服务器下载新数据,以便您可以更新应用程序的数据结构。您也可以使用通知来更新您的用户界面。

您必须启用remote notification background mode,然后您才会收到上述方法的回调。

【讨论】:

【参考方案2】:

在您的 app delegate 中试试这个:

         - (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
      fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

【讨论】:

【参考方案3】:

对于UILocalNotification,您可以通过在AppDelegate 中调用以下函数来获取收到的通知:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
UIApplicationState state = [application applicationState];
    if (state == UIApplicationStateInactive) 
    // Application was in the background when notification was delivered.
     

如果您想查找该应用已设置的本地通知列表,请查看此solution。

【讨论】:

【参考方案4】:

您可以检查launchOptions Dictionary,收到的通知,当应用程序恢复点击通知时,

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions // 应用程序启动后自定义的覆盖点。 NSLog(@"启动选项:%@",launchOptions); 返回是;

【讨论】:

以上是关于在 iOS 上,我的应用如何获取手机在后台时收到的通知数据?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 本地通知 - 在后台时回调

当应用程序在后台收到通知时如何获取通知有效负载数据

我无法在 iOS 的后台获取数据

在后台 iOS Xcode 中获取信标通知

从后台服务打开应用程序屏幕并锁定手机屏幕时冻结

应用程序处于后台模式时如何在 iOS5 上获取用户位置?