ios - 如何在后台获取推送通知而无需在iOS的通知中轻按?

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

我已经用谷歌搜索,但是没有得到答案。

请让我知道如何在应用程序的后台状态下获取推送通知,并在后台更新通知,而无需用户知道。

我已经使用了didReceiveRemoteNotification的功能,但是一切都是徒劳的。

我也使用FCM。

请帮我...

最佳答案

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

  • 在“项目设置”>“功能”>“后台模式”中启用“远程通知”功能。
  • 在您发送到APNS的有效负载中,添加标志“content-avalaible” =1。这将告诉您的应用程序此Push通知会提示应用程序它需要获取新数据。
  • 现在要使用“内容可用”来处理这些通知,系统将调用您的AppDelegate方法application:didReceiveRemoteNotification:fetchCompletionHandler: NOT application:didReceiveRemoteNotification:
  • 您必须将数据刷新逻辑放入此方法中。根据文档要求,最好在30秒内执行数据刷新。另外,您需要使用正确的completionHandler值调用UIBackgroundFetchResult。有3个值,请阅读与内容相关的内容。

  • 知道了所有这些之后,我还应该强调指出,将推送通知传递到您的应用程序完全是系统的愿望,这取决于:
  • 您多久发送一次推送。理想情况下,这不应超过每分钟4次推送。
  • 调用应用程序时,涉及的CPU处理和电池消耗是多少。
  • 还有您的Push调用用实际的数据刷新响应了多少次。那就是completionHandler的目的。
  • 请注意,iOS 11中有一些错误会延迟应用程序的调用。
  • 重要:如果用户杀死了该应用程序,则该应用程序将不会在推送通知中被刷新。一旦应用被终止,Push只能调用该应用,只有当用户再次打开该应用并将其保留在后台或重新启动设备时,Push才能调用该应用。

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

    关于ios - 如何在后台获取推送通知而无需在iOS的通知中轻按?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46604023/

    相关文章:

    ios - 使用 Swift 时 AlamoFire POST 请求给我一个错误

    android - Android TV 上的推送通知

    android - Firebase SHA1-Certificate 已被另一个应用程序使用

    ios - 从返回 CGImageRef 的 C 函数将 UnsafeRawPointer 转换为 CGImage 会使 Swift 4 崩溃

    ios - 如何从具有多个单元格原型(prototype)的 UITableView 中捕获单元格数据?

    php - c相当于php apns代码

    安卓 Firebase 云消息 (FCM) : Will subscribeToTopic do automatic retries?

    ios - 为 Facebook SDK 将 Graph API 从 Swift 3 转换为 Swift 5

    objective-c - Game Center调用排行榜功能没有响应?

    ios - 即使应用程序被终止,如何继续进行 iOS 位置跟踪?