我正在尝试创建一个可以接收推送通知的应用。推送通知使用AWS SNS
和FCM
令牌而不是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控制台具有不同的输出?
更新
最后,我设法通过在tag
字段中设置一个notification
字段来使其工作,以防止重复。
所以有效载荷是这样的:
{
"GCM": "{ \"notification\": { \"text\": \"test message\", \"tag\": \"testing\" } }"
}
但是,这仍然无法回答我为什么得到重复的问题:(
答案 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"
}
}