# HarmonyOS NEXT 体验官 #HarmonyOS Next 通知大师:玩转多场景下的消息传递艺术 原创
在应用开发的世界里,Push通知就像是一位神通广大的超能力者,无论你的应用是在后台偷偷摸摸还是光明正大地站在前台,这位超能力者都能让你的消息瞬间穿越屏幕直达用户的心坎儿里!
要知道,为了确保消息能像闪电侠一样快速触达每一位用户,大多数应用都会选择跟第三方SDK结盟,但Push通知可不是只会简单地喊两嗓子那么简单,它可是有着七十二变的本领,能适应各种花式场景。不管是温馨提醒、紧急通知还是节日祝福,Push通知都能精准出击,直击用户的心灵深处。在开发中,通知的重要性简直堪比生命之源,它是开发者与用户之间沟通的桥梁,不仅能提升用户体验,还能让应用变得更加人性化,简直就是应用界的小太阳,温暖着每一个角落!
那么我们为什么要通知呢?意义在哪里呢?
1.增强用户参与度:
定期发送有用的内容或提醒可以增加用户的活跃度和留存率(千辛万苦千万要记得我啊~)
2.提高用户满意度:
提供个性化通知,如基于用户行为或偏好定制的消息,可以让用户感到被关注和重视。
3.促进用户忠诚度:
定期发送有价值的通知,如优惠券、会员专享福利等,可以增加用户的忠诚度。
4.营销与推广:
通过有针对性的营销活动通知,可以提高转化率和销售额。
5.紧急事件响应:
对于涉及安全、健康或紧急情况的应用,即时通知可以帮助用户快速采取行动。(贴身保护您的安全)
我们可以看到某红书在通知这一块做出的展示效果如下
聪明的你一定发现了,结构为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.');
});
这样多样式的应用内通知就实现了,快去试试试试吧