【HarmonyOS】关于鸿蒙消息推送的心得体会(二)

【HarmonyOS】关于鸿蒙消息推送的心得体会(二)

在这里插入图片描述

前言

推送功能的开发与传统功能开发还是有很大区别。首先最大的区别点就在于需要多部门之间的协同,作为鸿蒙客户端开发,你需要和产品,运营,以及后台开发一起协作,这个事儿才能做好。

上一篇,【HarmonyOS】关于鸿蒙消息推送的心得体会 (一)之中,AGC平台开通推送服务,配置推送设置项 ,这个任务在公司里主要是运营来负责。毕竟公司的华为AGC平台帐号,也不是开发人员可以随意使用。

但是目前推送集成的文档,不管是华为官方还是第三方推送SDK服务提供商,文档中的操作内容都是糅合在一起,华为官方最多只是对后台的REST API进行了小拆分。有些是开发需要操作,有些则是产品,运营需要去做,甚至推送发起后台要去处理的内容也在文档里。

综上所述,鸿蒙客户端开发人员就需要辛苦一些,把整个文档浏览过之后,再根据步骤实操,使用demo验证推送功能,再将正式集成推送时的工作内容进行划分,与其他部门一起完成配置项和处理项。

由此可见,应用开发人员其实需要一套授权可操作的测试应用帐号,来进行这种多部门沟通前的验证集成工作。否则你只能等待前置条件的完成,很浪费时间。

其实我是建议此种类型的文档根据角色来进行内容划分,这样操作起来大家也能各司其职。

推送功能的分工

作为已经踩过坑的鸿蒙应用开发人员,我将鸿蒙推送的角色分工梳理了下。

当然这仅供参考,主要根据你们公司的部门职责的实际情况来决定。如果你们公司产品不管事儿,和项目经理似的,活儿都是运营干,你也没有必要拿着我这篇文档Diss人家,实在是大动肝火啊好兄弟。

在我这里当然是有产品,运营,后台开发➕应用开发,UI设计主要是推送通知的一些图标和交互,关联不大就不展开说了。如果你那没有对应的角色。那你就需要授权去操作了。切记不要自己吭吭哧哧一顿操作。

不出事儿还好,出事了人家就会问你,为什么擅自操作?你懂得。

废话不多说咯,下面就是工作内容角色拆解,仅供参考:
在这里插入图片描述

1.运营人员需要在华为AGC平台进行推送服务的开通,以及推送类型的处理。你要知道图上这些信息,Push Kit将通知消息分类为服务与通讯、资讯营销两大类别
说人话环节,这个事儿其实就是华为官方根据推送的内容场景,进行了梳理分类,来严格控制消息的展示位置,推送数量和提醒方式。说白了就是一堆对应关系表,运营耐心阅读这些内容,根据自己应用的推送场景进行对号入座处理即可。
详细内容请移步Push Kit下的(申请推送场景化消息权益
)文档进行阅读。

2.产品人员需要参与的工作,主要是确认运营的场景分类,还有开发的通知交互,以及UI设计的事宜。

3.鸿蒙应用开发人员需要,通知开关需由用户授权允许,应用首次启动时需弹窗询问用户是否允许通知。因为应用的通知开关默认为关闭状态。你不去做申请授权,推送了你也不会展示。若返回的错误码为1600004,即为拒绝授权。

有个点需要注意,如果用户曾经居然过授权,你就算再次调用该API也不会再显示授权模态弹框。所以根据这种错误类型需要自己新增提示,告知用户拒绝过授权,需要手动去设置界面,开启应用的通知开关。

import { notificationManager } from '@kit.NotificationKit';
import { common } from '@kit.AbilityKit'; 
 
  /**
   * 请求打开通知
   */
  public requestEnableNotificationByUser(context: common.UIAbilityContext){
    let requestEnableNotificationCallback = (err: BusinessError): void => {
      if (err) {
        console.error(`requestEnableNotification failed, code is ${err.code}, message is ${err.message}`);
      } else {
        console.info("requestEnableNotification success");
      }
    };
    notificationManager.requestEnableNotification(context, requestEnableNotificationCallback);
  }

在这里插入图片描述

然后就是上篇文档一中提到,获取Push Token的操作。拿到之后你需要将Token发送给后台服务器,他那边做推送需要用。

最后就是处理通知点击的动作,如果业务需要你处理点击通知,跳转到你应用首页里做处理,你需要在:

import { UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

export default class MainAbility extends UIAbility {
  onCreate(want: Want): void {
    // 获取消息中传递的data数据
    const data = want.parameters;
    hilog.info(0x0000, 'testTag', 'Succeeded in getting message data');
    // 根据实际业务场景对data进行处理
  }
}

如果你的ability是单例(singleton)模式,需要在onNewWant()方法再处理一次。
当点击消息首次进入应用首页时,会在onCreate()方法中获取消息data数据,当前应用进程存在时,点击新消息进入首页会在onNewWant()方法中获取消息数据。
当你的ability设置了url或者action就可以跳到应用内某个页面的处理了。

4.后台开发人员需要阅读REST API文档,对推送消息的结构体,消息回执,撤回,推送,实况窗,VoIP等接口的开发。
应用服务端调用REST API推送通知消息,通知消息示例如下:

// Request URL
POST https://push-api.cloud.huawei.com/v3/[projectId]/messages:send

// Request Header
Content-Type: application/json
// JWT格式字符串,可参见Authorization获取。
Authorization: Bearer eyJr*****OiIx---****.eyJh*****iJodHR--***.QRod*****4Gp---****
push-type: 0 // 0表示通知消息场景。

// Request Body
{
  "payload": {
    "notification": {
      "category": "MARKETING",// 资讯营销类型,一天2条
      "title": "普通通知标题",
      "body": "普通通知内容",
      "profileId": "111***222", // 应用帐号和token进行绑定得到的唯一标识id
      "clickAction": {
        "actionType": 0 // 0表示点击消息打开应用首页。
      }
    }
  },
  "target": {
    "token": ["IQAAAA**********4Tw"] // 客户端发给服务器后台的用户推送token
  }
}

以上整个流程都完成,你的应用就可以实现推送功能了。当然这只是最基本的玩法,还有实况窗,VoIP等玩法就不展开说了,感兴趣的可以去看官方API详细研究下。

在这里插入图片描述

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值