鸿蒙推送服务公共信息模块指南

简介: 最近公司要求实现推送功能,让用户能实时接收新消息、紧急通知等。我们完成了 pushCommon 模块的开发,支持绑定华为账号和应用内自定义账号,提供丰富的推送场景如 IM 消息、VoIP 通话提醒等。模块从鸿蒙 4.0.0 开始支持,需具备 SystemCapability.Push.PushService 系统能力。通过 PushPayload、RemoteNotificationInfo 等接口,可灵活定制推送内容和点击行为,提升用户体验。总结来说,pushCommon 模块为开发者提供了强大的推送服务支持,满足多种应用场景需求。

最近公司老板又让我们去写推送,希望用户能够实时收到各种推送通知,比如新的消息、紧急通知,甚至是应用内通话的提醒。

这两天正好搞完了,所以写个博文记录一下中间的知识点,希望方便后来的同学可以直接用上。


模块简介

这次的主角是 pushCommon 模块,这个模块提供了非常方便的推送服务公共信息。

pushCommon 模块是鸿蒙系统中的推送服务模块之一,提供了丰富的功能,包括绑定账号类型、场景化消息数据、扩展通知消息、点击事件替换数据以及应用内通话消息等。简单来说,这个模块让你可以灵活地实现各种推送消息需求,从简单的通知到复杂的应用内交互都能轻松应对。它帮助开发者更高效地集成推送服务,提升用户体验。

开发环境要求

pushCommon 模块从鸿蒙 4.0.0 开始支持,开发者可以通过 import { pushCommon } from '@kit.PushKit'; 导入模块来使用它的功能。

需要注意的是,它只能在 Stage 模型下使用,并且需要具备
SystemCapability.Push.PushService 系统能力才能正常运行。只有满足这些条件,模块的所有功能才能被正常调用和使用。


绑定账号类型 (AppProfileType)

在鸿蒙推送服务中,绑定账号的类型非常重要,因为它决定了推送的消息可以绑定到哪个账号类型上。主要有两种类型:

  • 华为账号 (PROFILE_TYPE_OS_DISTRIBUTED_ACCOUNT):用于绑定用户的华为账号,通过绑定华为账号,你可以让用户通过同一个账号在多个设备上接收推送消息,确保跨设备体验一致。
  • 应用账号 (PROFILE_TYPE_APPLICATION_ACCOUNT):用于绑定应用内自定义的账号,这通常适用于那些有自己账号系统的应用。通过绑定应用账号,用户可以接收到属于他们的个性化消息,提升整体使用体验。

例如,如果你的应用涉及用户的个人账号系统,就需要使用应用账号类型,以便让用户接收到属于他们的个性化消息,这样能够显著提高用户对应用的依赖性和参与度。


场景化消息数据 (PushPayload)

应用可以通过 receiveMessage() 获取场景化消息数据,比如聊天消息、应用后台操作通知等。PushPayload 提供了多种场景下的推送消息支持,以下是一些常见的场景:

  • IM 消息:假设你的应用是一款即时通讯工具,当用户收到新消息时,可以使用 PushPayload 获取推送数据。
{
    "data": "extraData",
    "header": {
        "token": "MA**"
    },
    "messageAction": 0,
    "notification": {
        "bigBody": "bigBodyXX",
        "bigTitle": "bigTitleXX",
        "body": "bodyXX",
        "image": "https://**/image**.png",
        "title": "titleXX"
    }
}

上面代码里面的 notification 包含了完整的通知数据,比如标题、内容、图片等,这些信息将直接用于在设备上展示通知。开发者可以通过这些字段自定义推送内容,使其更符合用户需求。

  • VoIP 通话:如果你需要应用内通话提醒(类似微信语音通话功能),可以通过 PushPayload 获取通话推送数据
{
    "data": "extraData",
    "header": {
        "token": "MA**"
    }
}

上面这种数据通常比较简单,只需提供通话的必要信息即可。这种设计也能保证消息处理的简洁和快速响应。


扩展通知消息数据 (RemoteNotificationInfo)

继承了 PushPayload,用于扩展通知功能。通过这个接口,你可以给用户推送更详细的信息,并且支持在 Stage 模型中执行各种场景化操作。举个例子,如果你需要向用户推送更丰富的通知数据(例如需要显示图像、大量文本等),这个扩展通知接口可以满足这些需求。

使用 RemoteNotificationInfo 可以进一步定制化通知内容,帮助用户更加直观地获取关键信息。这个接口非常适合需要推送重要信息的场景,比如活动促销、紧急提醒等。


扩展通知替换内容 (RemoteNotificationContent)

有时候,默认的通知内容不能满足需求,比如你想给特定用户展示个性化的标题和内容。这时可以使用 RemoteNotificationContent 替换通知内容,甚至可以在通知中叠加小图标,丰富展示效果,吸引用户注意。

  • title:设置通知的标题。通过个性化标题,让用户对通知产生兴趣,增加打开率。
  • text:设置通知的内容,可以传达详细的信息。
  • overlayIcon:叠加图标(例如显示未读消息的小红点)。这个图标可以让用户一眼就看到应用的动态信息,提高点击的可能性。

当然啦,如果你有需要,还可以自定义角标数量 ( badgeNumber),甚至可以同时返回多个角标数量信息,来展示更多的通知详情。

点击事件替换数据 (RemoteWantAgent)

当用户点击通知时,我们希望他们能直接跳转到相关内容上,从而提升用户体验。RemoteWantAgent 允许我们自定义点击行为,可以替换要跳转的数据。例如,可以指定要打开的页面名称 ( abilityName ),也可以传递额外的参数 ( parameters),这让应用内的跳转变得更加灵活。

举个例子,如果用户点击一条活动促销通知,RemoteWantAgent 可以直接将他们带到活动详情页,提升操作的流畅性。这种灵活的跳转机制使得通知功能不仅仅是传达信息,更能引导用户深入互动。


应用内通话消息 (VoIPInfo)

如果你的应用有内置的 VoIP(网络电话)功能,那么 VoIPInfo 就是为此专门设计的。

它继承了 PushPayload,包含了通话相关的关键信息,比如唯一的通话标识符 ( callId )、通话类型 ( type ) 和数据 ( data )。

用户接到 VoIP 通话请求时,可以通过这些数据将通话信息推送给用户,从而实现类似微信、钉钉的语音/视频通话功能。这样用户可以快速响应,接听或拒绝通话,提高了应用内交流的效率。


✨ 一个小的代码示例:集成推送服务

为了帮助大家更好地理解,来整一个简单的代码示例,看看如何将推送服务集成到鸿蒙应用中。

首先呢,咱先导入模块:

import { pushCommon } from '@kit.PushKit';

然后,创建一个推送场景化消息的处理方法:

function handlePushMessage(message: pushCommon.PushPayload) {
    if (message.type === 'IM') {
        console.log(` 收到即时消息: ${message.data}`);
    } else if (message.type === 'VoIP') {
        console.log(` 收到通话请求: ${message.data}`);
    } else {
        console.log(` 收到其他类型的通知: ${message.type}`);
    }
}

上面代码中呢,我们根据消息类型来区分处理逻辑,IM 处理即时消息,VoIP 处理通话请求,其他类型则统一处理。

通过这种方式,可以确保所有推送消息都能及时且正确地进行处理。

此外,我们还可以对消息的不同类型进行进一步处理,比如在收到消息后显示特定的 UI 提示,或者触发应用内的某些功能。这些定制化的处理逻辑可以极大提升用户的使用体验。


最后小总结

介个 pushCommon 模块为鸿蒙应用提供了强大的推送服务支持,无论是消息推送、应用内通话,还是复杂的点击事件处理,它都能轻松应对。

总之又完成了老板的一个需求,希望大家不踩坑~~~~

目录
相关文章
|
3天前
|
API UED 开发者
鸿蒙应用 VoIP 通话管理模块使用分享
最近老板突然提出需求,希望用户能在应用中发起语音或视频通话,并支持来电提醒、挂断、静音等功能。虽然任务复杂,但可以利用鸿蒙的voipCall模块实现这些需求。该模块提供VoIP通话管理功能,包括上报来电状态、管理通话状态及处理用户交互事件。通过导入`@kit.CallKit`并使用相关API,可以轻松实现语音和视频通话、来电提醒、静音、扬声器等操作。示例代码展示了如何处理来电和音频事件,确保用户获得流畅可靠的通话体验。希望这篇文章能帮大家避免踩坑,有需要的同学可以收藏、点赞。
19 0
|
1月前
|
监控 开发者
鸿蒙next版开发:使用HiDebug获取调试信息(ArkTS)
在HarmonyOS 5.0中,HiDebug是一个强大的应用调试工具,可帮助开发者获取系统的CPU使用率、内存信息等关键性能数据。本文详细介绍了如何在ArkTS中使用HiDebug,并提供了示例代码,帮助开发者进行性能分析和问题诊断。
65 7
|
3天前
|
API 数据安全/隐私保护 UED
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
在掌握了鸿蒙系统的开发基础后,我挑战了蓝牙功能的开发。通过Bluetooth A2DP和Access API,实现了蓝牙音频流传输、设备连接和权限管理。具体步骤包括:理解API作用、配置环境与权限、扫描并连接设备、实现音频流控制及动态切换设备。最终,我构建了一个简单的蓝牙音频播放器,具备设备扫描、连接、音频播放与停止、切换输出设备等功能。这次开发让我对蓝牙技术有了更深的理解,也为未来的复杂项目打下了坚实的基础。
85 58
探索鸿蒙的蓝牙A2DP与访问API:从学习到实现的开发之旅
|
4天前
【HarmonyOS Next开发】:ListItemGroup使用
通过使用ListItemGroup和AlphabetIndexer两种类型组件,实现带标题分类和右侧导航栏的页面
89 61
|
4天前
|
安全 数据安全/隐私保护
鸿蒙开发:一文了解软键盘相关
软键盘最主要的就是合理的进行避让,不能遮挡可输入组件,再有多个输入框的时候,需要动态的进行设置高度,这一点需要注意。
鸿蒙开发:一文了解软键盘相关
|
1天前
|
存储 API 计算机视觉
自学记录HarmonyOS Next Image API 13:图像处理与传输的开发实践
在完成数字版权管理(DRM)项目后,我决定挑战HarmonyOS Next的图像处理功能,学习Image API和SendableImage API。这两个API支持图像加载、编辑、存储及跨设备发送共享。我计划开发一个简单的图像编辑与发送工具,实现图像裁剪、缩放及跨设备共享功能。通过研究,我深刻体会到HarmonyOS的强大设计,未来这些功能可应用于照片编辑、媒体共享等场景。如果你对图像处理感兴趣,不妨一起探索更多高级特性,共同进步。
29 11
|
1天前
|
开发框架 小程序 IDE
鸿蒙原生开发手记:05-开发之外的那些事
鸿蒙原生开发手记:05-开发之外的那些事
27 9
|
4天前
|
开发者
【HarmonyOS Next开发】用户文件访问
文件所有者为登录到该终端设备的用户,包括用户私有的图片、视频、音频、文档等。 应用对用户文件的创建、访问、删除等行为,需要提前获取用户授权,或由用户操作完成。
25 10
|
4天前
|
存储 JSON 测试技术
【HarmonyOS Next开发】云开发-云数据库(二)
实现了云侧和端侧的云数据库创建、更新、修改等操作。这篇文章实现调用云函数对云数据库进行增删改查。
22 9
|
4天前
【HarmonyOS Next开发】使用两层Scroll实现一天时间轴和事件卡片的层叠显示
实现某一天24小时的时间长度和当天事件的页面。
27 9

热门文章

最新文章