【FAQ】HarmonyOS SDK 闭源开放能力 —Push Kit(5)
1.问题描述:
怎么判断EntryAbility是通过push拉起的?
解决方案:
{“_push_notifyid”:12345,“debugApp”:false,“isCallBySCB”:false,“moduleName”:“entry”,“ohos.aafwk.param.callerAbilityName”:“PushServiceInnerAbility”,“ohos.aafwk.param.callerBundleName”:“com.huawei.hms.pushservice”,“ohos.aafwk.param.callerPid”:18049,“ohos.aafwk.param.callerToken”:537833925,“ohos.aafwk.param.callerUid”:20004,“ohos.dlp.params.sandbox”:false,“send_to_erms_targetAppDistType”:“none”,“send_to_erms_targetAppProvisionType”:“debug”,“send_to_erms_targetBundleType”:0}
里面的callerBundleName是com.huawei.hms.pushservice,只有推送消息才有。
Notification发送的结果是下面这样:
{“component.startup.newRules”:true,“isCallBySCB”:false,“moduleName”:“entry”,“ohos.aafwk.param.callerAbilityName”:“”,“ohos.aafwk.param.callerBundleName”:“com.ohos.sceneboard”,“ohos.aafwk.param.callerPid”:2613,“ohos.aafwk.param.callerToken”:537515597,“ohos.aafwk.param.callerUid”:20020021,“ohos.ability.launch.reason”:1,“send_to_erms_targetAppDistType”:“none”,“send_to_erms_targetAppProvisionType”:“debug”,“send_to_erms_targetBundleType”:0,“specifyTokenId”:536931207}
请使用want里面的callerBundleName==com.huawei.hms.pushservice来判断是否是push下发的消息。
2.问题描述:
现在的鸿蒙推送根据文档来看没有合适的设置data的地方,那么这种推送数据应该塞到哪里?
解决方案:
ClickAction支持传data数据。
参考链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/push-scenariozed-api-request-param-V5#section1152516418157
3.问题描述:
通过华为推送过来的普通消息会在桌面应用图片上显示未读的数字,正常应该是点了顶部通知栏的消息之后,通知栏的这条通知消失,同时图标上的未读数字也要减1,但是目前没有方式可以获取到这个未读消息的数量,也就无法通过setBadgeNumber()去重新设置图标上的未读数字,这个该怎么处理?
解决方案:
使用相关接口 notificationManager.getActiveNotificationCount
https://developer.huawei.com/consumer/cn/doc/harmonyos-references/js-apis-notificationmanager-0000001860296589#ZH-CN_TOPIC_0000001860296589__notificationmanagergetactivenotificationcount-1
4.问题描述:
鸿蒙push推送成功但是端上没展示,看系统日志应该到端上了,服务端也显示推送成功了。
解决方案:
被频控了,设置pushOptions的testMessage的参数为true,可发1000条信息,IM类不会被频控,具体可参考申请流程;链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/push-noti-classification-V5,通过之后可以使用。