我的phone在调用HMS Push Kit服务器API后收不到任何消息。 SDK版本为4.0.3.300
My phone cannot receive any message after calling the HMS Push Kit server API. The SDK version is 4.0.3.300
我用的是华为的Push Kit给华为设备推送消息,SDK版本是4.0.3.300。可以正确获取到token,于是开始使用Postman调用Push Kit服务器API进行消息推送。返回的消息正文显示成功,但我的设备没有收到任何消息。以下是代码和我的操作。我该怎么做才能处理这个问题?
邮递员呼叫地址:
POST https://push-api.cloud.huawei.com/v1/[myappid]/messages:send
已发送邮件正文:
{
"validate_only": true,
"message": {
"data": "my data",
"android": {
"fast_app_target": 2
},
"token": [
"my token"
]
}
}
响应:
{
"code": "80000000",
"msg": "Success",
"requestId": "158929224618234594000607"
}
响应成功,但我的设备没有收到任何数据信息。
我已经继承了HmsMessageService,并在manifest文件中进行了配置。
public class MyPushService extends HmsMessageService {
private static final String TAG = "hmspush";
@Override
public void onMessageReceived(RemoteMessage message) {
Log.i(TAG, "onMessageReceived is called");
if (message == null) {
Log.e(TAG, "Received message entity is null!");
return;
}
Log.i(TAG, "getCollapseKey: " + message.getCollapseKey()
+ "\n getData: " + message.getData()
+ "\n getFrom: " + message.getFrom()
+ "\n getTo: " + message.getTo()
+ "\n getMessageId: " + message.getMessageId()
+ "\n getSendTime: " + message.getSentTime()
+ "\n getMessageType: " + message.getMessageType()
+ "\n getTtl: " + message.getTtl());
}
}
<service
android:name=".MyPushService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
问题是由于邮件正文不正确造成的。在消息正文中,有一个名为validate_only
的字段。根据华为开发者联盟上的描述,该字段判断一条消息是否为测试消息。测试消息只需要格式验证,不会推送到用户设备。
值true表示测试消息; value false 表示正常消息。
由于 validate_only
字段的值在给定场景中为真,因此该消息是测试消息,因此无法被设备接收。解决问题,把validate_only
的值改成false:
{
"validate_only": false,
"message": {
"data": "my data",
"android": {
"fast_app_target": 2
},
"token": [
"my token"
]
}
}
我用的是华为的Push Kit给华为设备推送消息,SDK版本是4.0.3.300。可以正确获取到token,于是开始使用Postman调用Push Kit服务器API进行消息推送。返回的消息正文显示成功,但我的设备没有收到任何消息。以下是代码和我的操作。我该怎么做才能处理这个问题? 邮递员呼叫地址:
POST https://push-api.cloud.huawei.com/v1/[myappid]/messages:send
已发送邮件正文:
{
"validate_only": true,
"message": {
"data": "my data",
"android": {
"fast_app_target": 2
},
"token": [
"my token"
]
}
}
响应:
{
"code": "80000000",
"msg": "Success",
"requestId": "158929224618234594000607"
}
响应成功,但我的设备没有收到任何数据信息。
我已经继承了HmsMessageService,并在manifest文件中进行了配置。
public class MyPushService extends HmsMessageService {
private static final String TAG = "hmspush";
@Override
public void onMessageReceived(RemoteMessage message) {
Log.i(TAG, "onMessageReceived is called");
if (message == null) {
Log.e(TAG, "Received message entity is null!");
return;
}
Log.i(TAG, "getCollapseKey: " + message.getCollapseKey()
+ "\n getData: " + message.getData()
+ "\n getFrom: " + message.getFrom()
+ "\n getTo: " + message.getTo()
+ "\n getMessageId: " + message.getMessageId()
+ "\n getSendTime: " + message.getSentTime()
+ "\n getMessageType: " + message.getMessageType()
+ "\n getTtl: " + message.getTtl());
}
}
<service
android:name=".MyPushService"
android:exported="false">
<intent-filter>
<action android:name="com.huawei.push.action.MESSAGING_EVENT" />
</intent-filter>
</service>
问题是由于邮件正文不正确造成的。在消息正文中,有一个名为validate_only
的字段。根据华为开发者联盟上的描述,该字段判断一条消息是否为测试消息。测试消息只需要格式验证,不会推送到用户设备。
值true表示测试消息; value false 表示正常消息。
由于 validate_only
字段的值在给定场景中为真,因此该消息是测试消息,因此无法被设备接收。解决问题,把validate_only
的值改成false:
{
"validate_only": false,
"message": {
"data": "my data",
"android": {
"fast_app_target": 2
},
"token": [
"my token"
]
}
}