作者:手机用户2502887971_699 | 来源:互联网 | 2023-02-13 20:51
我有一项服务,使用Firebase云消息传递使用带参数集的FCM数据消息与其Android客户端进行通信collapse_key
.从有关可折叠键的文档:
当有较新的消息呈现较旧的线程时,相关消息与客户端应用程序无关,FCM将替换旧消息.例如,发送到同步或过时的通知消息.
这就是我要找的东西.我不需要所有更新,只需要最后一个.但是,如果用户在线,我需要尽快.
但是,我得到一个奇怪的速率限制,不会导致任何HTTP错误代码.它很容易重现,只需要连续20条数据消息并监控android FirebaseMessagingService.onMessageReceived
:
for i in {1..20}; do
curl -v -X POST --header "Authorization: key=$SERVER_KEY" \
--Header "Content-Type: application/json" \
https://fcm.googleapis.com/fcm/send \
-d "{\"to\":\"$CLIENT_TOKEN\", \
\"data\":{\"counter\":\"$i\"}, \
\"priority\":\"high\", \
\"collapse_key\": \"test\" \
}"
done
上面的bash脚本有点难以阅读,但我有一个counter
我感兴趣的变量.
收到一些消息后(counter=~10
)它会停止,您需要切换网络状态以获取最后一条消息counter=20
.最后一条消息也会在几分钟(通常约10分钟)后出现,此时请求进行火力登记(?).
collapse_key
从上面的curl命令中删除会导致收到所有20条消息(其中counter={1..20}
).
所以,问题是:这是一个错误吗?或者我关闭(/率限制),因为我"滥用"界面(因为所有请求都发回一个200
响应,我以为我没事).