HarmonyOS鸿蒙Next中通过桌易通安装的app,服务端HWPush应该如何推送测试消息?

HarmonyOS鸿蒙Next中通过桌易通安装的app,服务端HWPush应该如何推送测试消息? 服务端推送使用的是HMS Core推送服务,推送测试消息到鸿蒙6的设备(App通过桌易通安装),消息不能被识别被测试消息,会被限流,请问如何解决?

15 回复

背景知识:

  1. 卓易通属于非应用市场离线安装 APK,鸿蒙 6 系统 + AGC 双风控:非应用市场包默认不识别testMessage:true测试标记,按正式营销消息走日限额(默认 2~5 条 / 设备 / 天)直接限流,不会占用项目 1000 条测试额度
  2. target_user_type=1调试标识仅应用市场上架包生效,卓易通侧装包失效;
  3. 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,并指定推送目标为鸿蒙设备。步骤如下:

  1. 在华为推送控制台获取应用的AppId和AppSecret。
  2. 服务端调用OAuth 2.0接口获取access_token。
  3. 使用鸿蒙推送专用接口(POST https://push-api.cloud.huawei.com/v3/[appid]/messages:send),消息体target_type=1,target_token填入测试设备从桌易通获取的pushToken,同时设置message.harmony_push字段(而非android)。
  4. 发送请求即可。也可在控制台直接使用“测试推送”功能,填入目标token进行快速验证。

使用桌易通侧载的 App 推送测试消息被限流,核心原因是 HWPush 无法将其识别为调试设备上的测试消息,而被当作生产推送,触发了推送频次或配额限制。

解决方法如下:

  1. 设备必须登记为测试设备
    登录 AppGallery Connect,进入“我的项目”→ 选择应用 →“设备管理”,将鸿蒙 6 设备的 UDID 添加为测试设备,并确保设备在调试模式下运行。

  2. App 侧需正确初始化测试环境
    确保应用已集成 agconnect-services.json(或对应 HarmonyOS 配置文件),并在获取 Push Token 时启用调试模式。桌易通安装可能遗漏此文件,请检查包内是否包含且路径正确。

  3. 服务端推送时显式指定测试消息
    调用推送接口时,在消息体中加入 "testMessage": true 或使用测试推送专用的 API(如 push.testMessage.send),这样服务端即可将消息标记为测试类型,不受生产推送的限流阈值影响。

若仍被限流,请检查每日测试推送额度是否已用尽(通常测试环境有较高配额),或确认 App 的包名、证书指纹与 AGC 后台一致。

回到顶部