#HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战 原创

小黄要努力
发布于 2024-7-31 12:46
浏览
0收藏

背景

近日因为公司要启动鸿蒙化改造,开发小组被拉进老板办公室,针对鸿蒙话改造中第三方推送sdk适配问题进行小范围亲切友好地交谈,会议上,我们通过对需求分析,决定找一款满足 :
多平台多通道支持
消息类型、样式丰富
推送个性化
有统计分析
用户分析与设备分析
兼顾安全
快速构建
高效稳定的这样一款推送SDK
为了满足以上需求,选定使用极光推送SDK,功能强大的同时它还永久免费!

关于鸿蒙极光 :

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

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

主要功能

保持与服务器的长连接,以便消息能够即时推送到达客户端
接收通知,并向开发者 App 传递相关信息

主要特点

客户端维持连接占用资源少、耗电低
SDK 丰富的接口,可定制通知栏提示样式
服务器大容量、稳定

老板听完一拍桌子就说今天下班前就要看到跟推送有关的东西集成到我们的应用中同时还要保证能跟业务进行关联,要让用户端跟订单状态实时同步。话音落下办公室一片寂静
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
哪怕是40度的天,也能看到组长听到消息后头上的冷汗直流,说道现在鸿蒙还不成熟,可能没有相应的sdk和使用文档一天根本做不好,再说公司没有鸿蒙开发人才贮备,根本不可能完成。
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区

加钱!!!

老板的话音未落我立马甩出鸿蒙高级开发者认证的成绩来证明我的实力,把集成的任务直接揽下
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送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"
        }
    ]
}

签署配置
在本地工程配置签署(如下图所示)
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
包名配置
在 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文件,保存配置即可

 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区

数据都填充完之后,因为需要上传JSON文件,所以还需要额外进行配置,这里默认在华为官网还未创建项目,详细步骤见下图
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
推送完成后,你可以在 推送历史 中查看推送状态、推送通道、送达率等详细数据。

配置完成后需要对极光平台鸿蒙通道进行启用
进入【极光控制台】-【消息推送】-【推送设置】-【集成设置】页面,选择【HarmonyOS】平台,「启用」鸿蒙通道。
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区

完成鸿蒙厂商通道 SDK 集成后,需要开发者在华为开放平台开通并配置消息回执,方可把鸿蒙的送达统计等数据回调到极光平台,具体操作如下:
1.登录华为 AppGallery Connect网站。
2.点击“我的项目”,在项目列表中找到您的项目,通过增长-推送服务-配置导航到“配置”页签。
3.在该页面可以选择配置项目级回执或者应用级回执,需要注意的是项目级回执消息接收 URL 地址,对该项目下所有应用生效。如果您同时配置了项目级回执和应用级回执地址,则优先获取应用级回执地址信息。
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区

4.这里以应用级回执举例,选择需要配置回执的应用,点击“开通”应用回执状态。
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
5.进入回执参数配置,新建回执。
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
6.点击“新建回执”后,需要配置如下参数。
回执名称:填写自定义名称。
回调地址: https://xpnscb.jpush.cn/v3/hmpnsreport
支持版本:华为 V1、V2 版本,极光均已适配(推荐使用 V2 版本)。
 #HarmonyOS NEXT体验官#HarmoneyOS集成极光推送SDK实战-鸿蒙开发者社区
7.点击“测试回执”可以对回执地址进行功能测试,点击“提交”完成回执的创建。

这样我们的极光推送SDK就配置完毕,结合之前配置的代码,就可以直接使用啦~

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
分类
标签
收藏
回复
举报
回复
    相关推荐