鸿蒙OS开发实例:【通知消息】

电子说

1.2w人已加入

描述

背景

HarmonyOS 论坛中有研发人员求助,反馈通知没有没有声音,因此在真机上验证了一下,果不其然,没有通知的提示音,后来解决办法也非常简单,在手机设置应用中,将可以打开的通知提示统统改为铃声。

问题是解决了,但有必要分享一下HarmonyOS中的通知问题

实践总结

  1. slotType的设置,一定要放在 NotificationRequest 结构体中,使用NotificationManager.addSlot 这个函数是不起作用的
  2. NOTIFICATION_CONTENT_PICTURE 这个类型的通知,并不会展示图片
  3. NOTIFICATION_CONTENT_CONVERSATION 这个类型其实是不支持的
  4. 官方指导 图片类型 通知样例参数在 HarmonyOS SDK API 9上边使用错误

错误参数:pixelFormat:"ARGB_8888"

let opts = { editable:true, pixelFormat:"ARGB_8888", size: {height:100, width : 150}};
复制

更正:pixelFormat: image.PixelMapFormat.RGBA_8888, 即 枚举类型

let opts = { editable:true, pixelFormat: image.PixelMapFormat.RGBA_8888, size: {height:100, width : 150}};
复制

准备条件

  1. HarmonyOS 4.0
  2. HarmonyOS SDK API 9

实践功能介绍

备注: 参照[指导][gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]

HarmonyOS

  1. NOTIFICATION_CONTENT_BASIC_TEXT(普通文本类型)
  2. NOTIFICATION_CONTENT_LONG_TEXT (长文本类型)
  3. NOTIFICATION_CONTENT_MULTILINE (多行文本类型)
  4. NOTIFICATION_CONTENT_PICTURE (图片类型)
  5. NOTIFICATION_CONTENT_CONVERSATION (会话类型)
  6. 进度条类型 (个人观点:这个不是一个类型,仅仅是基于基础通知类型从而实现的一个功能)

注意: NOTIFICATION_CONTENT_CONVERSATION 在SDK中出现了,官方指导中没有说明

样式说明

NOTIFICATION_CONTENT_BASIC_TEXT(普通文本类型)

HarmonyOS

NOTIFICATION_CONTENT_LONG_TEXT (长文本类型)

  • 默认状态

HarmonyOS

  • 展开状态

HarmonyOS

NOTIFICATION_CONTENT_MULTILINE (多行文本类型)

默认状态

HarmonyOS

展开状态

HarmonyOS

NOTIFICATION_CONTENT_PICTURE (图片类型)

HarmonyOS

官网指导的样子

HarmonyOS

进度条通知

  • 准备下载

HarmonyOS

  • 下载中

HarmonyOS

  • 下载完成

HarmonyOS

  • 下载失败

HarmonyOS

SlotType

这个属性功能真正使用时间,是今天才开始。

这个属性功能,根据官方指导,有两种设置方式

第一种

let notificationRequest = {
   id: 1, //可以按照自己应用实际的情况,生成其它数字
   slotType: NotificationManager.SlotType.SOCIAL_COMMUNICATION //可以选择其它类型
}

NotificationManager.publish(notificationRequest)
复制

第二种

let notificationRequest = {
  ......
}

function addSlotCallBack(err) {
  if (err) {
    console.info("addSlot failed " + JSON.stringify(err));
  } else {
    console.info("addSlot success");
  }
}
NotificationManager.addSlot(NotificationManager.SlotType.SOCIAL_COMMUNICATION, addSlotCallBack);

NotificationManager.publish(notificationRequest)
复制

其中第2种方式,实际是不生效的,虽然可以在控制台看到日志输出

SlotType 具体功能现象

根据第1种实现方式,如果没有slotType这个字段,默认值其实是其它类型,在代码层面没有表现出来,但是通过用户设置交互层面,可以看到表象

场景设定

"普通文本", "长文本", "多行类型" 统一指定slotType为NotificationManager.SlotType.SOCIAL_COMMUNICATION

“带图片类型” 不设置slotType

真机场景查看

设置 -> 通知和状态栏 -> 选择自己的应用(实践应用:HarmonyLearn)-> 找一下有没有类别项,如果没有,可以根据本实践主页面进一下相关操作

实践主页样式

HarmonyOS

验证过程

  1. 点击“带图片类型”, 按照“真机场景查看” 的步骤操作,应该可以看到 “类别” 菜单了,但子菜单只有一个 “社交通讯”

HarmonyOS

  1. 点击"普通文本" / "长文本" / "多行类型", 按照“真机场景查看” 的步骤操作,应该可以看到 “类别” 菜单中出现了一个“其他”子菜单

HarmonyOS

铃声行为设定

通过“验证过程”,已可以了解到,如果要设置通知铃声,可以进入“社交通讯” & “其它” 里边去详细设置

HarmonyOSHarmonyOS

横幅样式

在阅读官方指导过程中,“横幅通知” 这个词应该见到过,它的具体表现是什么样子呢?

效果图

HarmonyOS

如何设置

设置 -> 通知和状态栏 -> 选择自己的应用(实践应用:HarmonyLearn -> 提醒方式 -> "横幅通知"

HarmonyOS

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分