Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS中DidReceiveMemotentification的两种委托方法有什么区别?_Ios_Objective C_Push Notification - Fatal编程技术网

iOS中DidReceiveMemotentification的两种委托方法有什么区别?

iOS中DidReceiveMemotentification的两种委托方法有什么区别?,ios,objective-c,push-notification,Ios,Objective C,Push Notification,我已经在我的iOS应用程序中实现了推送通知。我可以看到didReceiveMemotentification的两种委托方法,如以下方法:这两种方法之间有什么区别 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { } 及 第一个在iOS 10.0中不推荐使用,请使用第二个。第二个的信息 即使由于远程通知而启动或恢复了应用程序,也将调用此方

我已经在我的iOS应用程序中实现了
推送通知
。我可以看到
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);
 }

您的应用程序需要处理所有可能的推送通知传递状态:

你的应用程序刚刚启动

你的应用程序刚刚从后台转到前台

您的应用程序已在前台运行

  • 您可以通过以下代码判断您的应用程序是否只是在DidReceiveMemoteNotification中被带到前台:在iOS 10.0中已弃用

    • (无效)申请:(UIApplication*)申请 DidReceiveMemotentification:(NSDictionary*)用户信息
  • 通知应用程序已收到远程通知,表示有数据要提取。使用此方法处理应用程序的传入远程通知。与
    application:didReceiveMemotentification:
    方法不同,该方法仅在应用程序在前台运行时调用,系统在应用程序在前台或后台运行时调用此方法。此外,如果启用了远程通知后台模式,则系统会启动应用程序(或将其从挂起状态唤醒),并在远程通知到达时将其置于后台状态。但是,如果用户强制退出应用程序,系统不会自动启动应用程序。在这种情况下,用户必须重新启动应用程序或重新启动设备,然后系统才会尝试再次自动启动应用程序

    • (无效)申请:(UIApplication*)申请 DidReceiveMemoteNotification:(NSDictionary*)用户信息 fetchCompletionHandler:(void(^)(UIBackgroundFetchResult结果))completionHandler
  • 另外

    下载操作完成时要执行的块。调用此块时,传入最能描述下载操作结果的获取结果值。您必须调用此处理程序,并应尽快这样做。有关可能值的列表,请参阅UIBackgroundFetchResult类型

    检查这个链接你有什么想法吗
    - (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);
     }