gpt4 book ai didi

android - Firebase 云消息传递最后一个 collapse_key 未收到(速率受限?)

转载 作者:IT王子 更新时间:2023-10-29 00:00:24 25 4
gpt4 key购买 nike

我有一个使用 Firebase Cloud Messaging 的服务使用 FCM Data messages 与其 Android 客户端通信与 collapse_key参数集。从有关可折叠键的文档中:

When there is a newer message that renders an older thread, related message becomes irrelevant to the client app and FCM replaces the older message. For example send-to-sync, or outdated notification messages.

这就是我要找的。我不需要所有更新,只需要最后一个。但是,如果用户在线,我需要它尽快


但是,我得到了一个奇怪的速率限制,它不会导致任何 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) 后,它会停止,您需要切换网络状态以获取最后一 strip 有 counter=20 的消息。最后一条消息也会在几分钟(通常约 10 分钟)后出现,此时请求 Firebase checkin (?)。

从上面的 curl 命令中删除 collapse_key 会导致收到所有 20 条消息(其中 counter={1..20})。


那么,问题:这是一个错误吗?还是因为我“滥用”接口(interface)而关闭(/rate limited)(因为所有请求都发回 200 响应,我认为我没问题)。

最佳答案

<?php
#API access key from Google API's Console
define( 'API_ACCESS_KEY', 'YOUR-SERVER-API-ACCESS-KEY-GOES-HERE' );
$registrationIds = $_GET['id'];
#prep the bundle
$msg = array
(
'body' => 'Body Of Notification',
'title' => 'Title Of Notification',
'icon' => 'myicon',/*Default Icon*/
'sound' => 'mySound'/*Default sound*/
);
$fields = array
(
'to' => $registrationIds,
'notification' => $msg
);


$headers = array
(
'Authorization: key=' . API_ACCESS_KEY,
'Content-Type: application/json'
);
#Send Reponse To FireBase Server
$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
curl_setopt( $ch,CURLOPT_POST, true );
curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
$result = curl_exec($ch );
curl_close( $ch );
#Echo Result Of FireBase Server
echo $result;

将您的数据放在正文部分。

关于android - Firebase 云消息传递最后一个 collapse_key 未收到(速率受限?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com