HarmonyOS鸿蒙Next中通过桌易通安装的app,服务端HWPush应该如何推送测试消息?
HarmonyOS鸿蒙Next中通过桌易通安装的app,服务端HWPush应该如何推送测试消息? 服务端推送使用的是HMS Core推送服务,推送测试消息到鸿蒙6的设备(App通过桌易通安装),消息不能被识别被测试消息,会被限流,请问如何解决?
背景知识:
- 卓易通属于非应用市场离线安装 APK,鸿蒙 6 系统 + AGC 双风控:非应用市场包默认不识别testMessage:true测试标记,按正式营销消息走日限额(默认 2~5 条 / 设备 / 天)直接限流,不会占用项目 1000 条测试额度
- target_user_type=1调试标识仅应用市场上架包生效,卓易通侧装包失效;
- HMS Core 在卓易通容器内有独立消息频控,普通测试参数无法豁免营销消息限流。
接口参数正确配置(优先,改服务端推送 JSON):
{
"pushOptions": {
"testMessage": true, // 开启测试消息,项目共用1000条/日额度、豁免营销频控
"target_user_type": 1 // 调试用户标识
},
"category": "SERVICE", // 强制改为服务通讯类,无单日条数限制(需要AGC自分类权益)
"token": ["单个token,单次≤10个token(test消息硬性限制)"]
}
试试修改一下服务器发送的推送消息字段。
更多关于HarmonyOS鸿蒙Next中通过桌易通安装的app,服务端HWPush应该如何推送测试消息?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
HMS Core 推送服务现支持如下接入形态:
Android:推送服务Android SDK为您的Android应用开发提供推送消息相关的接口,适用于手机和平板。主要包含根据多种受众用户推送通知栏和透传消息,自定义通知栏消息样式,主题订阅等功能。
HarmonyOS(Java):推送服务HarmonyOS Java SDK为您的HarmonyOS应用开发提供推送消息相关的接口,适用于华为手机和平板。主要功能为根据token推送通知栏和透传消息。
iOS:推送服务iOS SDK为您的iOS应用开发提供推送消息相关的接口,适用于iOS 10及以上的iPhone设备。主要功能为根据token推送通知栏和透传消息。
Web:推送服务为您的Web应用开发提供推送通知栏消息相关接口。
快应用:推送服务为您的华为快应用开发提供推送通知栏消息相关的接口。
REST API:推送服务REST API为您提供HTTPS接口,您可以通过HTTPS形式发起请求,调用推送服务相关能力,适用于上述所有平台。主要包含下行消息、下行消息回执、主题订阅等功能。
看看你的情况在支持范围内吗。
可以用Postman试试《如何使用Postman调试HMS Core推送接口》
这类问题先不要从“后台保活”方向查,核心还是应用身份识别。测试消息能否被识别,通常依赖 AGC 应用信息、签名、token 来源和安装形态一致;通过桌易通安装后,应用形态和原生 HarmonyOS 包可能已经不是同一条链路,所以即使服务端把 testMessage 带上,也不一定会按你预期识别。建议优先确认 4 点:1)请求体里确实传了测试消息标识;2)服务端使用的 appId、项目配置和当前安装包一一对应;3)设备上拿到的是这套应用对应的 Push token;4)同一套代码换成原生鸿蒙包安装后是否正常。如果原生包正常、桌易通包异常,那就更像安装形态兼容限制,不是推送接口本身的问题。
1、确保测试消息标识正确配置
请求体的pushOptions参数中明确设置testMessage = true
2、检查应用签名与AGC平台的一致性
通过卓易通渠道安装的应用,签名信息阔能发生变化。
检查服务端推送的appID,与与AppGallery Connect中获取的APPID完全一致
让应用常驻后台进行运行,监听进入后台进程保持消息推送
public class MyApplication extends Application {
private int countActivity = 0;
private boolean isBackground = false;
@Override
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityStarted(Activity activity) {
countActivity++;
if (countActivity == 1 && isBackground) {
Log.e("MyApplication", "应用进入前台");
isBackground = false;
Toast.makeText(MyApplication.this, "应用进入前台", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivityStopped(Activity activity) {
countActivity--;
if (countActivity == 0 && !isBackground) {
Log.e("MyApplication", "应用进入后台");
isBackground = true;
Toast.makeText(MyApplication.this, "应用进入后台", Toast.LENGTH_SHORT).show();
}
}
// 其他生命周期留空
@Override public void onActivityCreated(Activity activity, Bundle bundle) {}
@Override public void onActivityResumed(Activity activity) {}
@Override public void onActivityPaused(Activity activity) {}
@Override public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {}
@Override public void onActivityDestroyed(Activity activity) {}
});
}
}
不是app进程被杀掉的问题哦,就是被识别为非测试消息,被限流了。HMS Core的HWPush跟纯血鸿蒙的HWPush,推送的接口和消息体格式都不一样,可能是当前桌易通没有适配“测试类型消息”的场景。
卓易通问题建议咨询卓易通官网
谢谢,我也去问问
目前应该没办法实现识别消息吧?建议最好使用纯血鸿蒙开发,不要用卓易通,会有很多兼容问题,
多谢回复。长久看是需要再开发个纯血版本,暂时想先找个临时方案先用起来
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:https://www.bilibili.com/video/BV1S4411E7LY/?p=17
meow就行吧,
请问这个具体是指什么?没玩过
对于通过桌易通安装的鸿蒙Next应用,服务端推送测试消息需使用华为推送服务(HWPush)的REST API,并指定推送目标为鸿蒙设备。步骤如下:
- 在华为推送控制台获取应用的AppId和AppSecret。
- 服务端调用OAuth 2.0接口获取access_token。
- 使用鸿蒙推送专用接口(POST https://push-api.cloud.huawei.com/v3/[appid]/messages:send),消息体target_type=1,target_token填入测试设备从桌易通获取的pushToken,同时设置message.harmony_push字段(而非android)。
- 发送请求即可。也可在控制台直接使用“测试推送”功能,填入目标token进行快速验证。
使用桌易通侧载的 App 推送测试消息被限流,核心原因是 HWPush 无法将其识别为调试设备上的测试消息,而被当作生产推送,触发了推送频次或配额限制。
解决方法如下:
-
设备必须登记为测试设备
登录 AppGallery Connect,进入“我的项目”→ 选择应用 →“设备管理”,将鸿蒙 6 设备的 UDID 添加为测试设备,并确保设备在调试模式下运行。 -
App 侧需正确初始化测试环境
确保应用已集成agconnect-services.json(或对应 HarmonyOS 配置文件),并在获取 Push Token 时启用调试模式。桌易通安装可能遗漏此文件,请检查包内是否包含且路径正确。 -
服务端推送时显式指定测试消息
调用推送接口时,在消息体中加入"testMessage": true或使用测试推送专用的 API(如push.testMessage.send),这样服务端即可将消息标记为测试类型,不受生产推送的限流阈值影响。
若仍被限流,请检查每日测试推送额度是否已用尽(通常测试环境有较高配额),或确认 App 的包名、证书指纹与 AGC 后台一致。

