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

news2024/9/21 12:30:55

【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实现推送功能,信心百倍咯,快去自己试试吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1951204.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

lambda 28

package Api;public class local7 {public static void main(String[] args) {Swimmimg w()->{System.out.println("方式");};} } interface Swimmimg{void run(); }/* public static void main(String[] args) {Animal a new Animal(){Overridepublic void…

基于高光谱图像的压缩感知网络

压缩感知算法原理 压缩感知(Compressed Sensing, CS)是一种信号处理技术,它允许在远低于Nyquist采样率的情况下对信号进行有效采样和重建。压缩感知理论的核心思想是利用信号的稀疏性,通过少量的线性测量重建出原始信号。以下是压…

指令重排:

目录 指令重排: 代码: 执行结果: 分析原因: 解决办法: 加入语句: 完整代码: 补充: 1.printStackTrace(); 2.yield() 指令重排: 在class文件执行的时候&#…

OAK-FFC 分体式相机使用入门介绍

概述 OAK FFC 主控板和多种可选配镜头模组非常适合灵活的搭建您的3D人工智能产品原型。由于镜头是分体式的,因此你可以根据需要测量的距离,自定义深度相机安装基线,并根据你的项目要求(分辨率、快门类型、FPS、光学元件&#xff…

【C++】选择结构-switch语句

switch 语句语法格式: switch (已定义整型或字符型变量名) { case 单个整型或字符型1: 满足这个 case 下整型或字符型执行的操作 break; case 单个整型或字符型2: 满足这个 case 下整型或字符型执行的操作 break; ...... default : 所有 ca…

SpringBoot3整合Druid报错Cannot load driver class: org.h2.Driver

报错显示springboot自带的H2数据库报错,其实是因为druid并未加载进去。如果你其它配置都没问题的话,请检查druid的依赖是什么版本的,因为springboot3刚开始是不支持druid的。 方案一: 即需要手动在resources目录下创建META-INF/s…

opencascade AIS_MouseGesture AIS_MultipleConnectedInteractive源码学习

AIS_MouseGesture //! 鼠标手势 - 同一时刻只能激活一个。 enum AIS_MouseGesture { AIS_MouseGesture_NONE, //!< 无激活手势 // AIS_MouseGesture_SelectRectangle, //!< 矩形选择&#xff1b; //! 按下按钮开始&#xff0c;移动鼠标定义矩形&…

队列--顺序队列的表示和实现

#include<stdio.h> #define MAXQSIZE 10 typedef int QElemType; typedef int Status; //顺序队列 (循环队列,有一个空间不用) typedef struct{QElemType *base;int rear;int front; }SqQueue; //初始化队列 Status InitQueue(SqQueue &Q){Q.basenew QElemType[MAX…

微信Android一面凉经(2024)

微信Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《微信Android一面凉经(2024)》。 面试职位: 微信-客户端开发工程师-基础功能(广州) And…

数据结构——二叉树性质

性质1:在二叉树的第i层上至多有2^(i-1)个结点(i>1)。 这个性质很好记忆&#xff0c;观察一下图6-5-5。 第一层是根结点&#xff0c;只有一个&#xff0c;所以2^(1-1)2^01。 第二层有两个&#xff0c;2^(2-1)22。 第三层有四个&#xff0c;2^(3-1)2^24。 第四层有八个&am…

centos7 mysql 基本测试(6)主从简单测试

centos7 xtrabackup mysql 基本测试&#xff08;6&#xff09;主从简单测试 mysql -u etc -p 1234aA~1 参考&#xff1a; centos7 时区设置 时间同步 https://blog.csdn.net/wowocpp/article/details/135931129 Mysql数据库&#xff1a;主从复制与读写分离 https://blog.csd…

【中项】系统集成项目管理工程师-第5章 软件工程-5.3软件设计

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

800G以太网测试之FEC压力测试(FEC统计,FEC Error Injection)

目录 FEC是什么 FEC测试需要关注哪些内容 基础的 FEC 性能监测 需要测试和验证的 FEC 特性 FEC Error Injection / FEC误码压力测试 Codeword & Symbol Error Configuration Errored Symbol Per CW Configuration Bit Error Mask Configuration Loop Mode FEC 引擎…

JavaScript Let

ECMAScript 2015 ES2015 引入了两个重要的 JavaScript 新关键词&#xff1a;let 和 const。 这两个关键字在 JavaScript 中提供了块作用域&#xff08;Block Scope&#xff09;变量&#xff08;和常量&#xff09;。 在 ES2015 之前&#xff0c;JavaScript 只有两种类型的作…

为边缘开发由生成式 AI 驱动的视觉 AI 智能体

为边缘开发由生成式 AI 驱动的视觉 AI 智能体 文章目录 为边缘开发由生成式 AI 驱动的视觉 AI 智能体什么是可视化 AI 智能体&#xff1f;使用 Jetson 平台服务为边缘构建视觉 AI 智能体构建基于 VLM 的视觉 AI 智能体应用程序VLM AI 服务提示工程与 Jetson 平台服务和移动应用…

针对网络延迟与弱网下的测试

学习的时候看见大佬这样的回复 作为一个测试小白&#xff0c;我心想&#xff0c;这我不得上手试一试 大佬说的工具模拟&#xff0c;大概是指Charles和fiddler两个软件&#xff0c;都可以模拟弱网&#xff0c;但是Charles收费&#xff0c;我拿fiddler练手 另一个故意引入固定百…

21-C语言的结构体尺寸——地址对齐问题

21-C语言的结构体尺寸——地址对齐问题 文章目录 21-C语言的结构体尺寸——地址对齐问题一、CPU 字长二、 地址对齐2.1 原理和原因2.2 地址对齐的主要思想2.3 示例代码说明地址对齐 三、普通变量的M值M值的计算规则例子 四、手动干预M值4.1 规则4.2 例子 五、结构体的M值5.1 例…

每天一个设计模式之职责链模式(第一天)

特别感谢刘伟老师&#xff0c;看他的书我学到了很多东西&#xff0c;从今天开始我要开始更新啦&#xff01; 在csdn个人博客来总结知识&#xff0c;把他们变成自己的能力。 对三&#xff0c;要不起&#xff0c;张三李四王五几个人在玩斗地主&#xff0c;过过过&#xff0c;一…

谷粒商城实战笔记-错误记录-启动失败

文章目录 一&#xff0c;lombok报错二&#xff0c;Output directory is not specified 一&#xff0c;lombok报错 java: You arent using a compiler supported by lombok, so lombok will not work and has been disabled. Your processor is: com.sun.proxy.$Proxy8 Lombok …

靶场实战 _ ATTCK 实战 Vulnstack 红队

环境配置 网络拓扑图 (仅供参考) 攻击机&#xff1a;kali ip:192.168.111.5靶机&#xff1a;web-centos 外网ip:192.168.111.10 内网ip:192.168.93.100web1-ubuntu ip: 192.168.93.120PC ip: 192.168.93.30win 2008 ip:192.168.93.20win 2012 ip:192.168.93.10 信息搜集 端口…