HarmonyOS 鸿蒙实现多场景的通知

发布于 1周前 作者 wuwangju 来自 鸿蒙OS

HarmonyOS 鸿蒙实现多场景的通知

背景

在应用开发中push场景是应用在后台或者在前台时不可缺少的重要功能,要知道为了触达率和离线通知大多数应用都选择使用第三方sdk ,那么在应用开发中通知场景不仅仅是简单的提示文字,他还有多样化的场景实现,在开发中,通知的重要性不言而喻。通知是一种有效且直接的沟通方式,可以帮助开发者与用户之间建立更好的互动,并提升用户体验。那么通知的意义都有哪些呢

1.增强用户参与度:

定期发送有用的内容或提醒可以增加用户的活跃度和留存率。

2.提高用户满意度:

提供个性化通知,如基于用户行为或偏好定制的消息,可以让用户感到被关注和重视。

3.促进用户忠诚度:

定期发送有价值的通知,如优惠券、会员专享福利等,可以增加用户的忠诚度。

4.营销与推广:

通过有针对性的营销活动通知,可以提高转化率和销售额。

5.紧急事件响应:

对于涉及安全、健康或紧急情况的应用,即时通知可以帮助用户快速采取行动。

打开手机向下滑动查看状态栏中的通知可以看到,大多数app的通知消息的格式结构为logo、标题、推送时间、内容、内容缩略图等方式进行展示,所以我们在案例中也采用类似的形式

当前展示平台为安卓平台,接下来在harmoneyOS中实现多种类型的推送

效果实现

在功能实现之前我们还需要实现通知发送的配置,应用需要获取用户授权才能发送通知。在通知发布前调用requestEnableNotification()方法,弹窗让用户选择是否允许发送通知,后续再次调用requestEnableNotification()方法时,则不再弹窗。

在页面的生命周期aboutToAppear()中来实现

notificationManager.isNotificationEnabled().then((data: boolean) => {

      hilog.info(DOMAIN_NUMBER, TAG, "isNotificationEnabled success, data: " + JSON.stringify(data));

      if(!data){

        notificationManager.requestEnableNotification(context).then(() => {

          hilog.info(DOMAIN_NUMBER, TAG, [ANS] requestEnableNotification success);

        }).catch((err : BusinessError) => {

          if(1600004 == err.code){

          } else {

          }

        });

      }

    }).catch((err : BusinessError) => {

      hilog.error(DOMAIN_NUMBER, TAG, isNotificationEnabled fail: ${JSON.stringify(err)});

});

执行之后在应用中展示如下

之后对 notificationContentType进行配置,首先实现纯文本类型的通知

 notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT

配置完成后构建内容

let notificationRequest: notificationManager.NotificationRequest = {

         id: 1,

         content: {

           notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,

           normal: {

             title: ‘测试标题’,

             text: ‘我是一个测试的内容’,

             additionalText: ‘test_additionalText’,

           }

         }

       };

然后我们创建一个按钮来呼出通知

把notificationManager.publish的呼出事件放入button按钮中

Button(“click”).onClick(()=>{

    

       notificationManager.publish(notificationRequest, (err: BusinessError) => {

         if (err) {

           hilog.error(DOMAIN_NUMBER, TAG, Failed to publish notification. Code is ${err.code}, message is ${err.message});

           return;

         }

         hilog.info(DOMAIN_NUMBER, TAG, ‘Succeeded in publishing notification.’);

       });

     })

点击按钮后可以看到通知消息在手机上已经显示成功,我们创建的通知已经展示了出来

那么我们如果在应用中想要实现下载进度的通知如何实现呢?

这时候要在信息创建中构造进度条的通知模板

 template: {

           name: ‘downloadTemplate’,

           data: { title: ‘成龙历险记大电影’, fileName: ‘xxxx.mp4’, progressValue: 45 }

         }

详细代码如下

let notificationRequest: notificationManager.NotificationRequest = {

         id: 1,

         content: {

           notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT,

           normal: {

             title: ‘测试标题’,

             text: ‘我是一个测试的内容’,

             additionalText: ‘test_additionalText’,

           }

         },

         template: {

           name: ‘downloadTemplate’,

           data: { title: ‘成龙历险记大电影’, fileName: ‘xxxx.mp4’, progressValue: 45 }

         }

       };

按钮的事件并没有改变,构造完成后直接点击button按钮

可以看到进度通知就实现了

进度条结束之后调用通知删除事件

notificationManager.cancel(1, (err: BusinessError) => {

   if (err) {

     hilog.error(DOMAIN_NUMBER, TAG, Failed to cancel notification. Code is ${err.code}, message is ${err.message});

     return;

   }

   hilog.info(DOMAIN_NUMBER, TAG, ‘Succeeded in cancel notification.’);

 });

这样多样式的应用内通知就实现了

 



关于HarmonyOS 鸿蒙实现多场景的通知的问题,您也可以访问:https://www.itying.com/category-93-b0.html 联系官网客服。

回到顶部