如何在didfinishlaunchingwithoptions Swift中调用didReceiveRemoteNotification?

时间:2016-08-18 03:50:18

标签: ios swift appdelegate remote-notifications

如何在didfinishlaunchingwithoptions中调用didReceiveRemoteNotification方法?我使用的是快速语言。 当用户直接打开应用程序时,通知被取消,并且未调用didReceiveRemoteNotification中执行的操作。如何处理?

我已经到达了这里。但无法完成

std::bind

1 个答案:

答案 0 :(得分:3)

根据文档,

  

当应用未在中运行时,会发送通知   前景。在这种情况下,系统会显示通知,   显示警报,标记图标,可能播放声音,以及   也许会显示一个或多个动作按钮供用户点击。

     

用户点按iOS 8通知中的自定义操作按钮。在这   例如,iOS调用   应用:handleActionWithIdentifier:forRemoteNotification:completionHandler:   要么   应用:handleActionWithIdentifier:forLocalNotification:completionHandler :.   在这两种方法中,您都可以获得操作的标识符   确定用户点击的按钮。你也可以得到遥控器   或本地通知对象,以便您可以检索任何信息   你需要处理这个动作。

     

用户点按提醒中的默认按钮或点击(或点击)   应用程序图标如果轻触默认操作按钮(在运行的设备上)   iOS),系统启动应用程序,应用程序调用其委托   application:didFinishLaunchingWithOptions:方法,传入   通知有效载荷(用于远程通知)或   本地通知对象(用于本地通知)。虽然   application:didFinishLaunchingWithOptions:不是最好的地方   处理通知,此时获取有效负载给你   在处理程序方法之前启动更新过程的机会   被称为。

     

对于远程通知,系统也会调用   应用:didReceiveRemoteNotification:fetchCompletionHandler:   app delegate的方法。

     

如果在运行OS X的计算机上单击了应用程序图标,则应用程序会调用   委托的applicationDidFinishLaunching:方法中的   委托可以获取远程通知负载。如果是app图标   在点击运行iOS的设备上,该应用程序调用相同的方法,但是   不提供有关通知的信息。

     

当应用程序在中运行时,会发送通知   前景。该应用程序调用   application:didReceiveRemoteNotification:fetchCompletionHandler:或   application:didReceiveLocalNotification:app delegate的方法。   (如果application:didReceiveRemoteNotification:fetchCompletionHandler:   没有实现,系统调用   application:didReceiveRemoteNotification:。)在OS X中,系统调用   应用:didReceiveRemoteNotification:

您可以在此处找到相同的链接: https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/IPhoneOSClientImp.html#//apple_ref/doc/uid/TP40008194-CH103-SW1

摘要: 你必须在3种情况下处理APNS:

  1. App位于Foreground / App处于后台(但未暂停):应用程序:didReceiveRemoteNotification:调用app delegate的方法并将有效负载移交给您。
  2. 2. 应用程序被暂停/终止,用户点击通知或警告:应用程序:didFinishLaunchingWithOptions:app delegate被调用,您可以从launchOption访问有效负载。

    3. 应用程序被暂停/终止,用户点击应用程序图标:您将不会收到有关APNS的任何信息。您可以做的最简单的解决方案是,一旦应用程序变为活动状态,请对Web服务器进行Web服务调用,以获取所有更新的信息并更新您的UI和应用程序徽章计数:)

    希望有所帮助:)