我已经在我的iOS应用中实现了Push Notification
。我可以看到delegate
的两种didReceiveRemoteNotification
方法,如下面的方法:这两种方法有什么区别?
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { }
和
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
completionHandler(UIBackgroundFetchResultNewData);
}
答案 0 :(得分:3)
第一个在iOS 10.0中被弃用,使用第二个。第二个信息
即使由于远程通知而启动或恢复了应用程序,也会调用此方法。将首先调用相应的委托方法。请注意,此行为与application:didReceiveRemoteNotification:形成对比,在这种情况下不会调用,如果实现此方法,则不会调用此行为。
第一个
使用UserNotifications Framework - [UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]或 - [UNUserNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]用于用户可见通知,以及 - [UIApplicationDelegate应用程序:didReceiveRemoteNotification:fetchCompletionHandler:]用于静默远程通知
答案 1 :(得分:1)
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { }**
当您的应用收到远程通知时调用。此方法在iOS 10.0中已弃用
有关详情,请点击here
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { completionHandler(UIBackgroundFetchResultNewData); }**
告诉应用程序已收到远程通知,表明有数据要提取。
有关详情,请点击here
答案 2 :(得分:0)
以下方法更新一次
此委托方法为具有“远程通知”后台模式的应用程序提供了一个机会,可以获取适当的新数据以响应传入的远程通知。您应该在完成该操作后立即调用fetchCompletionHandler,以便系统可以准确估计其功率和数据成本。
即使由于远程通知而启动或恢复了应用程序,也会调用此方法。将首先调用相应的委托方法。请注意,此行为与application:didReceiveRemoteNotification:形成对比,在这种情况下不会调用,如果实现此方法,则不会调用此行为。
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
completionHandler(UIBackgroundFetchResultNewData);
}
答案 3 :(得分:0)
您的应用需要处理所有可能的推送通知递送状态:
您的应用刚刚推出
您的应用只是从背景到前景
您的应用已在前台运行
您可以使用以下代码判断您的应用是否刚刚被带到didReceiveRemoteNotification的前台:在iOS 10.0中弃用
告诉应用程序已收到远程通知,表明有数据要提取。使用此方法处理应用程序的传入远程通知。与仅在应用程序在前台运行时调用的application:didReceiveRemoteNotification:
方法不同,当您的应用程序在前台或后台运行时,系统会调用此方法。此外,如果您启用了远程通知后台模式,系统将启动您的应用程序(或将其从暂停状态唤醒),并在远程通知到达时将其置于后台状态。但是,如果用户强行退出,系统不会自动启动您的应用。在这种情况下,用户必须重新启动您的应用程序或重新启动设备,然后系统才会再次尝试自动启动您的应用。
另外
下载操作完成时要执行的块。调用此块时,传入最能描述下载操作结果的获取结果值。您必须调用此处理程序,并应尽快执行此操作。有关可能值的列表,请参阅UIBackgroundFetchResult类型。