didReceiveRemoteNotification不叫swift

时间:2016-10-25 10:09:00

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

为什么我没有收到背景中未收到的通知???

这是我使用推送通知时的第一次体验。我阅读了文档,并按照Google Firebase Doc的指南进行操作。我还实现了firebase/quickstart-ios的代码。之后我在firebase服务上创建了控制台,上传了我的证书并成功发送了我在前台收到的消息,所以在Backround中也是如此。

但是,当我更改从后端开发人员处获取的控制台时,我的应用程序停止在后台模式下执行推送通知。

我在做什么:

  • 功能推送通知设置为" ON"
  • 在功能背景模式下启用"后台提取","远程通知"
  • content_available设置为" 1"
  • 发送消息优先级设置为"高"

我无法理解为什么app停止在后台接收通知,如果它之前运作良好。

我也在stackoverflow上阅读了相同的问题,但没有找到问题的解决方案。

请帮忙解决这个问题!

更新

实际上,我没有收到背景中的任何通知,所以在Foreground中。原因是当我从第一个控制台安装带有GoogleService-Info.list的应用程序时,我接受了接收通知。所以,如果您更改控制台,当然您更改了GoogleService-Info.list,您应该再次接受接收通知!如果您不接受, didReceiveRemoteNotification 将不会致电!

2 个答案:

答案 0 :(得分:0)

您还没有添加任何代码,因此可能需要考虑以下几点:

确保您定义了fetchCompletionHandler,以便content-available: true能够在收到推送通知时唤醒应用。

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
                   fetchCompletionHandler completionHandler:{ @escaping (UIBackgroundFetchResult) -> Void)
fetchCompletionHandler(UIBackgroundFetchResultNewData);
}

FCM根据推送通知有效负载中包含的内容处理不同的通知。尝试使用仅具有数据的有效负载和仅通知有效负载的推送通知,试验并查看会发生什么。

{
  "to":"push_token",
    "content_available": true,
    "priority": "high",
    "notification": {
      "title": "New Message",
      "message": "Bob sent you a message",
    },
    "data": {
      "title": "New Message",
      "message": "Bob sent you a message",
    }
}

使用此CURL命令而不是使用firebase控制台测试发送推送通知

curl -X POST --header "Authorization: key=APIKEY" --Header "Content-Type: application/json" https://fcm.googleapis.com/fcm/send -d "@push_payload.json"

答案 1 :(得分:0)

原因是当我从第一个控制台安装带有GoogleService-Info.list的应用程序时,我接受了接收通知。所以,如果您更改控制台,当然您更改了GoogleService-Info.list,您应该再次接受接收通知!如果您不接受, didReceiveRemoteNotification 将不会致电!

P.S。 在我的变体中,我通过调配实现通知。如果您选择相同的方式,请确保在Info.plist文件中有属性 FirebaseAppDelegateProxyEnabled ,其值设置为