越来越多的CP在AGC上上架了快利用之后,心愿吸引越多的用户,进步利用的活跃度,从而带来更多的流量,最终实现他们的商业价值。快利用提供了规范的Push能力,开发者能够给用户推送音讯,比方推送一本好书、推送一个美食等,点击音讯能够拉起快利用。
实用场景
场景一:购物
商城类快利用通过接入Push,给用户推送心仪商品的提价告诉。
- 场景二:浏览
浏览类的快利用通过接入Push,给用户举荐好书、章节更新等音讯,让用户第一工夫失去最新进展。
- 场景三: 美食
美食类快利用通过接入Push,给用户举荐好吃的货色、举荐好的餐馆,不便了用户,也给餐饮业带来了知名度和商业利益。
Push介绍
- 华为推送(Push)是为开发者提供的音讯推送平台,建设了从云端到手机端的音讯推送通道,让利用能够将最新信息及时告诉到用户,从而构筑良好的用户关系,晋升用户的感知和活跃度。
- 快利用Push性能在EMUI8.0及以上版本的手机上反对。
- 发送PUSH音讯的流程如下图所示:
Push接口介绍:
模块名:service.push
模块引入:import push from '@service.push' 或 var push = require("@service.push")
反对的接口:
开发筹备
硬件要求
- 一台计算机(须要装置好Quick App IDE)。
- 一部华为手机(带USB数据线),用于运行开发的应用程序,EMUI 8.0及以上。
软件要求
- PC上装置Node.js 10以上
- PC上装置Quick App IDE最新版本
其余要求
- 在华为开发者联盟申请PUSH服务,具体操作请参见:开明Push服务。
须要的知识点
- Javascript+css
开发步骤
调用 push.getProvider 接口判断以后设施是否反对华为PUSH服务,接口返回 huawei 示意反对,否则示意不反对。后续Push其余接口调用必须在设施反对PUSH服务的前提进行。
- 调用 push.subscribe 接口获取regId。regId也被称为token或push token,是用于发送push音讯的标识。
留神:以上接口举荐在全局app.ux中调用。
- 调用 push.subscribe 接口获取regId。regId也被称为token或push token,是用于发送push音讯的标识。
示例代码如下:
checkPushIsSupported(){ let provider= push.getProvider(); console.log("checkPush provider= "+provider); if(provider==='huawei'){ this.pushsubscribe(); } }, pushsubscribe() { console.log("pushsubscribe start"); var that=this; push.subscribe({ success: function (data) { console.log("push.subscribe succeeded, result data=" + JSON.stringify(data)); that.dataApp.pushtoken=data.regId; }, fail: function (data, code) { console.log("push.subscribe failed, result data=" + JSON.stringify(data) + ", code=" + code); }, complete: function () { console.log("push.subscribe completed"); } }) },
- 将2中获取到的regId通过快利用fetch接口上报到快利用本人的业务服务器,用于后续服务器向快利用发送push音讯。 regId个别状况下不会发生变化,不须要每次获取后都上报到服务器。
举荐做法:应用快利用storage接口本地存储regId,每次获取到regId时先和本地存储的比照,相等则不上报到业务服务器,不相等阐明发生变化了,须要上报到业务服务器。流程图如下图所示:
Push token与本地缓存比照的代码逻辑如下:
checkToken() { var subscribeToken=this.$app.$def.dataApp.pushtoken; console.log(“checkToken subscribeToken= ”+subscribeToken); var storage = require("@system.storage"); var that=this; storage.get({ key: 'token', success: function (data) { console.log("checkToken handling success data= "+data); if (subscribeToken != data) { //上报到本人的业务服务器 that.uploadToken(subscribeToken); that.saveToken(subscribeToken); } }, fail: function (data, code) { console.log("handling fail, code = " + code); } }) },
上传到开发者业务服务器示例代码如下:
uploadToken(subscribeToken) { console.log("uploadToken"); var that = this; var body = { xx: subscribeToken }; fetch.fetch({ url: 'https://xxx', method: 'POST', data: body, success: function (data) { console.log("uploadToken code: " + data.code); console.log("uploadToken data: " + data.data); }, fail: function (data, code) { console.log("handling fail, code = " + code); } }) },
注意事项:以上示例代码中的fetch接口调用中的参数须要替换业务本人的服务器地址。fetch接口更多内容请参考官网API fetch。
Pushtoken保留到本地代码如下:
saveToken(subscribeToken){ console.log("saveToken"); var storage = require("@system.storage"); storage.set({ key: 'token', value: subscribeToken, success: function (data) { console.log("saveToken handling success"); }, fail: function (data, code) { console.log("saveToken handling fail, code = " + code); } }) },
Push测试
客户端的开发流程曾经完结了,是不是很easy?接下来,怎么给手机上推送音讯测试呢?这个时候pushtoken就十分重要了,它是惟一标识设施的标记,有了它,push服务能够精确把音讯发送到正确的手机和利用上。手机上接管告诉栏音讯须要满足如下条件之一:
- 在桌面有快捷方式的快利用
- 退出“我的快利用”的快利用
- 有应用记录的快利用
- 快利用处于运行状态
目前能够通过上面两种形式来发送Push音讯:
- 在华为开发者联盟发送:实用选取局部指标用户发送,反对推送到现网的快利用(曾经在利用市场上上架)和加载器上运行的快利用。 具体操作步骤请参考官网https://developer.huawei.com/...
- 通过服务端接口发送:实用面向大批量用户发送,反对推送到现网的快利用和加载器上运行的快利用。服务端接口发送波及到accessToken接口和发送push音讯接口,接口协议格局请参考官网阐明。
1)首先拜访accessToken接口获取access_token, access_token在发送push音讯接口中须要应用到。
2)接着拜访发送push音讯接口,发送push音讯。Push告诉栏音讯体示例代码截图(js 代码)如下:
常见FAQ
Q1:push推送能够不填regid,进行所有用户推送吗?
不能够,推送是依据regid进行的,一个regid代表一个用户。
Q2:AGC上发送Push音讯时,填入token后又会隐没,如何解决?
填入token后,加上逗号完结即可。
Q3:服务端接口发送时,提醒token非法,什么起因呢?
请排查华为申请Push服务应用的包名、签名指纹是否与调试利用中的包名、签名指纹统一。
请排查pushtoken是否是华为快利用引擎返回的token。
Q4: 如何晓得推送的音讯是否达到用户手机上了呢?
- 在AGC上开明Push服务时,可填写回执url,回执后果中能够看到华为Push服务返回的推送状况。 例如,Push发送申请后果如下:
{"code":"80000000","msg":"Success","request_id":"159963843932289603004301"}
- 回执后果如下:
{"appid":"102580573","biTag":"d1c4b1c9cf624bfcb400e76da1446ad6","status":102,"timestamp":1599638444727,"token":"AMaY1irGfU2uV2LwcW65m9NgRc9MgMYLA9v_w2s-MhLtxceDiBHVUXXX9ifS2S14mYbvzqsQwLl9NTcF7R-DdBr_33x_V4BzVJFSrLwZjWWYfGz_AGQpWnkzLpeXellUzw"}
申请后果返回胜利,然而回执后果状态是102,实际上音讯并没有达到手机上,回执后果中“status”:102表明音讯被频控了。
欲了解更多详情,请参阅:
快利用开发领导文档:https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickapp-whitepaper
快利用Push接入:https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickapp-access-push-kit
原文链接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202381629952320300&fid=18
作者:鼓楼赵又廷