【问题标题】:didReceiveRemoteNotification not called, When app is killeddidReceiveRemoteNotification 未调用,当应用程序被杀死时
【发布时间】:2019-04-08 19:08:21
【问题描述】:

我有一个用 fcm 实现的应用程序。我可以在所有情况下接收推送通知,效果很好。但是如果应用程序被用户终止/杀死,则不会调用didReceiveRemoteNotification。如果应用程序在后台或地面,它正在调用。应用终止通知来了,但didReceiveRemoteNotification:fetchCompletionHandler 没有来电。

我的问题是什么是触发方法应用程序被终止并收到了 firebase 通知。我使用了 Swift 4.2 和 Xcode 10.0。我启用了后台模式 - 来自功能的远程通知。

我使用 Firebase 发送这个 JSON:

{ 
 "to": "/topics/group1", 
 "priority" : "high",
 "content-available": true,
 "notification" : {
 "body" : "Yes you recevied !",
 "sound": "default",
 "title" : "Notification"
 },
 "data": {
"type" : "IOS"
    }
}

【问题讨论】:

  • 你开启后台获取和远程通知了吗?
  • @Pushp 是启用
  • 这是预期行为。当您的应用程序被用户终止时,您的应用程序将无法接收推送通知。如果您的应用是 voip 应用,那么您可以使用 pushkit,它会在发送推送时重新启动您的应用。
  • 当应用程序被杀死并收到通知时,didReceiveRemoteNotification:fetchCompletionHandler 永远不会被调用。相反,当用户点击通知时,didFinishLaunchingWithOptions 会收到数据。
  • @Gamsh 你能解决这个问题吗?我遇到了类似的问题...当应用从“多任务”列表中删除时,应用无法接收远程通知。

标签: ios swift firebase firebase-cloud-messaging swift4.2


【解决方案1】:

来自Apple docs

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

您实际上可以通过启用 VoIP 后台模式来完成它,但它会降低您在应用商店中通过审核的机会。

【讨论】:

  • 我想在本地更新徽章编号。徽章编号未随附通知。当应用程序终止状态时,有什么方法可以更新。
【解决方案2】:

您的 content-available 键/值不正确。键是content_available(下划线,不是破折号),值是布尔值,而不是字符串:

{ 
 "to": "/topics/group1", 
 "priority" : "high",
 "content_available": true,  // <= CHANGED
 "notification" : {
 "body" : "Yes you recevied !",
 "sound": "default",
 "title" : "Notification"
 },
 "data": {
 "type" : "IOS"
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    • 2018-03-18
    • 2018-07-10
    相关资源
    最近更新 更多