我正在尝试创建一个可以接收推送通知的应用。推送通知使用AWS SNS
并使用FCM
令牌而不是Expo's Token
发送。收到通知,然而,系统托盘收到两次通知。我尝试使用没有安装expo的手机,但它仍然收到2个通知。
这是我发送给SNS
时的有效载荷请求
{
"GCM": "{ \"notification\": { \"text\": \"test message\" } }"
}
知道为什么会这样吗?我愿意提供代码,但我不知道应该放哪个部分。这是一个例子。应用程序名称相同,但第一个通知中包含expo的徽标。更新:通过firebase控制台发送后,我意识到带有expo图标的通知是正确的。
编辑:尝试从firebase控制台发送通知后,我设法只收到1个通知。问题出在SNS吗?
编辑[2]我看了一下我的Cloudwatch日志中的SNS平台应用程序。 NumberOfMessagesPublished
指标表明只发布了1条消息。所以我猜它消除了两次调用SNS api的可能性。
编辑[3]我试图使用go-fcm
包直接向fcm发送通知。即使不使用SNS,我也收到了2个通知。但是,为什么直接向fcm发送通知的输出与使用Firebase控制台的输出不同?
UPDATE
最后,我设法通过在tag
字段中设置notification
字段来防止重复。
所以有效载荷是这样的:
{
"GCM": "{ \"notification\": { \"text\": \"test message\", \"tag\": \"testing\" } }"
}
然而,这仍然没有回答为什么我得到重复的问题:(
您是否已在手机中构建并安装了应用程序?
我认为这个问题是因为你安装了Expo和“Your App”。
如果没有,我认为你已经复制了世博会令牌。请记住,Push Notifications的最佳做法是每次启动应用程序时更新Expo Token。
您可以使用expo工具测试通知。 qazxsw poi