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

简介: 最近公司要求实现推送功能,让用户能实时接收新消息、紧急通知等。我们完成了 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 模块为鸿蒙应用提供了强大的推送服务支持,无论是消息推送、应用内通话,还是复杂的点击事件处理,它都能轻松应对。

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

目录
相关文章
|
6月前
|
机器学习/深度学习 定位技术 开发工具
必知的技术知识:ios个推推送集成
必知的技术知识:ios个推推送集成
117 0
HarmonyOS学习路之开发篇——公共事件与通知(一)
HarmonyOS通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力,通过ANS(Advanced Notification Service,即通知增强服务)系统服务来为应用程序提供发布通知的能力。
HarmonyOS学习路之开发篇——公共事件与通知(二)
HarmonyOS提供了应用的通知功能,即在应用外层通过使用应用图标进行一些事件的通知。常见的使用场景
|
数据安全/隐私保护 iOS开发
IOS系统推送原理
IOS系统推送原理
188 0
|
移动开发 JavaScript 前端开发
ReactNative集成个推消息推送
ReactNative集成个推消息推送
756 0
ReactNative集成个推消息推送
|
搜索推荐 iOS开发
iOS小技能:消息推送扩展的使用
iOS小技能:消息推送扩展的使用
565 0
iOS小技能:消息推送扩展的使用
|
IDE Java 开发工具
集成极光推送遇到的问题
文章目录 解决1: 2.您只需要将minsdkversion更改为21而不是16 这个问题有两种不同的答案,但我认为最合适的是第二种解决方案。 这是Google的官方解释: 原文: 翻译:对Android构建失败进行故障排除:
276 0
|
测试技术 iOS开发
APNS IOS 消息推送沙盒模式和发布模式
在做.NET向IOS设备的App进行消息推送时候,采用的是PushSharp开源类库进行消息的推送,而在开发过程中,采用的是测试版本的app,使用的是测试的p12证书采用的是ApnsConfiguration.ApnsServerEnvironment.Sandbox模式,而在项目发布之后,现在使用的是发布版的证书进行推送,发现不能推送成功,最后才发现在使用PushSharp进行发布后的项目的推送需要使用ApnsConfiguration.ApnsServerEnvironment.Production模式。
1424 0
|
iOS开发
环信 3.0 iOS 客户端的集成
环信3.0ios客户端的集成(一)环信3.0ios客户端的集成(二)环信3.0ios客户端的集成(三)环信3.0ios客户端的集成(四)环信3.0ios客户端的集成(五)环信3.
859 0
极光推送集成
极光推送集成(一)极光推送集成(二)极光推送集成(三)极光推送集成(四)极光推送集成(五)极光推送集成(六)极光推送集成(七)极光推送集成(八)—— 工程实践
1288 0

热门文章

最新文章