2706

鸿蒙篇之鸿蒙的消息推送与通知管理

开篇语

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。

我是一名后端开发爱好者,工作日常接触到最多的就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会的,通过文章的形式进行输出,希望以这种方式帮助到更多的初学者或者想入门的小伙伴们,同时也能对自己的技术进行沉淀,加以复盘,查缺补漏。

小伙伴们在批阅的过程中,如果觉得文章不错,欢迎点赞、收藏、关注哦。三连即是对作者我写作道路上最好的鼓励与支持!

20.1 鸿蒙的消息推送架构

在现代智能设备中,消息推送与通知管理作为一种关键的功能,不仅可以提升用户体验,还能有效增强应用的活跃度与互动性。鸿蒙系统作为一款分布式操作系统,提供了强大的消息推送架构,支持多设备间的信息同步和通知协同。

20.1.1 鸿蒙系统的分布式推送架构

鸿蒙系统的推送架构基于 分布式软总线 技术,允许应用在不同设备间进行消息推送和接收。无论用户处于手机、平板、智能手表、智能电视,还是其他物联网设备上,鸿蒙系统都能够通过统一的消息推送框架进行多设备信息同步。

在鸿蒙中,推送系统通常由以下几个组件组成:

推送服务器:负责处理来自应用的推送请求,将消息发送至各个目标设备。推送服务器可以通过 鸿蒙消息推送服务(Push Service) 来与设备进行交互。

消息推送管理:鸿蒙的消息推送管理通过 分布式任务调度,根据用户设置和设备状态,智能地将推送消息分发至目标设备。系统会自动管理消息的优先级、时效性等,确保用户的消息不会丢失且不会打扰到用户。

设备注册与消息发送:设备通过鸿蒙的分布式身份验证系统注册到推送服务器,获得唯一的推送标识符。当推送消息需要发往设备时,推送服务器根据设备的注册信息,将消息正确路由至目标设备。

用户设备层:每个设备上都运行消息接收与处理模块,支持本地消息展示、通知推送、以及与其他设备的消息同步。设备接收到消息后,系统会进行本地处理和通知展示。

20.1.2 推送架构的优势

跨设备同步:由于鸿蒙系统采用分布式架构,用户在多个设备上进行的操作都可以通过消息推送同步。比如用户在手机端接收到一条通知,系统可以将该通知同步到其他设备如平板或智能手表。

灵活的消息路由:鸿蒙的推送架构支持不同类型的消息发送方式,如:即时推送、定时推送、延迟推送等,使得应用在不同场景下能够灵活选择推送方式。

智能通知管理:通过对设备状态、网络连接情况等的实时监测,鸿蒙推送系统能够根据不同的环境条件选择合适的推送策略。例如,当设备处于低功耗模式时,系统会延迟非紧急的推送,避免浪费电量。

20.2 推送服务的集成与实现

在鸿蒙中集成推送服务相对简单,主要通过鸿蒙的推送SDK进行开发。以下是推送服务集成的几个关键步骤,包括注册推送服务、发送推送请求以及处理推送消息。

20.2.1 推送服务的初始化

在应用中集成消息推送服务时,首先需要在应用的 config.json 文件中声明推送权限,并进行推送服务的初始化。推送服务的初始化通常包括 推送SDK的注册 和 设备注册。

在 config.json 中声明权限:

{

"permissions": [

{

"name": "ohos.permission.PUSH_NOTIFICATION",

"reason": "用于接收推送通知"

}

]

}

在应用启动时初始化推送服务:

import { push } from '@ohos.push';

@Entry

@Component

struct PushServiceExample {

private pushInstance: any;

build() {

// 初始化推送服务

this.pushInstance = push.createPushService();

this.pushInstance.on('messageReceived', (message: any) => {

console.log('Received push message:', message);

// 处理推送消息

this.handlePushMessage(message);

});

this.pushInstance.on('error', (error: any) => {

console.error('Push service error:', error);

});

this.pushInstance.init();

}

private handlePushMessage(message: any) {

// 根据业务需求处理推送消息

if (message.type === 'alert') {

this.showNotification(message);

}

}

private showNotification(message: any) {

// 展示推送通知

console.log(`Show notification: ${message.title} - ${message.content}`);

}

}

在上述示例中,push.createPushService() 用于初始化推送服务。应用会监听推送消息的接收事件,并根据不同的消息类型展示推送通知。

20.2.2 消息推送的发送

为了向用户设备发送推送消息,开发者需要通过推送服务器(云端)将消息发送到设备。消息内容通常包括消息类型、标题、内容以及 推送优先级 等信息。

推送消息发送的基本流程包括:

注册设备:设备通过鸿蒙的推送服务注册,并获取推送ID。

发送推送消息:通过后台接口将消息发送给设备。消息可以是 即时消息 或者 定时消息。

消息确认与重试:推送服务会确认消息是否成功发送给设备,并根据网络状况与设备状态进行重试。

以下是一个发送推送消息的伪代码示例:

import { push } from '@ohos.push';

function sendPushMessage(pushID: string, message: any) {

push.sendMessage(pushID, message, (err, result) => {

if (err) {

console.error('Error sending push message:', err);

} else {

console.log('Push message sent successfully:', result);

}

});

}

// 消息示例

const message = {

title: 'New Message',

content: 'You have a new notification!',

priority: 'high'

};

const pushID = 'user_device_push_id'; // 设备推送ID

sendPushMessage(pushID, message);

在这个例子中,sendPushMessage 函数通过推送服务将消息发送给指定设备。消息内容包括标题、内容和优先级等信息。

20.3 消息通知的用户管理与互动设计

推送通知不仅仅是简单的消息传递,它还是用户互动的一部分。鸿蒙系统通过消息通知用户管理与互动设计,使得推送通知更加智能化、个性化和人性化。

20.3.1 用户通知管理

鸿蒙系统为用户提供了灵活的通知管理机制,用户可以根据需要设置通知的接收方式、显示方式、声音、振动等。系统通过 通知通道 来管理不同类型的通知,并根据优先级、时效性等因素来决定通知的展示方式。

在鸿蒙中,推送消息可以通过设置通知通道来定制用户体验,例如:

import { notification } from '@ohos.notification';

// 创建通知通道

function createNotificationChannel() {

const channel = new notification.NotificationChannel();

channel.setId('default_channel');

channel.setName('Default Channel');

channel.setImportance(notification.NotificationImportance.HIGH);

notification.createNotificationChannel(channel);

}

// 创建推送通知

function showNotification(title: string, content: string) {

const notificationObj = new notification.Notification();

notificationObj.setTitle(title);

notificationObj.setContent(content);

notificationObj.setChannelId('default_channel');

notificationObj.setTimestamp(Date.now());

notification.notify(notificationObj);

}

// 调用创建通道与通知

createNotificationChannel();

showNotification('Welcome to HarmonyOS', 'This is your first notification!');

在这个示例中,我们创建了一个通知通道,并在该通道下展示了一条推送通知。通过这种方式,应用可以根据不同的消息类型,设置不同的通知通道来管理用户的通知体验。

20.3.2 用户互动设计

为了提升用户体验,鸿蒙系统支持推送消息的交互设计。开发者可以通过富媒体通知、按钮互动等功能,让用户在接收到通知后直接进行操作,而不需要打开应用。

例如,使用推送通知中的操作按钮来响应用户的点击:

const notificationObj = new notification.Notification();

notificationObj.setTitle('New Message');

notificationObj.setContent('Click to view');

notificationObj.setChannelId('default_channel');

notificationObj.addAction('view', 'View Message');

// 监听按钮点击事件

notificationObj.on('click', (action) => {

if (action === 'view') {

console.log('User clicked "View Message" button');

// 执行相应的操作

}

});

notification.notify(notificationObj);

在这个例子中,通知中包含了一个“查看消息”的按钮,用户点击按钮后会触发相应的操作。

20.4 高效的通知推送与系统资源管理

在进行消息推送和通知管理时,如何高效地管理系统资源至关重要。鸿蒙系统在这一方面提供了一些优化策略,以确保推送服务不会过度消耗设备的系统资源,特别是在电池、网络和内存方面。

20.4.1 电池优化与通知调度

对于需要高频次推送通知的应用,鸿蒙系统通过智能调度机制,在低功耗模式下延迟非重要通知,以减少电池消耗。开发者可以通过 通知优先级 来控制通知的时效性和推送方式。

20.4.2 内存与流量优化

推送系统会通过缓存机制和消息批量化处理来减少内存消耗。此外,消息内容也可以根据网络带宽的不同进行压缩,避免过多的流量消耗,特别是在 5G 网络环境下,确保通知消息的快速传递与高效展示。

小结

鸿蒙系统的消息推送与通知管理功能,凭借其强大的分布式架构和智能化的资源调度,能够为用户提供个性化、即时化的通知体验。通过高效的推送服务集成、灵活的用户通知管理以及智能的资源优化,开发者可以在鸿蒙平台上打造更加流畅与高效的推送体验,提升应用的用户互动和活跃度。

… …

文末

好啦,以上就是我这期的全部内容,如果有任何疑问,欢迎下方留言哦,咱们下期见。

… …

学习不分先后,知识不分多少;事无巨细,当以虚心求教;三人行,必有我师焉!!!

wished for you successed !!!

⭐️若喜欢我,就请关注我叭。

⭐️若对您有用,就请点赞叭。

⭐️若有疑问,就请评论留言告诉我叭。

版权声明:本文由作者原创,转载请注明出处,谢谢支持!