android - 据称随机获得“无权向这些 tmID 发送消息”HMS 推送服务
问题描述
固定服务器端
注意:这是一个服务器端错误,现在似乎已解决。我们的移动应用程序代码保持不变。
我必须使用 HMS 推送服务才能使我的 RN 应用程序适用于华为 EMUI 设备:HMS Core。
我按照所有必需的步骤在服务器和移动应用程序上安装和配置 HMS。
但是......我注意到一个奇怪的行为。我使用网页上的按钮将推送通知从服务器发送到移动应用程序。我确保在我的华为 ID 上启用了 Push Kit,并且 Push Device Token 是正确的。
有时会发送通知,有时不会。我一整天都在寻找原因,但现在看来完全是偶然的,至少在找不到原因之前是这样。
请注意,在下面的代码中,mc.send()
每次都进入.then()
并且从未引发.catch()
.
有时我得到:OK {"code":"80000000","msg":"Success","requestId":"161832746491754926000107"}
并且通知实际上是从移动应用程序收到的(一切都很好!)。
有时(而且经常):OK {"code":"80300002","msg":"No permission to send message to these tmIDs","requestId":"161832753512250325000107"}
最后,我不断得到:OK {"code":"80000000","msg":"Success","requestId":"161832795126307445060711"}
但是......应用程序实际上没有收到通知。
我尝试重新启动服务器,将应用程序保持在三种不同的状态(关闭、前台、后台),但没有任何帮助我找到问题所在。
这是我用来发送通知的代码的最后一个版本(我更改了很多次):
function sendPushNotificationHMS(pushDeviceToken, data, attempt){
hcm.init({
appId: configHMS.AppId,
appSecret: configHMS.AppSecret,
authUrl: configHMS.AuthUrl,
pushUrl: configHMS.PushUrl
});
let mc = hcm.messaging().messaging;
let androidConfig = {
collapse_key: -1,
urgency:"HIGH",
ttl: "10000s",
bi_tag: "the_sample_bi_tag_for_receipt_service",
}
let message = {
data: JSON.stringify(data),
android: androidConfig,
token: new Array(pushDeviceToken)
};
mc.send(message, true).then(data => {
console.log('OK ', data);
}).catch(err => {
console.log('ERR ', err);
});
}
解决方案
请参阅此文档:
https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/commonerror-0000001059816656
并查看 80300002 下的解决方案之一是否正确。由于您已经检查过您的 ID 是否正确,请查看 2、4、6 和 7 下的提示。
推荐阅读
- javascript - django使用ajax调用后端有问题
- android - 如何使用 Volley 发送 base 64 字符串
- ios - SwiftUI:主从视图中的 SafariView
- java - 为什么当我在eclipse中的spring boot项目中执行主类时出现这个错误“找不到或加载主类”
- templates - 根据某种状态从文档生成中过滤掉图表
- r - 删除数据表中的行 - 闪亮
- javascript - 如何在没有 global.css 文件的情况下覆盖 next.Js 中的材料 ui 类?
- google-analytics-4 - GA4 on Web 事件和渠道问题
- sql - Q 表示法不适用于 oracle 12c 中的变量
- javascript - 如何使文本对齐:在谷歌应用脚本(日历)中居中?