iOS版。处理推送通知而不是应用程序未运行

时间:2016-10-11 23:05:36

标签: ios push-notification notifications apple-push-notifications remote-notifications

比应用程序收到推送而应用程序未运行我需要将网络方法调用到我的API。我需要在没有用户任何交互的情况下默默地进行此操作(例如点击通知或其他内容 - 没有它)

我将推送有效负载中的内容可用密钥设置为1。

我该怎么办?

我实施了

 func application( application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) {

作为测试,我添加了

  UIApplication.sharedApplication().applicationIconBadgeNumber = 20

但看起来它不起作用,因为我关闭了我的应用程序并发送测试通知,bagde号码不是20

3 个答案:

答案 0 :(得分:0)

这是因为您的应用未运行。当应用处于后台时didReceiveRemoteNotification可以通话。如果您的应用程序退出/终止,则无法以静默方式执行操作(除了更新徽章,为此,您需要将徽章编号直接发送到通知的有效负载中)。

答案 1 :(得分:0)

如果您想在不启动应用程序的情况下更新应用程序的徽章,则需要通过服务器的推送通知发送它。请参阅Apple文档:https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/TheNotificationPayload.html

您实施的方法仅在应用运行时调用。但如果你包括"徽章"推送有效负载iOS中的参数将自动为您设置。

答案 2 :(得分:0)

如果您需要触发从服务器下载内容的API调用,则需要将推送有效负载中的content-available键设置为1。

根据Apple的文档中的Using Push Notifications to Initiate a Download

  

如果您的服务器在新内容可用时向用户的设备发送推送通知   对于您的应用,您可以要求系统在后台运行您的应用   这样它就可以立即开始下载新内容。该   这种背景模式的目的是最大限度地减少时间   在用户看到推送通知和您的应用程序之间经过   能够显示相关内容。应用程序通常是   在用户看到通知的大致相同时间唤醒   但是这仍然比你给别的时间多。

     

要支持此后台模式,请启用远程通知   “功能”选项卡的“背景模式”部分中的选项   你的Xcode项目。 (您也可以通过添加支持来启用此支持   UIBackgroundModes键具有应用程序中的远程通知值   Info.plist文件。)

     

对于触发下载操作的推送通知,   通知的有效负载必须包含内容可用密钥及其   值设置为1.当该键存在时,系统将应用程序唤醒   背景(或将其启动到后台)并调用应用程序   委托的   应用:didReceiveRemoteNotification:fetchCompletionHandler:   方法。您应该下载该方法的实现   相关内容并将其集成到您的应用中。