HarmonyOS 鸿蒙集成极光推送

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙集成极光推送

背景

近日公司要的项目开始了鸿蒙化改造,开发小组被拉进老板办公室,针对鸿蒙话改造中第三方推送sdk适配问题进行好地交谈,并且针对技术选型展开讨论,会议上老板要求我们通过找一款满足 :

多平台多通道支持消息类型样式丰富、推送个性化、有统计分析用户分析与设备分析、兼顾安全、快速构建、高效稳定的这样一款推送SDK,经过反复的找,认真的看最终选定使用极光推送SDK,它不仅完美的符合上述所有要求,而且功能强大的同时它还永久免费!

关于鸿蒙极光 :

极光推送(JPush)是一个端到端的推送服务,使得服务器端消息能够及时地推送到终端用户手机上,让开发者积极地保持与用户的连接,从而提高用户活跃度、提高应用的留存率。极光推送客户端支持 Android,iOS,HarmonyOS,QuickApp 多个平台。

本 HarmonyOS SDK 方便开发者基于 JPush 来快捷地为 HarmonyOS App 增加推送功能。

主要功能

保持与服务器的长连接,以便消息能够即时推送到达客户端

接收通知,并向开发者 App 传递相关信息

主要特点

客户端维持连接占用资源少、耗电低

SDK 丰富的接口,可定制通知栏提示样式

服务器大容量、稳定

老板听完一拍桌子就说今天下班前就要看到跟推送有关的东西集成到我们的应用中同时还要保证能跟业务进行关联,要让用户端跟订单状态实时同步。话音落下办公室一片寂静

哪怕是40度的天,也能看到组长听到消息后头上的冷汗直流,说道现在鸿蒙还不成熟,可能没有相应的sdk和使用文档一天根本做不好,再说公司没有鸿蒙开发人才贮备,根本不可能完成。

加钱!!!

老板的话音未落我立马甩出鸿蒙高级开发者认证的成绩来证明我的实力,把集成的任务直接揽下

在harmoneyOS中甚至可以做到15分钟极速对接,这速度真是恐怖如斯,接下来分享我集成极光推送的过程和经验

集成方式

集成压缩包下载链接:https://docs.jiguang.cn/jpush/resources

jpush-hmos-x.x.x-release.zip 集成压缩包内容

jpush-hmos-x.x.x-release.har

极光开发者服务的核心包。

doc文档

entry 是一个 hmos demo 项目,通过这个演示了 JPush SDK 的基本用法,可以做参考。

har 文件集成

解压缩 jpush-hmos-x.x.x-release.zip 集成压缩包。

复制 jpush-hmos-x.x.x-release.har 到你的工程的 entry/hars/ 目录下。(hars这个目录可以自定义)

说明:关联jpush-hmos-x.x.x-release.har,如,你复制 har 到 entry/hars/ 目录下,那么在 entry 模块下的 oh-package.json5 文件添加加

          

“dependencies”: {

    “jg_harmony_har”: “./hars/jpush-hmos-x.x.x-release.har” //这里的路径是你存放jpush-hmos-x.x.x-release.har的位置

}

        

client_id 配置

entry 模块下的 module.json5 文件配置。

说明:

在本地工程配置 client_id, 在 entry 模块下的 module.json5 文件添加

          

“module”: {

    “metadata”: [

        {

            “name”: “client_id”,

            “value”: “你的id”

        }

    ]

}

        

签署配置

在本地工程配置签署(如下图所示)

image1111.png

包名配置

在 AppScope 工程下的 app.json5 文件添加

          

{

  “app”: {

    “bundleName”: “你的包名”,

  }

}

        

appKey 配置

appKey 需代码配置,需要在 AbilityStage 内配置,需在 init 之前配置。

          

export default class MyAbilityStage extends AbilityStage {

  onCreate() {

    JPushInterface.setAppKey(“你的appKey”) //在init之前调用

  }

}

        

通知跳转页配置

entry 模块下的 module.json5 文件配置。

          

      {

      …

        “exported”: true,

        “skills”: [

          {

            “actions”: [""], //actions一定要配置,没有可以配置空字符串

            “uris”: [

              {

                “scheme”: “你的scheme”,

                “host”: “你的host”,

                “port”: “你的port”,

                “path”: “你的path”

              }

            ]

          }

        ]

      }

        

申请打开通知开关

在首页申请

          

export default class EntryAbility extends UIAbility {

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {

    notificationManager.requestEnableNotification().then(() => {

      hilog.info(0x0000, TAG, ‘%{public}s’, requestEnableNotification success);

    }).catch((err: Base.BusinessError) => {

      hilog.error(0x0000, TAG, ‘%{public}s’, requestEnableNotification failed, code is ${err.code}, message is ${err.message});

    });

  }

}

        

初始化推送服务

    •    在 init 之前要先设置 appKey

    •    在 init 之前要先设置接收回调信息类

          

export default class MyAbilityStage extends AbilityStage {

  onCreate() {

    JPushInterface.setCallBackMsg(继承CallBackMsg的实体类)//接收回调信息//在init之前调用

    JPushInterface.setAppKey(“你的appKey”)//在init之前调用

    JPushInterface.init(this.context.getApplicationContext())

  }

}

        

配置权限(可选)

可选,为了更精准推送,申请结束后再调用init初始化接口

配置文件权限声明

配置文件权限声明, 在 entry 模块下的 src/main/module.json5 文件添加

          

{

  “module”: {

    “requestPermissions”: [

      {

        “name”: “ohos.permission.APP_TRACKING_CONSENT”,

        “reason”: “$string:reason”,

        “usedScene”: {

          “abilities”: [

            “EntryAbility” //一般要用首页

          ],

          “when”: “always”

        }

      }

    ]

  }

}

        

向用户申请授权

向用户申请授权,在首页 EntryAbility 中申请,然后再初始化,如:

          

const permissions: Array<Permissions> = [‘ohos.permission.APP_TRACKING_CONSENT’];

export default class EntryAbility extends UIAbility {

  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {

    let context:Context = this.context;

    let atManager:abilityAccessCtrl.AtManager = abilityAccessCtrl.createAtManager();

    atManager.requestPermissionsFromUser(context, permissions).then((data: PermissionRequestResult) => {

      // 授权成功 //然后初始化

      JPushInterface.init(this.context.getApplicationContext())

    }).catch((err: BusinessError) => {

      //然后初始化

      JPushInterface.init(this.context.getApplicationContext())

    })

}

        

获取日志中的 registrationId,并在极光控制台 创建推送 体验推送服务,需要填写的内容如下所示:

极光平台鸿蒙配置

进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,选择【HarmonyOS】平台,填写包名、上传 服务密钥JSON文件,保存配置即可

image22222.png

数据都填充完之后,因为需要上传JSON文件,所以还需要额外进行配置,这里默认在华为官网还未创建项目,详细步骤见下图

image33333.png

image44444.pngimage777777.png

推送完成后,你可以在 推送历史 中查看推送状态、推送通道、送达率等详细数据。

配置完成后需要对极光平台鸿蒙通道进行启用

进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,选择【HarmonyOS】平台,「启用」鸿蒙通道。

image88888.png

完成鸿蒙厂商通道 SDK 集成后,需要开发者在华为开放平台开通并配置消息回执,方可把鸿蒙的送达统计等数据回调到极光平台,具体操作如下

1.登录华为 AppGallery Connect网站

2.点击“我的项目”,在项目列表中找到您的项目,通过增长-推送服务-配置导航到“配置”页签。

3.在该页面可以选择配置项目级回执或者应用级回执,需要注意的是项目级回执消息接收 URL 地址,对该项目下所有应用生效。如果您同时配置了项目级回执和应用级回执地址,则优先获取应用级回执地址信息。

image999999.png

4.这里以应用级回执举例,选择需要配置回执的应用,点击“开通”应用回执状态。

5.进入回执参数配置,新建回执

image111111110011111.png

6.点击“新建回执”后,需要配置如下参数。

imagelast1111.png

  1. 点击“测试回执”可以对回执地址进行功能测试,点击“提交”完成回执的创建。

这样我们的极光推送SDK就配置完毕,结合之前配置的代码,就可以了



关于HarmonyOS 鸿蒙集成极光推送的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

回到顶部