当前位置: 首页 > news >正文

【HarmonyOS】应用推送使用个推SDK如何实现?

【HarmonyOS】应用推送使用个推SDK如何实现?

前言

个推和极光都是市面上很成熟的推送第三方SDK了。今天讲讲个推SDK在鸿蒙中如何集成使用。

存在即合理,三方SDK推送给我们带来了极大的好处,首先在服务器后台处理一套API就可搞定,差异化处理都由SDK厂商来做了。客户端层面,SDK会更进一步进行封装,并且加强功能的能力。整个功能又节约了人力维护和开发成本。
当然也有缺点,毕竟差异化都是厂商处理了,所以在平台进行API更新时,都需要等厂商先升级完毕才能进行下一步,有了前置依赖。

在这里插入图片描述

平台注册和配置事项

一般鸿蒙应用选择个推很大的前提是,既有的IOS和Android已经使用了个推,在迁移一致性上来说,也会选择个推来实现鸿蒙上的应用推送功能。

一般公司运营会负责个推平台账号。这里注册是为给给应用开发来做测试账号用。

个推平台 整个注册过程很简单,傻瓜操作即可。
在这里插入图片描述

注册完成后登陆个推平台,进行测试应用的注册。一般平台都需要以你的应用作为服务对象,会生成对应该的APPID或者APPKey,到时候使用他们的SDK,初始化时就需要将你的应用唯一标识传给他们,联网之后他们的后台会进行校验。这也是一个注意项,在使用三方SDK时,若没有和自己家的后台服务器直接交互,很多情况下是需要连接外部网络,因为客户端的三方SDK会进行联网校验。所以很多公司是内网,测试机使用SDK功能就会有问题

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
关于华为AGC平台推送服务的配置,参见这篇文章:
【HarmonyOS】关于鸿蒙消息推送的心得体会 (一)

关于个推平台和华为AGC平台进行绑定的操作:
在个推开发者中心–应用管理页–找到对应的这个鸿蒙应用–进入“消息推送”页–配置管理–应用配置–鸿蒙:去填写鸿蒙应用的厂商信息,点击上传文件,选择您在创建服务器秘钥文件中下载的JSON文件上传:
在这里插入图片描述
如果不知道JSON文件如何获取,详细步骤参见文档:开通指南 查看其中的创建服务帐号密钥文件的内容。

SDK获取Demo运行

应用注册完之后,就可以进行推送SDK的下载了。这里会有客户端SDK和服务器SDK。
在这里插入图片描述
下载完成之后,我们可以看到SDK是以Demo的形式提供。SDK的Har肯定就在项目的libs里了。这里我们也发现了个彩蛋,MACOSX,这一看就是Mac电脑上传的包哈哈哈。
在这里插入图片描述打开应用后我们可以看到,整个demo很简单。sdk本体就是libs下的GT-HM-1.0.2.0-beta.har。
在这里插入图片描述

**在入口Ability的创建函数中,进行了SDK的初始化操作。**这里的APPID就是我们在个推平台上注册应用,对应的id。

import AbilityConstant from '@ohos.app.ability.AbilityConstant';
import hilog from '@ohos.hilog';
import UIAbility from '@ohos.app.ability.UIAbility';
import Want from '@ohos.app.ability.Want';
import window from '@ohos.window';
import common from '@ohos.app.ability.common';import PushManager from 'library';export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {hilog.info(0x0000, 'EntryAbility', '%{public}s', 'Ability onCreate');PushManager.initialize({appId: 'APPID',context: getContext(this) as common.UIAbilityContext,onSuccess: cid => {hilog.debug(0x0000, "EntryAbility", '%{public}s', "cid = " + cid);},onFailed: error => {hilog.debug(0x0000, "EntryAbility", '%{public}s', "error = " + error);}})}onWindowStageCreate(windowStage: window.WindowStage): void {windowStage.loadContent('pages/Index', (err, data) => {if (err.code) {hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');return;}hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? '');});}}

因为个推是在华为推送官网API基础之上做的封装,所以官网对于推送进行验证id我们也需要进行配置。这个id在华为AGC平台上可以找到。如何获取id和填写id到工程里,参见这篇文章:**
【HarmonyOS】关于鸿蒙消息推送的心得体会 (一)

前两步完成之后,使用对应的华为AGC平台上你的测试应用签名文件进行编译,启动后手机上显示的完整的测试页,通过按钮触发不同的SDK API,注意测试之前要先开启通知开关。代码参见demo中的index.ets

在这里插入图片描述
注意一定要连接外网进行测试!
注意一定要连接外网进行测试!
注意一定要连接外网进行测试!

最后一步创建推送通知进行测试验证

在这里插入图片描述

CID是个推SDK在初始化时生成,有日志答应可以获取到。
在这里插入图片描述
其实推送功能就算使用华为官网原生API来实现,工作量也不是很大。但是服务器后台的工作量还是很巨大。以上是个推SDK在客户端集成的操作。关于服务器API的操作参见官网文档:RestAPI V2

以上都完成后,想必你已经对集成个推SDK实现推送功能,信心百倍咯,快去自己试试吧。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • MySQL面试篇章—MySQL锁机制
  • 【C++ —— 认识哈希和unordered_set、unordered_map的介绍及模拟】
  • 【学习笔记】Redis学习笔记——第17章 集群
  • Mojo简介
  • 打卡第22天------回溯算法
  • 深度学习系列70:模型部署torchserve
  • python 裁剪图片
  • 《梁宁产品思维30讲》是一门深入剖析产品思维、产品认知框架的课程
  • Windows11和Win10如何彻底永久关闭Windows defender
  • MySQL可重复读的隔离机制下是否彻底解决了幻读?
  • 云服务部署项目(Spring + Vue)
  • vue-router小结
  • Python3网络爬虫开发实战(1)爬虫基础
  • Vue.js 与 Ajax(vue-resource)的集成应用
  • Vue 项目部署后首页白屏问题排查与解决
  • eclipse(luna)创建web工程
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • IOS评论框不贴底(ios12新bug)
  • leetcode388. Longest Absolute File Path
  • Less 日常用法
  • spring boot下thymeleaf全局静态变量配置
  • SpringCloud集成分布式事务LCN (一)
  • STAR法则
  • Vue全家桶实现一个Web App
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 编写符合Python风格的对象
  • 动态规划入门(以爬楼梯为例)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 关于使用markdown的方法(引自CSDN教程)
  • 再次简单明了总结flex布局,一看就懂...
  • 正则学习笔记
  • MPAndroidChart 教程:Y轴 YAxis
  • 昨天1024程序员节,我故意写了个死循环~
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​比特币大跌的 2 个原因
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #1015 : KMP算法
  • #include
  • #Linux(帮助手册)
  • #QT 笔记一
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (二)c52学习之旅-简单了解单片机
  • (简单) HDU 2612 Find a way,BFS。
  • (七)理解angular中的module和injector,即依赖注入
  • (三)uboot源码分析
  • (算法)求1到1亿间的质数或素数
  • (一)appium-desktop定位元素原理
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • (转)shell中括号的特殊用法 linux if多条件判断
  • ***通过什么方式***网吧
  • .NET : 在VS2008中计算代码度量值
  • .Net FrameWork总结
  • .Net6使用WebSocket与前端进行通信
  • .NET微信公众号开发-2.0创建自定义菜单
  • /etc/sudoer文件配置简析