由于Google禁止新的华为设备使用GMS,我的应用程序的华为手机用户经常提示他们无法接收通知消息。所以我最近开始使用HUAWEI Push Kit。整合过程很顺利。我已经完成集成并在华为应用市场发布了我的应用程序。用户现在可以接收通知消息。
但是现在我发现与推送数据相关的以下问题:
借助 FCM,我可以使用 BigQuery 进一步分析消息推送数据,例如发送的消息数和接收的消息数。例如,我可以执行以下语句来统计应用程序发送消息的数量:
SELECT app_name, COUNT(1)
FROM `project ID.firebase_messaging.data`
WHERE
_PARTITIONTIME = TIMESTAMP('date as YYYY-MM-DD')
AND event = 'MESSAGE_ACCEPTED'
AND message_id! =''
GROUP BY 1;
我阅读了HUAWEI Push Kit文档,但没有找到类似BigQuery的功能。
不过,我找到了消息回执,它还可以用于收集统计数据。因此,我开发了一个收据API并在Push Kit控制台上进行配置。经过测试,现在可以接收推送数据了。
现在,当我计划发布我的应用程序时,我需要验证调用者,因为消息接收 API 在公共(public)网络上公开可用。如何验证调用者,防止恶意API调用?
最佳答案
HUAWEI Push Kit的消息接收功能可以设置用户名和密码进行身份验证。您可以使用此功能来防止恶意API调用。流程如下:
- 在华为推送控制台配置消息接收时设置用户名和密码。
- 当华为调用您的收据API时,X-HUAWEI-CALLBACK-ID参数会添加到HTTP header 中。参数值由以下部分组成:
a. timestamp
:系统的UTC时间戳。
b. nonce
:随机UUID。
c. value
:待加密字符串后最终得到的字符串(由timestamp
的值、nonce
的值、回调用户名组成)使用HMAC-SHA256算法中设置的密码进行加密,然后使用Base64进行编码。
例如:
timestamp=1563105451261;nonce=a07bfa17-6d82-4b53-a9a2-07cfef5ceef1;value=E4YeOsnMtHZ6592U8B9S37238E+Hwtjfrmpf8AQXF+c=
- 接收请求时,接收API可以获取HTTP头中X-HUAWEI-CALLBACK-ID的值来检查调用者是否有效。
欲了解更多信息,请访问Message Receipt
关于push-notification - 如何防止用户在使用HUAWEI Push Kit的消息接收函数API时恶意调用该函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62526354/