使用React Native + Expo + FCM创建的双推送通知

时间:2019-02-28 10:45:08

标签: android amazon-web-services react-native firebase-cloud-messaging amazon-sns

我正在尝试创建一个可以接收推送通知的应用。推送通知使用AWS SNSFCM令牌而不是Expo's Token发送。收到了通知,但是,系统托盘两次收到了每个通知。我尝试使用未安装博览会的电话,但仍收到2条通知。

这是我发送到SNS时的有效负载请求

{
"GCM": "{ \"notification\": { \"text\": \"test message\" } }"
}

知道为什么会这样吗?我愿意提供代码,但是我不知道应该放哪一部分。这是一个例子。应用名称相同,但第一个通知中带有expo的徽标。 更新:通过Firebase控制台发送后,我意识到带有expo图标的通知是正确的通知。

编辑:尝试从Firebase控制台发送通知后,我仅收到1条通知。问题出在SNS吗?

EDIT [2] 我查看了SNS平台应用程序的Cloudwatch日志。 NumberOfMessagesPublished指标表明仅发布了1条消息。因此,我认为这消除了SNS api被调用两次的可能性。

编辑[3] ,我尝试使用go-fcm软件包将通知直接发送到fcm。即使不使用SNS,我也收到2条通知。但是,为什么直接向fcm发送通知与使用Firebase控制台具有不同的输出?

enter image description here

更新

最后,我设法通过在tag字段中设置一个notification字段来使其工作,以防止重复。

所以有效载荷是这样的:

{
"GCM": "{ \"notification\": { \"text\": \"test message\", \"tag\": \"testing\" } }"
}

但是,这仍然无法回答我为什么得到重复的问题:(

3 个答案:

答案 0 :(得分:0)

您是否已在手机中构建并安装了应用程序?

我认为问题是因为您安装了Expo和“您的应用”。

如果没有,我认为您已经复制了世博令牌。请记住,推送通知的最佳做法是每次启动应用程序时都更新Expo Token。

您无法使用expo工具测试通知。 https://expo.io/dashboard/notifications

答案 1 :(得分:0)

我只安装了一个应用程序,我认为这是因为Expo会捕获通知并创建一个新的自定义应用程序。

我通过FCM发送通知。

使用标签“修复”双重通知问题。

答案 2 :(得分:0)

在JSON请求的“通知”部分中设置“标签”属性。

{
  "to": "xxxxxxxxxxxxxxx",
  "notification": {
      'title': "YOUR TITLE",
      "tag": "GENERATED_UNIQUE_ID",
      'body': "YOUR DESCRIPTION",
      "content_available": "true"
  }
}