如何在没有tosin的ios通知的情况下在后台获取推送通知?

时间:2017-10-06 10:47:29

标签: ios apple-push-notifications firebase-cloud-messaging

我用Google搜索,但没有得到答案。

请告诉我如何在应用的后台状态下获取推送通知,并在不知道用户的情况下在后台更新推送通知。

我玩过功能,didReceiveRemoteNotification,但都是徒劳。

我正在使用FCM。

请帮帮我......

1 个答案:

答案 0 :(得分:2)

要在后台状态下接收推送通知并能够更新您的应用数据,您需要在项目中设置一些内容:

  1. 启用"远程通知"项目设置中的功能>能力>背景模式。
  2. 在您发送给APNS的有效负载中,添加标记" content-avalaible" = 1.这将告诉您的应用,此推送通知暗示了获取新数据所需的应用。
  3. 现在使用" content-avalaible"处理这些通知,系统将调用您的AppDelegate方法application:didReceiveRemoteNotification:fetchCompletionHandler: application:didReceiveRemoteNotification:
  4. 您必须将数据刷新逻辑放在此方法中。根据文档,您需要在30秒内完成数据刷新。您还需要使用正确的completionHandler来调用UIBackgroundFetchResult。有3个值,请阅读与之相关的内容。
  5. 了解了所有这些,我还应该强调,向您的应用提供推送通知完全取决于系统的愿望:

    • 您多久发送一次推送。理想情况下,这不应超过每分钟4次。
    • 调用应用时,涉及的CPU处理和电池消耗是多少。
    • 您的Push调用还会通过实际数据刷新响应多少次。这就是completionHandler的用途。
    • 请注意,iOS 11中存在延迟应用调用的错误。
    • 重要:如果用户已杀死该应用,则不会调用该应用来刷新推送通知上的数据。一旦应用程序被杀死,Push只能调用应用程序,仅在用户再次打开应用程序并将其保留在后台或者重新启动设备时才会调用该应用程序。

    希望所有这些都能帮助您进行设置和测试。