iOS中DidReceiveMemotentification的两种委托方法有什么区别?
我已经在我的iOS应用程序中实现了iOS中DidReceiveMemotentification的两种委托方法有什么区别?,ios,objective-c,push-notification,Ios,Objective C,Push Notification,我已经在我的iOS应用程序中实现了推送通知。我可以看到didReceiveMemotentification的两种委托方法,如以下方法:这两种方法之间有什么区别 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { } 及 第一个在iOS 10.0中不推荐使用,请使用第二个。第二个的信息 即使由于远程通知而启动或恢复了应用程序,也将调用此方
推送通知
。我可以看到didReceiveMemotentification
的两种委托
方法,如以下方法:这两种方法之间有什么区别
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { }
及
第一个在iOS 10.0中不推荐使用,请使用第二个。第二个的信息 即使由于远程通知而启动或恢复了应用程序,也将调用此方法。将首先调用相应的委托方法。请注意,此行为与application:didReceiveEmotentification:相反,在这些情况下不会调用它,如果实现此方法,也不会调用它
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
completionHandler(UIBackgroundFetchResultNewData);
}
第一个呢
使用UserNotifications框架的-[UnuseNotificationCenterDelegate将呈现通知:withCompletionHandler:]或-[UnuseNotificationCenterDelegate didReceiveNotificationResponse:withCompletionHandler:]用于用户可见的通知和-[UIApplicationDelegate应用程序:DidReceiveEmoteNotification:fetchCompletionHandler:]用于静默远程通知
当应用程序收到远程通知时调用。此方法在iOS 10.0中已被弃用
有关更多详细信息,请单击
通知应用程序已收到远程通知,表示有数据要提取
有关更多详细信息,请单击下面的方法更新一次 此委托方法为具有“远程通知”后台模式的应用程序提供了一个机会,以获取适当的新数据来响应传入的远程通知。您应该在完成该操作后立即调用fetchCompletionHandler,以便系统能够准确估计其功耗和数据成本 即使由于远程通知而启动或恢复了应用程序,也将调用此方法。将首先调用相应的委托方法。请注意,此行为与application:didReceiveEmotentification:相反,在这些情况下不会调用它,如果实现此方法,也不会调用它
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
completionHandler(UIBackgroundFetchResultNewData);
}
您的应用程序需要处理所有可能的推送通知传递状态: 你的应用程序刚刚启动 你的应用程序刚刚从后台转到前台 您的应用程序已在前台运行
- (无效)申请:(UIApplication*)申请 DidReceiveMemotentification:(NSDictionary*)用户信息李>
application:didReceiveMemotentification:
方法不同,该方法仅在应用程序在前台运行时调用,系统在应用程序在前台或后台运行时调用此方法。此外,如果启用了远程通知后台模式,则系统会启动应用程序(或将其从挂起状态唤醒),并在远程通知到达时将其置于后台状态。但是,如果用户强制退出应用程序,系统不会自动启动应用程序。在这种情况下,用户必须重新启动应用程序或重新启动设备,然后系统才会尝试再次自动启动应用程序
- (无效)申请:(UIApplication*)申请 DidReceiveMemoteNotification:(NSDictionary*)用户信息 fetchCompletionHandler:(void(^)(UIBackgroundFetchResult结果))completionHandler李>
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { completionHandler(UIBackgroundFetchResultNewData); }**
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
completionHandler(UIBackgroundFetchResultNewData);
}