为啥我在 iOS 13 中的应用程序在被用户终止时通过静默推送在后台唤醒

Posted

技术标签:

【中文标题】为啥我在 iOS 13 中的应用程序在被用户终止时通过静默推送在后台唤醒【英文标题】:Why my app in iOS 13 awake in background by silent push when terminated by user为什么我在 iOS 13 中的应用程序在被用户终止时通过静默推送在后台唤醒 【发布时间】:2019-09-27 05:25:43 【问题描述】:

我不知道这是否是 Apple 的错误或功能。在the documentation:

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

与其他 *** 问题一样,thisthis 显示相同。

在我的情况下,系统在后台重新启动应用程序并运行代码以存储在数据库中。怎么可能?它在后台调用方法 didFinishLaunchingWithOptions: 然后didReceiveRemoteNotification:(未在应用切换器中显示)。但在早期版本中,它不会唤醒在 ios 12.2 中测试的后台应用程序

我正在发送通知的有效负载

  "aps": 
    "alert": 
      "body": "",
      "title": ""
    ,
    "mutable-content": 0,
    "category": "",
    "badge": "",
    "sound": "",
    "content-available": 1
  ,
  "data": 
   //other fields
  
 


【问题讨论】:

即使在 iOS 13.1 中被杀,您是否仍然面临应用唤醒? @suryakantsharma 是的。它也在 iOS 13.1 中唤醒。 @SuryaKantSharma 我在 iOS 13.6 中也遇到了同样的问题,你有办法解决吗? 不,也许你们可以投票,以便有人可以看看 苹果论坛讨论discussions.apple.com/thread/250682565 【参考方案1】:

我使用的是 13.3,无法复制。当应用程序被用户强制退出但根本无法工作时,努力唤醒应用程序。 我什至在这个 FCM 有效负载中使用了 2 个 content_available 和 content-available:


    "registration_ids": [
        "dX0-3Mmu9UIirh_ov4wJpl:APA9111112222233333jVRvrsvtoarX4zjtq1UjjaNtxPRL9UmXdV1l5DYMxJ86DTVxG9TDkqIEldEoRthisEfZQ5lOe8wY5ef2xoBtYv5rAM4CJizDblNh5qoZV2VvQxtoRRTIv1GiB"
    ],
    "priority": "high",
    "content_available": true,
    "content-available": 1,
    "data": 
        // other data
    

【讨论】:

以上是关于为啥我在 iOS 13 中的应用程序在被用户终止时通过静默推送在后台唤醒的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13 > 应用程序被终止且不在后台时,通用应用程序链接不起作用

ios检测终止状态下的蓝牙状态变化

为啥在 iOS 9.3 中杀死/终止应用程序后后台位置不起作用

应用程序因 iOS 13.2 中的 cpu 使用而终止

为啥我在 iOS13.2 中加载 WKWebView 时收到控制台警告:[Process] kill() 返回意外错误 1?

当我在 iOS 应用程序的后台任务(使用 GCD)中间按下 1 次主页按钮时,由于信号 9 而终止