我在使用HMS push kit发送DATA通知以确保调用onMessageReceived
时遇到了一个问题,但问题是对于同一个JSON主体,有时收到的通知作为数据到达,而在收到的消息中被调用,其他时候它作为通知接收并由系统托盘处理,这是我使用的laravel后端代码:
$body = [
"validate_only" => false,
"message" => [
"data" => json_encode($this->message),
"token" => $this->tokens
]
];
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://push-api.cloud.huawei.com/v1/{some_id}/messages:send',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($body),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json; charset=UTF-8',
'Authorization: Bearer ' . $this->access
)
));
$response = curl_exec($curl);
curl_close($curl);
我如何确保它总是以数据的形式到达?
1条答案
按热度按时间prdp8dxp1#
服务器发送下行消息时,请参考以下网页和信息。请确保您的消息配置与要求完全相同。同时,请确保您的服务器或团队不向您的测试设备发送推送消息。因为数据消息结构与通知消息不同。数据消息不可能作为通知消息被接收。https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/android-server-dev-0000001050040110
{“validate_only”:false,“message”:{“data”:“'param1':'value1 ','param2':'value2 '}",“token”:[“pushtoken1”,“pushtoken2”] } }
您可以尝试使用华为控制台发送数据报文,如下所示。如果下面的发送工作正常,它证明您的设备接收数据消息非常好.因此,您需要仔细检查推送数据消息的服务器确认。https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/msg-sending-android-0000001136294192
下面的网页用于数据消息开发。https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/android-basic-receivemsg-0000001087370610
如果在上述测试和检查之后您仍然有问题,请尝试捕获一些logcat日志,以便我们可以分析日志以获取更多信息。对于logcats的指南:https://developer.android.com/studio/command-line/logcat