【问题标题】:Push Notification Method called when app is killed应用程序被杀死时调用的推送通知方法
【发布时间】:2020-08-11 09:26:18
【问题描述】:

我从后台最近的应用程序中删除了该应用程序,sent notification then my device gets fcm notification succesfully,但我想知道收到通知时调用哪个方法。因为在我的应用程序中收到通知时,它必须自动打印收据。这是怎么做到的?这种情况下不会调用这个方法。

-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler

请建议当应用从后台删除时哪个方法接收通知负载(最近的应用)

【问题讨论】:

  • 如果您从应用程序切换器终止应用程序,则在传递推送通知时不会调用任何方法。 iOS 只是显示横幅。
  • @Paulw11 那么当推送通知到达时如何自动获取打印的收据
  • 你不能。如果用户终止您的应用程序,它在重新启动之前不会运行
  • 但是您可以在应用程序从通知启动时打印收据。
  • @Lapieuvre 是的,我们在用户点击通知时这样做了,但唯一的问题是当应用程序被终止时我们不能这样做,尽管收到通知。

标签: ios objective-c swift xcode firebase-cloud-messaging


【解决方案1】:

如果应用已被强制退出,则无法接收通知的远程通知处理程序。

“但是,如果用户强制退出应用程序,系统不会自动启动您的应用程序。在这种情况下,用户必须重新启动您的应用程序或重新启动设备,然后系统才会再次尝试自动启动您的应用程序。”

https://developer.apple.com/forums/thread/65817

https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623013-application

【讨论】:

    【解决方案2】:

    即使应用程序终止,您也可以使用 UINotificationExtension 在远程通知上执行代码

    要在 Extension 和 App 之间共享数据,您可以使用 Keychain Shared Content

    【讨论】:

    • 我不认为使用UINotificationExtension 可以解决应用程序在被用户杀死后是否会启动/唤醒的问题。静默后台通知是尝试让 iOS 启动您的应用程序的唯一半可靠方式。见Pushing Background Updates to Your App
    【解决方案3】:

    我在 android 中使用 Firebase 通知时遇到了同样的问题。 它的发生是因为通知的有效负载。 check the Zohaib Ali answer.It will solve your problem

    应使用 Firebase Rest API 发送通知,以便在后台接收通知

    【讨论】:

      【解决方案4】:

      如果我理解您关心的是当 App 被杀死并收到通知时会调用哪个方法。默认情况下,不会调用任何方法,但通过修改APNS Payload,您可以在通知时调用应用程序。

      为此,您必须从 Capabilities 启用后台刷新。此外,在您的推送负载中,您必须添加一个键

      "content-available" : 1
      

      这将调用您的应用程序,尽管您的应用程序已被终止。您有大约 30 秒的时间来执行任何任务。

      此时,将调用以下方法。并且调用并不意味着您的应用程序可以在调试区域打印日志。要检查您必须执行一些逻辑,例如将数据保存在 UserDefaults 中,或者可以为此更新服务器。

      application:didReceiveRemoteNotification:fetchCompletionHandler:
      

      您可以找到更多信息 https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/pushing_background_updates_to_your_app

      https://medium.com/@m.imadali10/ios-silent-push-notifications-84009d57794c

      【讨论】:

      • 您所说的一切都已实现,我们正在完美地收到通知;但是当应用程序从最近的应用程序列表中删除时;我没有自动打印收据,因为没有调用任何方法。为此可以做些什么
      • 如果用户终止应用程序,推送通知不会执行任何代码。
      猜你喜欢
      • 2018-12-20
      • 2015-12-30
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 2015-09-26
      • 2017-04-12
      • 2017-01-09
      • 1970-01-01
      相关资源
      最近更新 更多