乐趣区

关于android:手把手教你接入快应用Push

越来越多的 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

开发步骤

  1. 调用 push.getProvider 接口判断以后设施是否反对华为 PUSH 服务,接口返回 huawei 示意反对,否则示意不反对。后续 Push 其余接口调用必须在设施反对 PUSH 服务的前提进行。

    1. 调用 push.subscribe 接口获取 regId。regId 也被称为 token 或 push token,是用于发送 push 音讯的标识。

      留神:以上接口举荐在全局 app.ux 中调用。

示例代码如下:

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");
                }
            })
        },
  1. 将 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 服务能够精确把音讯发送到正确的手机和利用上。手机上接管告诉栏音讯须要满足如下条件之一:

  1. 在桌面有快捷方式的快利用
  2. 退出“我的快利用”的快利用
  3. 有应用记录的快利用
  4. 快利用处于运行状态

目前能够通过上面两种形式来发送 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
作者:鼓楼赵又廷

退出移动版