【FAQ】HarmonyOS SDK 闭源开放能力 — Push Kit

news/2025/11/7 16:30:16/文章来源:https://www.cnblogs.com/HarmonyOSSDK/p/19200126

1.问题描述:

Push token什么场景下会发生变化?

解决方案:

下列场景Push Token会发生变化:

  • 卸载应用后重新安装。

  • 设备恢复出厂设置。

  • 应用显式调用deleteToken()接口后重新调用getToken()接口。

  • 应用显式调用deleteAAID()接口后重新调用getToken()接口。

  • 将设备(仅涉及Wearable设备)拿到海外其他国家或者地区后,系统会更新设备的Token。更新后的Token通过pushService.on('tokenUpdate')接口的回调返回。

因此,建议在应用启动时调用getToken()接口,若设备的PushToken发生变化,及时上报到应用服务器更新PushToken。

以下是参考示例代码:

// 导入pushService模块及相关公共模块import { pushService } from '@kit.PushKit';import { hilog } from '@kit.PerformanceAnalysisKit';import { BusinessError } from '@kit.BasicServicesKit';// 建议在UIAbility(例如EntryAbility)的onCreate()方法中调用getToken()接口获取PushToken并上报到服务端,方便服务端向终端推送消息。try {pushService.getToken().then((data: string) => {hilog.info(0x0000, 'testTag', 'Succeeded in getting push token.');}).catch((err: BusinessError) => {hilog.error(0x0000, 'testTag', 'Failed to get push token: %{public}d %{public}s', err.code, err.message);});} catch (err) {let e: BusinessError = err as BusinessError;hilog.error(0x0000, 'testTag', 'Failed to get push token: %{public}d %{public}s', e.code, e.message);}

2.问题描述:

推送卡片消息需要后台根据卡片页面绑定的字段处理好数据后调用推送服务,如果后台只能传递需要的参数参数,需要卡片里根据参数使用网络请求获取更多数据后刷新到卡片页面上,如何实现?

解决方案:

【背景知识】

  • 推送卡片刷新消息:面对需要实时更新信息的应用卡片,Push Kit向开发者提供了卡片刷新服务。应用通过集成Push Kit后获取Push Token,基于Push Kit的系统级通道,便可以在合适场景向用户即时推送卡片内容,从而提升用户的感知度和活跃度。

  • message事件:可以使用message拉起FormExtensionAbility,通过onFormEvent接口回调通知,以完成点击卡片控件后传递消息给应用的功能。

  • postCardAction:在卡片页面中可以通过postCardAction接口触发事件拉起UIAbility,然后由UIAbility刷新卡片内容。

【解决方案】

  1. 按照开发步骤进行卡片和推送消息的开发。不同之处在于推送消息体中传递的字段换成需要的参数:

{"payload": {"moduleName": "entry","abilityName": "EntryFormAbility","formName": "widget","formId": 42***62,"version": 12**56,"formData": {"query_key": "123****45"}},"target": {"token": ["MAMzLg**********lPW"]},"pushOptions": {"testMessage": true}}
  1. 在卡片页面使用@LocalStorageProp修饰formData中传递的参数,并使用@watch监听。

@Watch('refresh') @LocalStorageProp('query_key') queryKey: number = -1;
  1. 当参数变化时使用postCardAction向发送message事件拉起UIAbility,传递参数。

refresh() {postCardAction(this, {action: 'message',params: {queryKey: this.queryKey}});}
  1. 在FormExtensionAbility的onFormEvent生命周期中使用网络请求获取到需要的信息,组装数据后调用updateForm接口刷新卡片内容。

注意事项:此方式需要保证onFormEvent在10秒内能处理完业务,请参考卡片生命周期管理。若无法保证onFormEvent在10秒内能处理完业务,请在后台处理完数据后再推送消息,请参考推送卡片刷新消息。

3.问题描述:

App按照文档设置了自定义铃声:申请自定义铃声权益和通知消息自定义铃声实现,铃声持续时间半分钟以上。当收到通知,铃声开始响,但是点击收到的通知打开App后,铃声依旧在播放。

解决方案:

可以在打开应用时,对当前应用的消息通知做清除操作,示例代码如下:


import { BusinessError } from '@kit.BasicServicesKit';export default class EntryAbility extends UIAbility {onForeground(): void {// Ability has brought to foregroundhilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');let cancelAllCallback = (err: BusinessError): void => {if (err) {console.error(`Failed to cancel all notification. Code is ${err.code}, message is ${err.message}`);} else {console.info(`Succeeded in canceling all notification.`);}}notificationManager.cancelAll(cancelAllCallback);}}

4.问题描述:

生命周期onCreate()或者onNewWant()里want中的uri是HarmonyOS自动生成的吗?

解决方案:

生命周期onCreate()或者onNewWant()里want中的uri为统一资源标识符,一般在应用启动场景中配合type使用,指明待处理的数据类型。如果在拉起方的Want中指定了uri,则Want将匹配指定的Uri信息,包括scheme、schemeSpecificPart、authority和path信息, 生命周期onCreate()或者onNewWant()里want中的uri为起方的Want中传递的uri,不传则默认为空字符串。例外:通过push kit拉起的场景下拉起方不是使用的want的方式,系统自动给uri赋值为"abilityEvent:clickAlertMessage"。

5.问题描述:

要实现App进入后台或App杀死后收到推送消息,是否要必须接入推送通知扩展消息并申请推送通知扩展消息权益?

解决方案:

设备处于离线状态,即关机或者无网络状态,和App是否处于进程中没有关联。

如果设备有网络连接,无论App是否处于进程中,都可以收到推送消息。

如果设备已经处于离线状态,开发者可以通过请求体中ttl参数控制消息在Push服务器缓存的时间,在消息缓存时间内用户设备上线,消息会下发,超过缓存时间后消息会丢弃。

6.问题描述:

用户反馈收到通知都是时好时坏,有大概率根本收不到push。

解决方案:

【背景知识】

  • Push Kit(推送服务):华为提供的消息推送平台,建立了从云端到终端的消息推送通道。

  • 申请推送场景化消息权益:Push Kit支持多种场景化消息类型,其中部分场景化消息类型需要开发者申请特殊权益才能正常发送。

  • 请求通知授权:应用需要获取用户授权才能发送通知。

  • 开发消息回执:消息回执是指Push Kit服务端将消息推送到用户终端之后,端侧会给Push服务端反馈送达结果。与此同时,Push服务端会将消息送达状态以回执消息形式发送给应用回执服务端,方便开发者获取消息下达端侧后的状态,定位问题等。

  • 发送消息通知:通知消息通过Push Kit通道直接下发,可在终端设备的通知中心、锁屏、横幅等展示,用户点击后拉起应用。

【问题定位】

用户收到了消息:

  • 检查是否是静默通知。

  • 检查是否手动关闭了消息提醒方式。

用户未收到消息:

  • 检查Push token是否正确。

  • 检查Authorization请求体是否错误。

  • 检查是否推送后台消息场景。

  • 检查设备是否离线。

  • 检查自分类权益是否已申请,是否开启状态。

  • 检查是否受到消息频控。

  • 检查配置文件是否配置错误。

【分析结论】

  • 资讯营销类消息的通知方式是静默通知,仅在通知中心展示消息。

  • 服务与通讯类消息的通知方式默认是锁屏、铃声、振动,用户手动关闭锁屏、铃声、振动,导致未收到提示。

  • 消息推送参数配置错误、被频控等情况下会导致消息推送失败。

【修改建议】

  • 当收到资讯营销类消息时,由于静默通知仅在通知中心展示,并不会弹框提示,需要去通知中心查看。通知中心如下图,可以查看对应消息。

  • 若终端上的app手动关闭了消息提醒方式,终端收到消息不会有提醒,需要打开所需的提醒方式。

  • 打开AGC平台,选择我的项目,然后选择推送服务,在自主分析里面,输入requestId和token,系统会自动分析消息推送失败的可能原因。

    也可能是Push token不是最新的token,建议通过getToken()方法获得Push token后,第一时间推送到服务端。

  • 检查服务端发送请求时是否正确携带Authorization请求头,value为JWT格式字符串,是基于服务账号生成鉴权令牌。可参考:请求体结构说明。

  • 推送后台消息用于内容不频繁更新的场景,不会显示通知、播放铃声或改变应用角标。终端设备接收到后台消息后,如果应用进程在前台则将消息内容传给应用;如果应用进程不在前台则缓存消息,等待应用启动后再传给应用。

  • 如果设备离线,Push Kit会缓存消息,待设备上线后,再将消息推送给设备。

  • 检查自分类权益是否已申请,并且打开自分类权益开关,请参考:申请推送场景化消息权益。

  • 检查是否受到消息频控。

    *调测阶段:每个项目每个自然日最多可推送1000条测试消息(非设备级,所有设备共用1000条),且不受场景化消息频控限制(即不区分通知消息类别、不区分场景化消息类别)。可以在消息发送请求体中设置pushOptions.testMessage为true,发送测试消息。

    • 正式发布阶段:单设备单应用下每个自然日最多可推送3000条消息,并受场景化消息频控限制。
  • 检查module.json5中skills配置是否正确。

    • 应用只需要配置一条skill对象。

      设置action参数点击消息进入应用页面(若skills中添加了uris参数,则uris内容需为空

    
    {"actions": ["com.test.action"]}

    设置uris参数点击消息进入应用页面(skills中必须同时设置actions参数,actions参数需为空

    
    {"actions": [""],"uris": [{"scheme": "https","host": "www.xxx.com","port": "8080","path": "push/test"}]}
    • 应用需要配置多条skill对象。

      比如同时设置推送消息跳转能力和其他跳转能力(如NFC跳转、浏览器跳转等),可以在skills数组中创建不同的skill对象,分别映射对应的能力。


{"name": "TestAbility","srcEntry": "./ets/abilities/TestAbility.ets","exported": false,"startWindowIcon": "$media:icon","startWindowBackground": "$color:start_window_background","skills": [// 保持现有skill对象不变{"actions": ["com.app.action"]},// 新增一个独立的skill对象,配置uris参数,且必须同时配置actions参数,actions参数为空字符串{"actions": [""],"uris": [{"scheme": "https","host": "www.xxx.com","port": "8080","path": "push/test"}]},{// 分享"actions": ["ohos.want.action.sendData"],"uris": [{"scheme": "file","type": "text/plain"}]}]}

【总结】

Push Kit消息下发成功后,可能会因为消息频控、通知开关未打开等原因,导致端侧消息未展示。通常可以从消息通知是否打开、消息分类权益是否申请、配置文件中skills标签是否正确这几个方面进行排查。同时,建议开发消息回执,Push服务端会将消息送达状态以回执消息形式发送给应用回执服务端,方便获取消息下达端的状态,通过回执状态码定位问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958964.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月展厅设计厂家推荐排行榜,企业展厅定制,科技展馆设计,全屋定制展厅,数字化多媒体展厅,人工智能展台设计公司推荐

在数字化浪潮席卷各行各业的今天,企业展厅已不再仅仅是产品陈列的空间,而是品牌形象展示、技术实力彰显和客户体验优化的重要载体。随着人工智能、大数据和多媒体技术的快速发展,展厅设计行业正经历着深刻的变革,从…

2025 年 11 月全自动加袋机厂家推荐排行榜,FFS/25公斤/吨袋/吨包全自动上袋机,肥料/铜精粉全自动吨袋上袋机,无锡江苏全自动吨包上袋机公司推荐

行业背景与发展趋势随着工业自动化进程的加速推进,全自动加袋机作为现代包装生产线的重要设备,在化工、肥料、矿产等多个领域发挥着关键作用。特别是在FFS(制袋-灌装-封口)全自动上袋机、25公斤/吨袋/吨包全自动上…

2025 年 11 月开窗器厂家推荐排行榜,链条开窗器,机芯开窗器,配件开窗器,优质开窗器公司推荐

行业背景与发展趋势随着建筑智能化水平的不断提升,开窗器作为建筑通风系统的重要组成部分,正迎来新一轮技术革新与市场增长。现代建筑对开窗器的要求已不仅限于基本功能,更注重产品的可靠性、耐久性和智能化程度。链…

2025 年 11 月包装机厂家推荐排行榜,全自动/定量/FFS/25公斤/粉料/颗粒料/肥料/树脂/抽真空/底充式/锂电/零排放/吨袋包装机公司推荐

行业背景与发展趋势随着工业自动化水平的不断提升,包装机械行业正经历着深刻的技术变革。特别是在化工、肥料、锂电材料等细分领域,对全自动包装设备的需求呈现出快速增长态势。包装机械作为工业生产的重要环节,其技…

2025 年 11 月码垛机厂家推荐排行榜,全自动码垛机,高位码垛机,低位码垛机,立柱码垛机,编织袋码垛机,纸箱码垛机,桶码垛机,粉料码垛机,肥料码垛机公司推荐

一、行业技术发展现状随着工业4.0时代的深入推进,码垛机作为现代制造业自动化升级的关键设备,正经历着技术革新的重要阶段。从传统的机械式码垛到如今的智能机器人码垛,码垛技术已经实现了质的飞跃。特别是在全自动…

2025 年 11 月包装称厂家推荐排行榜,全自动/定量/FFS重膜/高速/锂电/零排放/螺旋/吨袋包装称,铜精粉/肥料吨包包装称公司精选

一、行业背景与发展趋势随着工业自动化水平的不断提升,包装称作为生产线上的关键设备,在化工、锂电、矿产、肥料等行业中扮演着越来越重要的角色。全自动包装称、定量包装称、FFS重膜包装称、高速包装称、锂电专用包…

gxyz圣经

已完成今日还有这里我必须严肃评价一下我们机房的状态了老师把A和B赶了出去说A和B学习习惯不好但实际情况是什么呢只有A和B从来不玩游戏还有没有来和zr联考的C和D我们把他和zr联考中公认的E进行一个对比心态C不在明显比…

2025年11月电线电缆厂家推荐排行榜:国标铜芯电缆专业选购指南

电线电缆作为电力传输的重要载体,其质量直接影响着电力系统的安全稳定运行。随着我国基础设施建设的持续推进,电线电缆行业在技术创新、产品研发等方面取得了显著进步。特别是在国标铜芯电缆、工程用电缆、地铁专用电…

2025 年 11 月潜水泵厂家推荐排行榜,新型潜水泵,节能潜水泵,低噪声潜水泵,超低压潜水泵,防爆潜水泵,高压潜水泵,防腐潜水泵,SF潜水泵,SFB潜水泵,WF屋顶潜水泵公司推荐

行业背景与发展趋势随着我国工业化进程的加速和城乡基础设施建设的持续推进,潜水泵作为重要的流体输送设备,在农业灌溉、市政供水、工业循环、建筑排水等领域的应用日益广泛。特别是在新型城镇化建设和乡村振兴战略的…

涡街流量计温度数据的协议桥梁:ModbusRTU转Profinet网关的自动化应用

涡街流量计温度数据的协议桥梁:ModbusRTU转Profinet网关的自动化应用 在化工管道流量监测系统中,涡街流量计作为常用的流量测量设备,广泛采用ModbusRTU协议(RS485总线)输出流量、温度等参数。而现代工业控制系统多…

git 添加大文件

git 添加大文件克隆项目git clone git@code.test.com/test/test.git 安装并初始化Git LFScd test # 在当前仓库初始化 LFS(仅需执行一次) git lfs install跟踪大文件(或文件类型) 必须先跟踪,再添加,否则 Git 会…

2025 年黄锈石源头厂家最新推荐排行榜:自有矿山 + 智能加工 + 全链服务,高性价比采购指南黄锈石外墙干挂石材/黄锈石异型石材/黄锈石光面厂家推荐

引言 当前黄锈石市场呈现 “新旧品牌交织、品质层次分化” 的格局,采购方常陷入多重困境:部分老牌厂家固守传统工艺,难以满足异形定制、智能品控等新需求;而新兴品牌中又混杂资质不足者,存在原料不稳定、售后无保…

热铆的工作原理及清洁保养

组成工作流程 图中,蓝色箭头是用于冷却(降低压头温度)和提供正压环境(防止烟雾进入内部)的压缩空气。 红色箭头是红外光。 1.压紧固定 将模块定位在成型立柱上方。集中器的端面会直接在铆接点处压紧零件。2.加热 …

第一周--3:使用远程终端登录系统(ubuntu和rocky),并且总结linux系统基础命令

1、使用mobaxtrem登录Rocky9-12 默认Rocky9已经打开了ssh登录2、linux命令 用户: id、whoami 信息: pwd、ls、cat、tree2-1:Rocky9 没有tree的命令,我们需要yum install tree -y 去下载3、文件: 创建:mkdir、tou…

2025 年 11 月 EVA 厂家推荐排行榜:EVA发泡胶、板材、卷材、片材与特种EVA企业权威指南

行业背景与发展趋势乙烯-醋酸乙烯共聚物(EVA)材料作为一种重要的高分子材料,近年来在工业制造、消费品、建筑装饰等领域的应用持续扩大。随着环保要求的提高和终端产品功能的多样化,EVA发泡胶、EVA板材、EVA卷材、…

2025年聚硅氧烷漆批发厂家权威推荐榜单:聚硅氮烷漆/防腐油漆厂家/工业防腐漆源头厂家精选

在工业防护领域,聚硅氧烷漆以其卓越的耐候性和防腐蚀性能,正成为大型工程项目涂料选择的关键。一份权威的批发厂家榜单能为采购决策提供重要参考。 聚硅氧烷漆作为一种工业保护和维护涂料,因其硅-氧骨架结构比有机聚…

2025 年 11 月灭虫药剂厂家推荐排行榜,扑灭司林,苯甲酸苄酯,胺氯菊百灭宁,疥螨阴虱科灭达专用高效配方源头供应

行业背景与发展现状随着公共卫生意识的提升和医疗需求的增长,灭虫药剂行业正迎来新一轮技术革新与市场扩容。作为特种化工与医药交叉领域的重要组成部分,扑灭司林、苯甲酸苄酯、胺氯菊百灭宁等高效杀虫药剂在疥螨、阴…

[Python刷题记录]-找到字符串中所有字母异位词-滑动窗口-中等

[Python刷题记录]-找到字符串中所有字母异位词-滑动窗口-中等链接:438. 找到字符串中所有字母异位词 - 力扣(LeetCode) python里可以用==来判断list是否相等,list初始化定义可以用[0]*26 每往后一格,记录s串的lis…

2025年11月电缆厂家推荐排行榜:权威解析国标/国网入围/南网入围电缆企业综合实力

行业背景与发展现状电线电缆作为国民经济建设的"血管"和"神经",在电力传输、信息传递等领域发挥着不可替代的作用。随着新能源、智能制造等新兴产业的快速发展,市场对高品质电缆产品的需求持续增…

2025 年 11 月铝材厂家推荐排行榜,1060/1070导电铝排,6061/6063/6082/2A12/5A06/7075铝棒,5083/2A14/5052/7050铝板公司推荐

2025年11月铝材厂家推荐排行榜:专业解析1060/1070导电铝排至7050铝板优质供应商 行业背景与市场格局分析 铝材作为现代工业的基础材料,其应用范围从传统的建筑装饰延伸到航空航天、新能源汽车、电子通讯等高精尖领域…