华为HarmonyOS灵活高效的消息推送服务(Push Kit) -- 10 推送实况窗消息

news2024/9/24 17:36:45

场景介绍

实况窗是一种帮助用户聚焦正在进行的任务,方便快速查看和即时处理的通知形态。有关实况窗简介、权限申请、开放场景、设计规范等说明,请参见Live View Kit简介。

通过Push Kit发送的实况窗消息支持三种操作类型,分别是:

实况窗消息操作类型

支持操作的场景类型

说明

创建实况窗

FLIGHT、TAXI、TRAIN

仅航班、出行打车、高铁/火车场景支持通过Push Kit创建实况窗,其他场景请通过Live View Kit本地创建。

更新实况窗

所有场景

所有场景皆支持通过Push Kit更新实况窗。

结束实况窗

所有场景

所有场景皆支持通过Push Kit结束实况窗。

有关场景类型的详细说明请参见支持的范围与场景。

根据创建实况窗的方式不同,通过Push Kit发送实况窗消息的流程有所区别。

通过Live View创建实况窗,Push Kit更新与结束实况窗

cke_5070.png

  1. 使用Push Kit,获取Push Token。
  2. 使用Live View Kit创建实况窗成功后,开发者需要将实况窗id、pushToken、实况窗场景event以及业务服务的相关的状态属性保存到业务服务端。
  3. 当业务服务的用户订单状态发送变化时,通过Push Kit通道推送更新消息,更新/结束实况窗。

通过Push Kit创建、更新、结束实况窗

cke_11946.png

  1. 使用Push Kit,获取Push Token。
  2. 将Push Token保存到业务的服务端。
  3. 通过Push Kit推送创建/更新/结束实况窗消息。

实况窗更新效果示例图:

cke_18933.png

注意

  • 单个实况窗的生命周期最长不超过8小时,超过8小时后,系统会认为通知结束。
  • 为了确保用户看到内容的时效性,请您确保对实况窗内容进行及时更新。系统将在实况窗超过2小时未更新时,隐藏实况窗在状态栏胶囊和锁屏的展示,保留通知中心展示;超过4小时未更新,系统会认为实况窗结束,并从各个展示入口清除该实况窗。

开通权益

推送实况窗消息前您需要开通对应的场景权益,可参见开通实况窗权益完成权益的申请。

频控规则

调测阶段,每个项目每日全网最多可推送1000条测试消息。发送测试消息需设置testMessage为true。

正式发布阶段,单设备单应用下每日推送消息总条数受设备消息频控限制,所有场景化消息发送条数不超过3000条。

单个实况窗消息,出行打车与赛事比分场景每个设备每5分钟最多更新30次,每小时最多更新180次。其余场景每个设备每5分钟最多更新10次,每小时最多更新60次。超过频次部分将丢弃不下发。

开发步骤

  1. 参见指导获取Push Token。
  2. 根据应用情况选择创建实况窗的方式:

    • 通过Live View Kit创建本地实况窗,详细内容请参见构建本地实况窗。
    • 通过Push Kit远程创建实况窗,需满足创建实况窗约束。以出行打车场景为例,消息示例如下:
      ​
      // Request URL
      POST https://push-api.cloud.huawei.com/v3/[projectid]/messages:send
      // Request Header
      Content-Type: application/json
      Authorization: Bearer eyJr*****OiIx---****.eyJh*****iJodHR--***.QRod*****4Gp---****
      push-type: 7
      // Request Body
      {
      "payload": {
      "activityId": 1,
      "operation": 0,
      "event": "TAXI",
      "status": "DRIVER_ON_THE_WAY", // 司机正在赶来
      "activityData": {
      "notificationData": {
      "type": 3,
      "contentTitle": "{{status}}", // 司机正在赶来
      "contentText": [
      {
      "text": "距您"
      },
      {
      "text": "1.2公里",
      "foregroundColor": "#FF317AF7"
      },
      {
      "text": " | "
      },
      {
      "text": "5分钟",
      "foregroundColor": "#FF317AF7"
      }
      ],
      "clickAction": {
      "actionType": 1, // 打开应用自定义页面
      "action": "xxxxxx" // 应用内置页面ability对应的action
      },
      "richProgress": {
      "type": 0,
      "nodeIcons": ["icon1.png", "icon2.png", "icon3.png"], // 取值为“/resources/rawfile”路径下的文件名
      "indicatorIcon": "taxi.png", // 取值为“/resources/rawfile”路径下的文件名
      "progress": 40,
      "indicatorType": 1,
      "color": "#FF317AF7",
      "bgColor": "#19000000"
      },
      "extend": {
      "type": 3,
      "pic": "phone.png", // 取值为“/resources/rawfile”路径下的文件名
      "clickAction": {
      "actionType": 5, // 点击辅助区打开拨号界面
      "data": {
      "tel": "138xxxxxxxx" // 通过tel字段携带拨号的电话号码
      }
      }
      }
      },
      "capsuleData": {
      "type": 1,
      "status": 1,
      "icon": "icon.svg", // 取值为“/resources/rawfile”路径下的文件名
      "bgColor": "#FF317AF7",
      "remind": "EXPAND",
      "title": "接驾中",
      "content": "预计5分钟"
      }
      }
      },
      "pushOptions": {
      "ttl": 1000,
      "biTag": "biTag"
      },
      "target": {
      "token": [
      "MAAALgE4G98BAAAAst************jq"
      ]
      }
      }
      ​
      • [projectId]:项目ID,登录AppGallery Connect网站,选择“我的项目”,在项目列表中选择对应的项目,左侧导航栏选择“项目设置”,在该页面获取。
      • Authorization:JWT格式字符串,可参见Authorization获取。
      • push-type:7表示实况窗消息场景。
      • token:Push Token,可参见获取Push Token获取。
      • event:实况窗消息具体场景类型,需要与应用实际申请通过的场景一致。例如:TAXI(出行打车)、FLIGHT(航班)等。通过Push Kit创建实况窗仅支持TAXI、FLIGHT、TRAIN三种场景。详情请参见创建实况窗约束。
      • operation:实况窗通知操作类型,0表示创建实况窗。详情请参见operation。
      • activityData:填写您项目中的实况窗数据。详情请参见activityData。
      • activityId:实况活动ID。详情请参见activityId。
      • type:实况窗布局类型,有基础类、进度可视化类、强调文本类等。创建实况窗时每种event仅可使用特定的布局类型,详情请参见创建实况窗约束。
      • status:表示实况窗消息状态。operation为0时必填,取值范围根据场景类型而定,详情见Status取值范围,并且需要在支持携带占位符的字段填入至少一次status的占位符{{status}},Push Kit将替换占位符{{status}}为Status取值范围中对应的值。

  3. 当用户的服务订单状态发生变化时,开发者可以调用Push Kit服务端开放的REST API服务接口,更新或者结束实况窗。

    消息详情可参见场景化消息API接口功能介绍。(若开发者更新的实况窗为通过Push Kit远程创建的实况窗,更新时请遵守创建实况窗约束)

    ​
    // Request URL
    POST https://push-api.cloud.huawei.com/v3/[projectid]/messages:send
    // Request Header
    Content-Type: application/json
    Authorization: Bearer eyJr*****OiIx---****.eyJh*****iJodHR--***.QRod*****4Gp---****
    push-type: 7
    // Request Body
    {
    "payload": {
    "activityId": 1,
    "operation": 1,
    "event": "TAXI",
    "status": "HEADING_TO_DESTINATION", // 正在去往目的地
    "version": 1,
    "activityData": {
    "notificationData": {
    "type": 3,
    "contentTitle": "{{status}}", // 正在去往目的地
    "contentText": [
    {
    "text": "距目的地"
    },
    {
    "text": "7.2公里",
    "foregroundColor": "#FF317AF7"
    },
    {
    "text": " | 预计"
    },
    {
    "text": "27分钟",
    "foregroundColor": "#FF317AF7"
    }
    ],
    "clickAction": {
    "actionType": 1, // 打开应用自定义页面
    "action": "xxxxxx" // 应用内置页面ability对应的action
    },
    "richProgress": {
    "type": 0,
    "nodeIcons": ["icon1.png", "icon2.png", "icon3.png"], // 取值为“/resources/rawfile”路径下的文件名
    "indicatorIcon": "taxi.png", // 取值为“/resources/rawfile”路径下的文件名
    "progress": 70,
    "indicatorType": 1,
    "color": "#FF317AF7",
    "bgColor": "#19000000"
    },
    "extend": {
    "type": 0
    }
    },
    "capsuleData": {
    "type": 1,
    "status": 1,
    "icon": "icon.svg", // 取值为“/resources/rawfile”路径下的文件名
    "bgColor": "#FF317AF7",
    "title": "27分钟",
    "content": "距目的地7.2公里"
    }
    }
    },
    "pushOptions": {
    "ttl": 1000,
    "biTag": "biTag"
    },
    "target": {
    "token": [
    "IQAAAACy0Yu************enANg"
    ]
    }
    }
    ​
    • [projectId]:项目ID,登录AppGallery Connect网站,选择“我的项目”,在项目列表中选择对应的项目,左侧导航栏选择“项目设置”,在该页面获取。
    • Authorization:JWT格式字符串,可参见Authorization获取。
    • push-type:7表示实况窗消息场景。
    • token:Push Token,可参见获取Push Token获取。
    • event:实况窗通知具体场景类型,需要与应用实际申请通过的场景一致。例如:TAXI(出行打车)、FLIGHT(航班)等。详情请参见event。
    • operation:实况窗通知操作类型,1表示更新实况窗,2表示结束实况窗。详情请参见operation。
    • activityData:填写您项目中的实况窗数据。详情请参见activityData。
    • activityId:实况活动ID。详情请参见activityId。
    • type:实况窗布局类型,有基础类、进度可视化类、强调文本类等。详情请参见type。
    • status:表示实况窗消息状态。operation为1且更新的实况窗为通过Push Kit远程创建的实况窗时必填,取值范围根据场景类型而定,详情见Status取值范围,并且需要在支持携带占位符的字段填入至少一次status的占位符{{status}},Push Kit将替换占位符{{status}}为Status取值范围中对应的值。
    • version:更新实况窗通知的版本号。详情请参见version。

      注意

      发送的activityId对应的实况窗id(请见LiveView)不存在,将限制发送该activityId的实况窗消息24小时。

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

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

相关文章

【全新课程】正点原子《基于GD32 ARM32单片机项目实战入门》培训课程上线!

正点原子《ESP32物联网项目实战》全新培训课程上线啦!正点原子工程师手把手教你学!彻底解决ARM32单片机项目入门难的问题! 一、课程介绍 本课程专为ARM32单片机的入门学习者设计,涵盖了环境搭建、编程软件使用、模块基础驱动和多…

矩阵的逆怎么算?逆矩阵公式来了(附逆矩阵计算器)

大家好,这里是效率办公指南! 📚 在线性代数中,逆矩阵是一个非常重要的概念。一个方阵如果存在逆矩阵,意味着该矩阵是可逆的,或者说是非奇异的。逆矩阵在解决线性方程组、计算矩阵的方根等方面有着广泛的应…

利用Accelerate()进行pytorch的多GPU加速

简介 官方Github:https://github.com/huggingface/accelerate Accelerate 是为喜欢编写PyTorch模型的训练循环但不愿意编写和维护使用多GPU/TPU/fp16所需的样板代码的PyTorch用户创建的。 它可以仅加速与多 GPU/TPU/fp16 相关的样板代码,并保持其余代…

Pyspark dataframe基本内置方法(5)

文章目录 Pyspark sql DataFrame相关文章toDF 设置新列名toJSON row对象转换json字符串toLocallterator 获取迭代器toPandas 转换python dataframetransform dataframe转换union unionALL 并集不去重(按列顺序)unionByName 并集不去重(按列名…

jenkins声明式流水线语法详解

最基本的语法包含 pipeline:所有有效的声明式流水线必须包含在一个 pipeline 块中stages:包含一系列一个或多个stage指令stage:stage包含在stages中进行,比如某个阶段steps:在阶段中具体得执行操作,一个或…

提升工作效率神器

这五款软件让你事半功倍 在当今快节奏的社会中,提高工作效率成为了每个人追求的目标。而在这个数字化时代,选择对的软件工具无疑是提高效率的关键。今天,我为大家推荐五款优秀的工作效率软件,帮助你在工作中事半功倍。 1、亿可达…

15个 Jenkins 面试题

Jenkins 已成为持续集成和持续部署 (CI/CD) 流程中使用最广泛的自动化服务器之一。凭借其强大的功能和广泛的插件生态系统,Jenkins 已成为全球软件开发团队的首选工具。如果您正在准备 Jenkins 面试,那么精通其概念、架构和最佳实践至关重要。 为了帮助…

1.3 MySql的用户管理

一、下载Mysql客户端 下载navicat:Navicat 中国 | 支持 MySQL、Redis、MariaDB、MongoDB、SQL Server、SQLite、Oracle 和 PostgreSQL 的数据库管理 二、安装Navicat 三、创建数据库 创建一个数据库的连接吧,因为这个界面儿是图形界面儿,所以我们创建…

深入分析MySQL事务日志-Redo Log日志

文章目录 事务日志-Redo Log2.1 Redo Log2.1.1 Redo Log与持久性2.1.2 Redo Log的工作原理2.1.3 Redo Log的落盘策略2.1.4 Redo Log的系统参数 事务日志-Redo Log 事务的隔离性是通过锁实现,而事务的原子性、和持久性则是通过事务日志实现。在MySQL中,事…

【吉林大学编译原理题库】正则表达式的书写

1. 2. 选A 3. 没啥好说的,按意思写就行: 4. 5.设字母表S{0,1},写正则表达式表示所有偶数个0和偶数个1组成的字符串。 6. 设字母表S{0,1},写正则表达式表示所有偶数个0和奇数个1组成的字符串。(提示&am…

Token usage of Content Filtered messages in Azure OpenAI Services

题意:在Azure OpenAI服务中,内容过滤消息的令牌使用 问题背景: When sending a message to a chat via GetChatCompletions as a response, I get a RequestFailedException. In the exception, I get an answer for which category content…

2-101基于matlab的频带方差端点检测

基于matlab的频带方差端点检测,噪声频谱中,各频带之间变化很平缓,语音各频带之间变化较激烈。据此特征,语音和噪声就极易区分。计算短时频带方差,实质就是计算某一帧信号的各频带能量之间的方差。这种以短时频带方差作…

揭秘MySQL主从复制:打造高可用性与数据冗余的强效引擎

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 目录 前言&#…

从Web2到Web3:探索下一代互联网的无限可能性

互联网经历了从Web1到Web2的重大变革,现在正迈向Web3。Web2通过社交媒体、电子商务和内容平台改变了我们的数字生活,但同时也伴随着中心化平台的垄断和用户数据被广泛控制的问题。而Web3的出现,则试图通过去中心化技术解决这些挑战&#xff0…

人到中年,最清醒的活法—沉浸式做自己

生活中,你是不是常常被这样的事情所困扰? 工作的时候,每天被千头万绪的杂事缠身,看着一堆待完成事项,和工作群里一堆的消息在轰炸你,内心顿感烦躁甚至暴怒。 经常因为领导,同事或者熟人甚至陌生…

java 洛谷题单【算法1-7】搜索

P1219 [USACO1.5] 八皇后 Checker Challenge 解题思路 回溯法 递归与回溯: 从第0行开始,为每个行尝试放置棋子的位置,检查放置是否违反约束条件。如果放置合法,则继续递归处理下一行(即下一层递归)。如果当前行无法找…

【Go语言】深入解读Go语言中的指针,助你拨开迷雾见月明

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

浅谈提示工程之In-context learning技术

提示工程之In-context learning技术; 通过一张图片围绕下边几个方面进行简单说明 概念起因本质结构注意事项 日常总结

SQL语法学习与实战应用

第一章 引言 1.1 MySQL数据库概述 MySQL,作为一种广泛使用的关系型数据库管理系统,自其问世以来,便凭借开源、高性能及低成本等显著特点,迅速占据了广泛的市场份额。这一系统不仅支持大规模并发访问,更提供了多样化的…

【最新华为OD机试E卷-支持在线评测】绘图机器(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…