【问题标题】:double push notification created with React Native + Expo + FCM使用 React Native + Expo + FCM 创建的双重推送通知
【发布时间】:2019-02-28 10:45:07
【问题描述】:

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

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

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

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

编辑:尝试从 firebase 控制台发送通知后,我设法只收到 1 个通知。问题出在 SNS 上吗?

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

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

更新

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

所以payload是这样的:

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

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

【问题讨论】:

  • 可能来自 FCM 消息内容与消息一起发送两次,消息内容使用任何一个来处理/显示通知。我的情况是相同的,但在隐藏消息/消息内容后它已修复
  • 你是怎么解决这个问题的?我目前正在使用AWS SNS 发送推送通知
  • 以 fcm 为例分享您的通知处理程序
  • 我的代码中目前没有任何通知处理程序,我只是从 expo 的yield Notifications.getDevicePushTokenAsync() 注册我的 FCM 令牌,然后在 AWS SNS 中注册它,然后从控制台发送消息
  • @RichardLeMesurier 我将用户ID 与SNS Endpoint 关联,而SNS Endpoint 又与1 FCM Token 关联。所以我认为每个用户不会重复。经过进一步测试,我尝试直接在firebase仪表板中使用FCM而不是SNS,并且在我使用firebase仪表板时通知没有重复。

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


【解决方案1】:

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

我认为问题在于您安装了 Expo 和“Your App”。

如果不是,我认为您复制了 Expo Token。请记住,推送通知的最佳做法是在每次启动应用程序时更新 Expo Token。

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

【讨论】:

  • 您好克里斯托巴尔,感谢您的回答!是的,我确实安装了我的 expo 应用程序。但是,我尝试使用没有 expo 的手机,但它仍然收到重复通知。对于令牌,我直接将 FCM 与 AWS SNS 一起使用,所以,我不使用 Expo 的令牌。
【解决方案2】:

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

我使用 FCM 发送通知。

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

【讨论】:

  • 只是想重申一下 - 使用标签意味着一次只有一个通知(如果标签相同,新通知将替换旧通知)。如果您不希望出现这种情况,请确保不要对标签进行硬编码,而是使用时间戳之类的东西
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2020-12-14
    • 1970-01-01
    • 2021-11-14
    • 2022-07-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多