0

我正在使用 Firebase Cloud Messaging 并为我的通知创建一个 cron,而不是使用 Firebase 控制台。我想知道我是否可以使用与 android 相同的 json。目前,我的 android 设备会收到我发送的通知,但在我的 iOS 中却没有。我想知道它是否因为我在notification对象中使用的某些参数icon仅适用于 android 平台,它会影响结果吗?

我的帖子请求看起来像这样

{
    "registration_ids" : $ids,
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark"
      "icon" : "myicon"
    },
    "data" : {
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
} 

更新

正如建议的那样,我为我的 iOS 和 Android 创建了两个不同的 cron,在我的 iOS 中我只是删除icon了 json 中的参数。但我仍然无法收到任何通知。

同样在Capabilities Tab -> Push Notifications,我切换它ON,也在Background Modes-> Remote notifications

4

3 回答 3

2

要让 Firebase 推送在 iOS 上运行,您必须设置priorityhigh. 参考: 无法使用服务器 API 发送推送通知

于 2016-07-28T00:34:43.960 回答
1

您可以为 android 和 ios 使用相同的 json。Firebase Cloud Messaging 将使用每个平台的相关参数

例子:

  • icon将从针对 iOS 的消息中删除,因为该平台不支持更改图标。

  • sound应该是带有扩展名的文件名(ios 需要扩展名)。Firebase 将在针对 android 设备时删除扩展程序。

关于未传递到 iOS 的消息,请尝试增加priority参数。
https://firebase.google.com/docs/cloud-messaging/http-server-ref#downstream-http-messages-json

当 ios 应用处于后台时,Firebase 使用 APN 来传递消息,而 APN 通常会延迟不具有高优先级的消息。

如果这不起作用,请检查您的 APNs 证书配置。

于 2016-06-03T17:41:59.050 回答
0

在我的 json 我添加了aps对象

'aps' => array(
                'alert' => $messageText,
                'badge' => $badge,
                'sound' => 'default',
                'id' => $id
            ),
于 2016-06-03T09:22:00.900 回答