拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

HarmonyOS集成极光推送实战:从配置到上线的完整指南

HarmonyOS集成极光推送实战:从配置到上线的完整指南

HarmonyOS 的推送开发,现阶段绕不开一个现实:系统推送服务碎片化,各厂商通道各自为战。很多团队在鸿蒙上做消息触达,第一反应是自己对接华为 Push Kit,结果发现适配、回执、厂商通道覆盖一套下来,工作量远超预期。我这次把极光推送完整集成到 HarmonyOS 应用里,从账号申请到服务端接口联调,全程走了一遍,踩了不少坑,也把关键环节彻底理顺了。这篇就按实际交付的顺序,把能直接落地的方案和排查思路一次性讲清楚,省得你再走弯路。

这篇内容适合谁看?两类人最对口:一类是 HarmonyOS 应用开发工程师,正在做消息推送模块,需要快速接入第三方推送能力;另一类是技术负责人,还在选型阶段,想搞清楚自研推送、直连华为 Push Kit、第三方推送 SDK 在鸿蒙上的真实差异。我默认你已经能用 DevEco Studio 创建并运行一个鸿蒙工程,下文会尽量把每一步的参数来源和配置逻辑说透,而不是只丢给你一段能跑的代码。

1. 整体设计与思路拆解

1.1 为什么在鸿蒙上做推送,还是绕不开第三方 SDK

HarmonyOS NEXT 从诞生起就致力于构建自己的生态闭环,华为也推出了官方推送服务 Push Kit。但实际接进去你会发现,只接 Push Kit,离“一套代码打天下”的目标还很远。原因有几个。

设备生态不只有华为。你永远不知道用户手里拿的是原生鸿蒙设备,还是碰上了其他品牌的机型。即便都是鸿蒙系统,华为在开放推送能力时,对通知权限、消息分类、静默消息管控的策略也一直在收紧。这些策略不是文档里写死的,而是随着系统版本动态变化的。

极光推送这类第三方 SDK 的核心价值,就是把厂商通道的适配问题收口。它在鸿蒙端封装了 Push Kit 的接入,同时保留了自己统一的接口和消息格式。对应用开发者来说,你只需要调用极光的注册、接收、上报接口,至于消息怎么通过华为通道下发、通知栏怎么展示、点击事件怎么回传,SDK 替你消化了。

从推送运营的角度看,第三方平台自带数据统计、标签分群、定时推送这些能力。自己做推送服务端,光维护一个可用率监控和回执分析系统,就要消耗掉大量的后端人力。两相权衡,接第三方 SDK 是现阶段性价比最高的方案。

1.2 整体架构与消息流转链路

集成之前,先在脑里画清楚一条链路:业务服务端并不是直接把消息推到用户手机的,中间要经过三层。

第一层是业务服务端。你只需要把推送请求发给极光的 REST API,带上目标人群、标题、内容、自定义字段。第二层是极光服务端。它收到请求后,会根据目标设备 ID 或别名,将消息路由到对应的厂商通道;在鸿蒙上,就是通过华为 Push Kit 下发。第三层才是鸿蒙设备端的推送 SDK。极光 SDK 在应用内接收厂商通道到达的消息,再交给你的业务代码处理展示逻辑。

这里有一个容易误解的地方:消息到达应用进程,和消息展示到通知栏,是两件事。厂商通道负责把消息送到设备,但通知栏怎么展示,取决于应用侧如何调用系统通知接口。极光 SDK 在这层做了封装,但封装的边界是“消息到达即给你回调”,并不意味着你什么都不用做。

我的集成方案里明确了分工:极光 SDK 负责厂商通道适配和统一回调,应用负责自定义通知渠道、权限引导和打开页面的业务跳转。这个分工能在最大程度上减少厂商策略变化对业务的影响。

1.3 方案选型:自研推送、直连 Push Kit、第三方 SDK 的取舍

我在开始动手前,其实是先做了选型对比的。自研推送听起来自由度高,但在鸿蒙上,后台应用消息完全依赖系统推送服务,自研通道在应用被杀死后就失效了,这条路线在鸿蒙生态里基本走不通。

直连 Push Kit,技术上完全可行,华为的文档也很详细。缺陷在于你只能触达华为设备的用户,其他品牌设备的鸿蒙用户会丢失;同时你需要自己实现服务端的消息组装、Token 管理、到达与点击回执统计,这套东西的工程量不亚于一个小型中台。

第三方 SDK 的选型,核心看两点:一是它对 HarmonyOS 的适配深度,二是它是否已经稳定接入了华为厂商通道。极光在这一块做得比较早,HarmonyOS 版 SDK 直接支持厂商通道下发和系统通知栏展示,还保留了和服务端一体的推送控制台。综合评估后,我决定采用极光推送作为推送层统一入口,业务服务端通过 REST API 接入。

还需要明确的是目标场景。如果只是给几十个内部测试用户发消息,直连 Push Kit 就够用;但要支撑千万级日活的真实业务,第三方 SDK 的平台能力和运维成熟度反而成了最核心的竞争力。

2. 环境准备与基础配置

2.1 华为开发者账号与 AGC 工程创建

第一步是准备华为侧的账号和环境。你需要一个认证过的华为开发者账号,然后在 AGC(AppGallery Connect)控制台创建应用。这个过程有几个配置点特别容易出错,逐一说。

应用包名必须和你的 DevEco Studio 工程里的 Bundle ID 完全一致,不然后面下载的 agconnect-services.json 对不上。创建应用时,系统会让你选择是否启用云函数、云数据库等服务,推送只依赖 Push Kit,其他服务不勾选也没问题。

创建完应用,在 AGC 控制台的“开发服务”里找到 Push Kit,点击启用。此时系统会要求你填写应用的包名和签名证书指纹。指纹这一步卡住过很多人:它不是你在 DevEco Studio 里看到的自动签名指纹,而是密钥库证书的 SHA-256 值。

我用的方式是命令行生成。找到你的 .cer 证书文件,执行:

keytool -printcert -file your-app.cer | grep "SHA256"

把输出的 SHA-256 指纹去除冒号,填写到 AGC 控制台对应位置。如果这里填的是调试证书指纹,等上架正式包时,记得在 AGC 里补充正式证书的指纹,否则线上通知会莫名其妙收不到。

最后一步,在 AGC 页面下载 agconnect-services.json,这个文件后续要放到工程里,作为 SDK 初始化时读取华为推送配置的凭据。

2.2 极光控制台配置与 AppKey 获取

华为侧配置完成后,去极光官网注册开发者账号,创建应用,平台类型选择 HarmonyOS。创建后控制台会生成 AppKey 和 Master Secret。

AppKey 用于客户端 SDK 初始化,可以理解成应用在极光平台的身份证。Master Secret 用于服务端调用 REST API 时生成鉴权签名,它的泄露会导致任何人都能通过 API 给你用户发垃圾消息,所以务必要保存在服务端,不要内置到 App 里。

在极光控制台里有一个“厂商通道”或“鸿蒙推送配置”的入口,需要填入华为侧的相关配置信息。不同版本的极光控制台界面略有差异,常见需要填写的是:

  • AGC 应用的包名
  • 华为推送的客户端 AppID
  • 服务端的推送密钥或访问 Token

这些参数获取方式以极光官方文档为准,但有一点是通用的:你在极光配的这些参数,必须和 AGC 上的应用一一对应。一个极光应用对应一个 AGC 应用,不要图省事把多个包名塞进同一个极光应用里,后续回执统计和别名推送会乱套。

2.3 工程引入依赖与配置文件

打开 DevEco Studio,在工程的 build.gradle 里添加仓库依赖。HarmonyOS 的依赖管理方式和 Android 不完全一样,不过极光的鸿蒙 SDK 接入相对规范。典型的依赖配置长这样:

dependencies { implementation 'cn.jiguang.sdk:jpush-harmonyos:3.x.x' }

具体版本号以极光发布页为准。依赖添加后,同步工程,确认 SDK 被正确拉取。

接着处理华为侧的配置文件。把 AGC 下载的 agconnect-services.json 放到 entry 模块的 resources/rawfile 目录下,同时确保 module.json5 里声明了网络访问权限:

{ "module": { "requestPermissions": [ { "name": "ohos.permission.INTERNET" } ] } }

这里有个容易疏忽的点:HarmonyOS NEXT 的权限模型对敏感权限有更强的管控,但 INTERNET 是普通权限,直接声明即可,不需要运行时弹窗申请。如果你的应用还要读取设备标识用于推送统计,可能还需要额外配置设备信息权限,这个要看极光文档是否要求。

配置完这些,不要急着编译。先检查一下 agconnect-services.json 是否包含 client 信息,并且 client 的包名是否与本工程 Bundle ID 一致。我第一次同步工程时,就是忘了核对包名,初始化后厂商通道注册不生效,排查了两小时才发现是这个低级错误。

3. 核心集成实操与代码实现

3.1 SDK 初始化与推送注册

极光 SDK 的初始化,在 HarmonyOS 上推荐在 EntryAbility 的onCreate生命周期里完成。这个时机的选择很关键:太早,可能页面还没准备好处理回调;太晚,厂商通道注册会被延迟,导致用户打开应用后收不到消息。

初始化示例代码如下:

import { JPushInterface } from 'cn.jiguang.sdk.jpush'; export default class EntryAbility extends UIAbility { onCreate(want, launchParam) { // 建议先调用极光的隐私协议接口,再初始化 JPushInterface.setDebugMode(true); JPushInterface.init(this.context); } }

注意两点。第一,setDebugMode(true)只用于开发调试,会打印详细日志,但也会产生额外的性能开销,发布前务必要改成 false。第二,如果应用涉及隐私合规,需要在用户同意隐私政策之后再调用 init,否则某些审核场景会出问题。

极光的初始化接口会异步完成厂商通道的注册。注册成功的标识通常是收到一个 Registration ID,你可以主动调用获取接口:

let registrationId = JPushInterface.getRegistrationID(this.context);

拿到这个 ID,服务端推送时可以直接指定设备。它在调试阶段极光控制台能看到,但应用崩溃或卸载重装后,Registration ID 可能会变化,所以不要把它当作永久的用户标识存储。

3.2 系统通知权限与通知渠道

HarmonyOS 应用的通知权限,和 Android 一样是运行时敏感权限。应用首次启动后,你需要引导用户授权通知权限,否则消息只能静默到达,无法在通知栏展示。

在鸿蒙上申请通知权限的代码大致如下:

import { notificationManager } from '@kit.NotificationKit'; notificationManager.requestEnableNotification().then((data) => { console.info('通知权限结果: ' + JSON.stringify(data)); }).catch((err) => { console.error('通知权限申请失败: ' + JSON.stringify(err)); });

这里有个体验加分项:申请权限之前,先弹出一个自定义引导对话框,向用户解释“开启通知可以收到订单状态和优惠活动提醒”,再调用系统授权。直接违背用户预期地弹系统授权框,很容易被拒绝,而且用户一旦选择了“不允许”,后续再次引导的路径会比较深。

通知渠道也是值得提前设计的一环。HarmonyOS NEXT 对通知进行了分类管理,不同类型的消息建议使用不同的渠道 ID。极光 SDK 在鸿蒙上支持指定渠道展示消息,如果你不做特殊声明,消息会落到默认渠道。问题在于默认渠道的提醒方式可能不符合业务预期——比如营销消息和订单消息的提示音、震动模式应该不同。

我的建议是,在初始化之后,提前创建业务需要的通知渠道:

import { notificationManager } from '@kit.NotificationKit'; import { notificationSubscribe } from '@kit.NotificationKit'; let channel = { id: 'order_status', name: '订单通知', description: '订单状态变更提醒', sound: 'resource:///rawfile/notification_sound.mp3', enableVibration: true }; notificationManager.createNotificationChannel(channel).then(() => { console.info('通知渠道创建成功'); });

渠道 ID 一旦在系统层面创建,后续修改名称或声音不会生效,必须更换渠道 ID,或者引导用户卸载重装。所以渠道的命名和配置,上线之前一定要规划好。

3.3 服务端下发消息的 API 拼装

客户端环境就绪后,服务端要能成功下发消息,才能形成完整闭环。极光 REST API 的调用方式比较标准,核心是生成鉴权和构造 payload。

先看鉴权。需要基础认证,用户名是 AppKey,密码是 Master Secret。请求头示例:

Authorization: Basic base64(AppKey:MasterSecret) Content-Type: application/json

构造推送 payload 时,我习惯用如下结构:

{ "platform": ["harmonyos"], "audience": { "alias": ["user_1001"] }, "notification": { "title": "订单发货通知", "content": "您的订单已发货,请点击查看物流信息", "extra": { "page": "OrderDetailPage", "orderId": "20250115001" } }, "options": { "apns_production": false, "time_to_live": 86400 } }

几个关键字段的说明:

  • platform限定为["harmonyos"],避免其他平台误发。
  • audience.alias是推送目标,这是客户端在登录成功后将用户 ID 设置到极光里的别名。
  • notification.extra是自定义字段,客户端点击通知后,可以从这里读取业务参数决定跳转路径。
  • options.time_to_live是消息离线保留时间,超过时间用户未上线,消息就不再下发。对时效性强的通知,建议设成 300 秒;普通营销消息可以放宽到 24 小时。

服务端发完之后,极光会返回一个推送任务 ID:

{ "msg_id": "1818181818181818" }

保留这个 ID,如果用户反馈收不到消息,你可以拿它在极光控制台查询推送明细,定位是“发送成功但未到达”还是“到达了但展示失败”。

3.4 客户端消息回调与点击跳转

收到推送后,极光 SDK 会回调消息到达事件。在 HarmonyOS 端,你需要注册监听器,或者按照极光文档实现对应的回调接口。消息到达通常会提供下面几个关键信息:

  • 消息标题与内容
  • 自定义 extra 字段
  • 消息 ID

回调示例:

JPushInterface.addMessageCallback(this.context, (message) => { let title = message.title; let content = message.content; let extra = JSON.parse(message.extra); let page = extra.page; });

另一种场景是用户点击通知栏的消息。点击回调需要处理跳转逻辑,比如带参启动一个页面,或者切换到某个 Tab。我实现时是按如下方式处理的:

JPushInterface.addNotificationOpenCallback(this.context, (message) => { let extra = JSON.parse(message.extra); if (extra.page === 'OrderDetailPage') { // 跳转到订单详情页并传参 router.pushUrl({ url: 'pages/OrderDetailPage', params: { orderId: extra.orderId } }); } });

注意,回调里做页面跳转,必须确认页面栈处于可用状态。如果用户在应用未启动时点击通知,此时拉起的是冷启动流程,页面栈为空,直接用 router.pushUrl 可能报错。稳妥的做法是,把要跳转的目标存到一个全局变量里,等待首页onPageShow后再执行跳转。

消息回执上报也是容易忽略的环节。极光 SDK 默认会向服务端上报“送达”和“点击”事件,但如果你在初始化时设置了关闭上报,控制台所有消息都会显示“发送成功”,点击率无从统计。建议保持默认开启,这在后期优化推送文案时是重要的决策依据。

4. 常见问题与排查技巧实录

4.1 SDK 版本与系统兼容性排查

HarmonyOS 系统版本迭代很快,SDK 的适配也有滞后。实际集成中,最常碰到的报错是版本不适配导致的编译失败或运行异常。我遇到过几次,规律基本一致:极光 SDK 发布新版本时,通常会对齐最新的 API 接口,旧工程如果升级了 DevEco Studio,但没升级极光 SDK,就可能出现找不到某个类或方法的情况。

排查这类问题,先确认一套版本基线:

  • DevEco Studio 版本与 targetSdkVersion 是否匹配
  • 极光 SDK 最新版本支持的最低系统版本是否低于你的 minSdkVersion
  • agconnect-services.json 是否与当前 AGC 工程匹配

我踩过最典型的一个坑是,本地工程里极光 SDK 版本号是 3.2.0,但它的 README 写的是适配 API 12,而工程实际编译环境是 API 11,初始化时厂商通道注册直接抛异常。解决办法很简单,把 SDK 升级到支持 API 11 的旧版本,或者把工程升级到 API 12。升级工程涉及的改动较多,我当时选择了降级 SDK 版本。

这里给一个通用建议:不要盲目追新版本。在极光的版本发布说明里,看清楚最新的版本变更和你当前工程的兼容性,再做升级动作。生产环境的稳定优先于功能的新鲜。

4.2 真机收不到推送的逐层排查路径

真机收不到推送是最消耗耐心的问题。我的排查顺序是固定的,从外到内逐层收敛。

第一层,确认消息是否真的下发到了极光服务端。在极光控制台的“推送历史”里查一下任务状态,如果显示“发送失败”,基本是服务端参数问题,检查鉴权、audience 格式和 platform 配置。

第二层,确认设备是否成功注册了厂商通道。这一步可以在极光控制台的“用户列表”或“设备详情”里看 Registration ID 是否正常生成,华为厂商通道的绑定状态是否是“已绑定”。如果是“未绑定”,问题大概率出在 agconnect-services.json 包名不一致,或者极光控制台厂商通道参数配错。

第三层,确认手机系统通知权限是否被关闭。HarmonyOS 的“设置-通知”里,应用的通知权限和应用频道通知权限是分开的,即使应用权限开了,特定渠道也可能被用户静音或关掉。测试时最容易误判的就是这一点,以为应用权限开了就能收到,其实通知渠道权限还关着。

第四层,确认消息是否到达设备但没有展示通知。此时在极光控制台看消息回执,如果“到达”是成功,但通知栏没有出现,重点查客户端是否在前台拦截了通知展示,或者极光 SDK 在初始化时被配置成了静默模式。前台收到消息时,部分推送策略会默认不弹通知,改成在应用内提示,如果你没有做前台监听处理,用户就会感觉消息消失了。

一套流程走下来,80% 的“收不到消息”问题都能定位到具体环节。剩下 20% 属于系统级延迟,尤其是设备长时间息屏后,厂商通道的省电策略会导致消息延迟到达几分钟甚至更长,这类情况不是代码能解决的,和用户沟通清楚就行。

4.3 测试模式与正式环境的隔离经验

推送调试有个经典问题:测试环境把正式用户的消息也发了出去。极光控制台有“测试模式”和“预览模式”功能,务必搞清楚它的边界。测试模式通常只对测试设备生效,优先级是匹配设备白名单或测试标签,不会影响真实用户。

我习惯在极光控制台创建两个应用,一个叫“app-dev”,一个叫“app-prod”,分别对应测试和正式环境。客户端通过构建配置区分 AppKey,服务端通过环境变量区分 Master Secret。这个方案的缺点是治理成本略高,需要维护两套配置,但胜在环境完全隔离,不会误伤真实用户。

测试阶段还有一个细节,就是启用极光 SDK 的调试日志。调试日志能清晰看到每一步初始化结果:AppKey 是否有效、厂商通道是否绑定成功、消息是走厂商通道还是极光自有通道。等验证完成,发布前关闭调试日志,同时把极光控制台的正式推送开关检查一遍——部分版本的控制台有“测试环境推送/生产环境推送”的独立开关,千万别在生产环境开关未打开的情况下验证正式消息。

4.4 通知点击无响应与页面栈处理

通知点击事件回调之后,跳转页面无反应,是另一个高频问题。排除业务代码 bug 后,十有八九是页面栈状态不对。

鸿蒙的单实例应用冷启动和热启动场景不同。冷启动时,主页面还在加载,你立刻 push 另一个页面,可能因为路由表还没就绪而失败。我的处理方案是做一个延迟跳转的封装:

let pendingPage = null; function handleNotificationClick(message) { pendingPage = extra.page; if (isAppReady) { navigateToPendingPage(); } } function onPageShow() { if (pendingPage) { navigateToPendingPage(); pendingPage = null; } }

等到主页面的onPageShow生命周期触发后再执行跳转,就不会碰上页面栈未就绪的尴尬。跳转时还要注意,如果目标页面已经在栈中,使用pushUrl可能会创建多个实例,推荐根据业务场景选择replaceUrl或先查询路由栈再决定跳转方式。

另外一个容易被忽略的细节是,extra 字段传到客户端后是字符串类型。如果长时间用JSON.parse失败却只 catch 到不处理,点击回调就会异常,应用甚至崩溃。建议在解析 extra 的地方加一层 try-catch,解析失败时打日志并走默认页面的兜底逻辑,避免推送内容格式问题把主流程打挂。

5. 更深一层的运营策略与数据闭环

推送模块上线不代表结束,真正拉开差距的是数据闭环和人群策略。极光控制台自带的数据看板,能解构出到达率、点击率、卸载率。我会定期拉取这些数据,根据点击率反推推送文案和发送时段的优劣。

5.1 用户分群与别名体系设计

极光的 audience 模型支持 tag、alias、segment 等定向能力。实现前,先在服务端梳理用户标签体系。一个常见的做法是,在用户登录后,服务端把用户的基础属性同步到极光,包括用户 ID、会员等级、偏好类目等。

客户端在登录成功后,调用设置别名和标签的接口:

JPushInterface.setAlias(this.context, userUid); JPushInterface.addTags(this.context, ["vip", "fashion"]);

注意,别名和标签的设置是异步操作,且频繁调用会有频率限制。我建议把登录、登出、资料变更这三个时机作为设置入口,不要在每次拉取用户信息时都调用。否则大量无效请求堆积,既影响性能,也容易触发极光的风控。

5.2 推送时机与频控策略

推送运营上有一个容易被忽略的指标:因推送导致的卸载率上升。无节制的全量推送,短期内点击率虽好,但长期来看用户反感度会上升。极光支持频控控制,在服务端做统一限制比较合理:

  • 每用户每天最多接收营销推送不超过 2 条
  • 交易类通知不受频控限制,但同一订单的重复通知需要做幂等
  • 夜间时段(22:00-次日 8:00)默认不发送营销消息

这层逻辑不应依赖客户端,因为卸载或清后台后,客户端约束就失效了。服务端做硬性限制,才能保证策略的真正落地。我在服务端用 Redis 记录每个用户的推送记录,过期时间 24 小时,推送前检查计数器,超过阈值直接拒绝调用极光 API。

5.3 回执数据的二次加工

极光返回的回执数据是原始日志,真正对业务有价值的是二次加工后的结果。比如将回执数据落到数仓,和用户订单状态表关联,可以分析“推送后多少用户完成了下单转化”;和访问日志关联,可以评估不同文案、不同素材的 ROI。

这些场景极光控制台原生看板覆盖不到,需要你在服务端开通消息回执的回传接口。极光支持将送达和点击事件同步到你的回调地址,格式是标准 JSON。我在接入时简单过滤了 test 环境的数据,只保留 production 环境的真实用户数据,再按照小时粒度聚合成明细表,方便业务团队自助取数。

如果团队数据能力有限,暂时不用做太重的事情。先保证每个推送任务都有唯一的 msgId,并且在点击回调里上报自定义业务参数,后续做任何分析都有确定的数据基础。前期欠下数据债,后期只能拿业务效果不好来偿还,这个坑就别踩了。

6. 上线前的自检清单与优化建议

最后整理一份我在每次发布前都会过一遍的自检清单。按照逐项打勾的方式执行,能显著降低上线后出问题的概率。

  • AppKey 环境是否为正式环境,Master Secret 是否仅保存在服务端且无泄漏
  • 极光 SDK 的 debug 模式已关闭,日志输出等级已调低
  • agconnect-services.json 是否来自正式 AGC 应用,包名是否一致
  • 通知权限引导流程是否在用户同意隐私弹窗后才触发
  • 通知渠道 ID 是否已全部规划完成,且名称和声音符合品牌要求
  • 服务端推送 payload 是否配置了 time_to_live 和可选的消息优先级
  • 厂商通道推送开关是否已开启,测试设备和正式设备是否分离
  • 冷启动点击通知的跳转逻辑是否已验证通过
  • 回执上报是否开启,回调地址是否能正常接收极光发送的数据

这些条目看起来零散,但每一条背后都是真实线上事故换来的教训。我不止一次见过因为 Master Secret 误放到客户端,导致被恶意调用刷消息的案例;也见过包名不一致导致厂商通道注册失败,用户投诉“刚安装的 App 收不到验证码”的严重事故。推送链路看似简单,任何一个环节错位,用户侧的体感就是“这个 App 有问题”。

除此之外,有两个小的优化建议值得提一下。

第一个是推送消息优先走通知渠道管理,而不是直接发送纯文本。提前规划系统通知渠道,相当于把用户体验的主动权握在自己手里,而不是让系统给每个消息创建默认渠道。

第二个是建议团队里固定一个人作为推送配置负责人。极光控制台、AGC 控制台的配置变更入口较多,权限分散的话,隔几个月就没人记得哪个开关在哪个控制台了。固定负责人之后,至少能保证变更有记录、配置有文档,排查问题的时候能少走弯路。

从集成到上线,整个 HarmonyOS 接入极光推送的过程,我最大的体会是:不要被“推送 SDK 集成”这几个字迷惑,以为加个依赖调个 init 就算完事。真正的工程难点,在厂商通道配置的一致性、消息数据链路的设计、以及点击跳转这类交互细节。把这些环节全部打通之后,后续的推送运营才有可靠的基座。希望这篇文章能帮你把踩坑的时间省下来,把精力放在更值得做的业务优化上。

返回列表