国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

HarmonyOS - 實(shí)現(xiàn)消息通知功能

系統(tǒng) OpenHarmony
對(duì)于消息通知的應(yīng)用是一個(gè)APP必不可少的部分,是APP與用戶交互的一個(gè)通道。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

前言

通知是手機(jī)軟件的消息推送,一般需要設(shè)置通知的權(quán)限為允許通知才能在狀態(tài)欄查看到通知。主要有以下使用場(chǎng)景:

  1. app內(nèi)的通知:如微信新消息的提醒,以及一些APP廣告的推送,APP版本更新。
  2. 系統(tǒng)的通知,如電量過(guò)低,短信提醒等。
  3. 顯示正在進(jìn)行的事件,如音樂(lè)播放,下載等都是通知。

效果展示

#夏日挑戰(zhàn)賽# HarmonyOS - 實(shí)現(xiàn)消息通知功能-開(kāi)源基礎(chǔ)軟件社區(qū)

實(shí)現(xiàn)步驟

1、定義觸發(fā)通知的事件

(1)首先需要定義UI

(一般情況下,不需要UI,本實(shí)例為了能方便獲取觸發(fā)事件而定義UI)。

<!--文本通知按鈕-->
<button class="button_notification" onclick="clickStartInputNotification">
{{$t('strings.startInputNotifiction')}}
</button>
<!--圖片通知按鈕-->
<button class="button_notification" onclick="clickStartButtonNotifiction">
{{$t('strings.startButtonNotifiction')}}
</button>
<!--取消通知-->
<button class="button_notification" onclick="clickCancelNotification">
{{$t('strings.cancelNotifiction')}}
</button>

(2)實(shí)現(xiàn)JS FA調(diào)用PA的邏輯,并實(shí)現(xiàn)點(diǎn)擊事件

import prompt from '@system.prompt';
export default {
//文本通知
clickStartInputNotification:function(){
this.showToast("clickStartInputNotification");
this.notification(0x1001);
},
//圖片通知
clickStartButtonNotifiction:function(){
this.showToast("clickStartButtonNotifiction");
this.notification(0x1002);
},
//取消通知
clickCancelNotification:function(){
this.showToast("clickCancelNotification");
this.notification(0x1003);
},
//初始化action
initAction: function (code) {
var actionData = {};
actionData.notify = "this actionData form JS ";
var action = {};
action.bundleName = "com.chinasoft.example";
action.abilityName = "NotificationAbility";
action.messageCode = code;
action.data = actionData;
action.abilityType = 1;
action.syncOption = 0;
return action;
},
//調(diào)用PA
notification: async function(code) {
try {
var action = this.initAction(code);
var result = await FeatureAbility.callAbility(action);
console.info(" result = " + result);
this.showToast(result);
} catch (pluginError) {
console.error("startNotification : Plugin Error = " + pluginError);
}
},
}

2、實(shí)現(xiàn)通知的邏輯

(1)實(shí)現(xiàn)onRemoteRequest()方法

在工程中新建一個(gè)InternalAbility繼承自AceInternalAbility,實(shí)現(xiàn)onRemoteRequest()方法。

/*
* 當(dāng)JS側(cè)調(diào)用FeatureAbility.callAbility(OBJECT)接口時(shí)調(diào)用此方法,通過(guò)JS傳來(lái)的指令執(zhí)行對(duì)應(yīng)的函數(shù)。
* */
public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) {
String result = data.readString();
switch (code) {
case 0x1001:
startTextNotification(reply);//文本類(lèi)型的通知
break;
case 0x1002:
startPictureNotification(reply);//圖片類(lèi)型的通知
break;
case 0x1003:
cancelNotification(reply);//取消通知
break;
default:
reply.writeString("服務(wù)沒(méi)有定義");//若是沒(méi)有對(duì)應(yīng)命令則回復(fù)
return false;
}
return true;
}

(2)在MainAbility中注冊(cè)與取消注冊(cè)

@Override
public void onStart(Intent intent) {
super.onStart(intent);
NotificationAbility.register(this);//當(dāng)MainAbility創(chuàng)建的時(shí)候注冊(cè)
}
@Override
public void onStop() {
super.onStop();
NotificationAbility.deRegister();//當(dāng)Ability銷(xiāo)毀的時(shí)候注銷(xiāo)
}

(3)通知開(kāi)發(fā)步驟

通知相關(guān)基礎(chǔ)類(lèi)包含NotificationSlot、NotificationRequest和NotificationHelper。

NotificationSlot可以對(duì)提示音、振動(dòng)、重要級(jí)別等進(jìn)行設(shè)置。一個(gè)應(yīng)用可以創(chuàng)建一個(gè)或多個(gè)NotificationSlot,在發(fā)布通知時(shí),通過(guò)綁定不同的NotificationSlot,實(shí)現(xiàn)不同用途。NotificationRequest用于設(shè)置具體的通知對(duì)象,包括設(shè)置通知的屬性,如:通知的分發(fā)時(shí)間、小圖標(biāo)、大圖標(biāo)、自動(dòng)刪除等參數(shù),以及設(shè)置具體的通知類(lèi)型,如普通文本、長(zhǎng)文本等。NotificationHelper封裝了發(fā)布、更新、刪除通知等靜態(tài)方法。在這里主要通過(guò)介紹文本消息通知和圖片消息通知。

定義通知類(lèi)型并設(shè)置基本屬性內(nèi)容

設(shè)置文本通知的頭部文本,通知標(biāo)題,通知的內(nèi)容。

//1.設(shè)置通知的類(lèi)型以及設(shè)置通知的標(biāo)題,正文等屬性
NotificationRequest.NotificationNormalContent normalContent
= new NotificationRequest.NotificationNormalContent();
normalContent.setTitle("文本消息通知");//設(shè)置通知的標(biāo)題
normalContent.setAdditionalText("頭部文本");//設(shè)置通知的頭部文本
normalContent.setText("這是一個(gè)文本消息通知");//設(shè)置通知的正文內(nèi)容

設(shè)置圖片通知的頭部文本,通知標(biāo)題,通知的簡(jiǎn)短介紹,通知圖片。

pictureContent.setTitle("notifiction");
PixelMap pixelMap = getPixMap();
pictureContent.setBigPicture(pixelMap);//設(shè)置通知展示圖片
pictureContent.setAdditionalText("這是一個(gè)圖片通知");//設(shè)置通知的頭部文本
pictureContent.setBriefText("對(duì)于通知的簡(jiǎn)介");//設(shè)置通知的簡(jiǎn)要介紹

定義通知的響應(yīng)按鈕

如果響應(yīng)的按鈕為文本則需要設(shè)置builder的第一個(gè)參數(shù)為null,若響應(yīng)的按鈕為圖片則需要設(shè)置builder的第一個(gè)參數(shù)為PixelMap對(duì)象。

//2.設(shè)置通知的響應(yīng)按鈕
IntentAgent intentAgent = setIntentAgent();
NotificationActionButton actionButton = new NotificationActionButton.Builder(null,
"回復(fù)", intentAgent)//設(shè)置回復(fù)按鈕文本內(nèi)容以及設(shè)置回復(fù)的action
.addNotificationUserInput(
new NotificationUserInput.Builder("QUICK_NOTIFICATION_REPLY")
.setTag("輸入文本").build())//設(shè)置回復(fù)消息的tag
.setSemanticActionButton(NotificationConstant.SemanticActionButton.ARCHIVE_ACTION_BUTTON)
.setAutoCreatedReplies(false)
.build();

NotificationRequest設(shè)置

通過(guò)NotificationRequest對(duì)象對(duì)消息進(jìn)行封裝,設(shè)置通知內(nèi)容,id以及回復(fù)按鈕。

NotificationRequest.NotificationContent notificationContent = new NotificationRequest.NotificationContent(
normalContent);//將normalContent作為參數(shù)傳給NotificationRequest對(duì)象
NotificationRequest notificationRequest = new NotificationRequest(100);//設(shè)置通知id
notificationRequest.setContent(notificationContent);//notificationRequest對(duì)象設(shè)置通知內(nèi)容
notificationRequest.addActionButton(actionButton);//將回復(fù)動(dòng)作按鈕添加進(jìn)notificationRequest

發(fā)布通知

(發(fā)布通知后手機(jī)狀態(tài)欄會(huì)有通知信息顯示)。

通過(guò)調(diào)用NotificationHelper的publishNotification(NotificationRequest notificationRequest)。

NotificationHelper.publishNotification(notificationRequest);

取消通知

(取消通知后通知會(huì)從手機(jī)狀態(tài)欄消失)。

通過(guò)調(diào)用NotificationHelper的cancelNotification(notification id)方法來(lái)實(shí)現(xiàn),通過(guò)notificationid來(lái)辨別通知。

NotificationHelper.cancelNotification(100);

其他功能

若想對(duì)通知的提示音,振動(dòng),重要級(jí)別等進(jìn)行設(shè)置,需要用到NotificationSlot對(duì)象,需要在發(fā)布前就對(duì)其進(jìn)行設(shè)置。

其主要接口如下表。

接口名

描述

NotificationSlot(String id, String name, int level)

構(gòu)造NotificationSlot。

setLevel(int level)

設(shè)置NotificationSlot的級(jí)別。

setName(String name)

設(shè)置NotificationSlot的命名。

setDescription(String description)

設(shè)置NotificationSlot的描述信息。

enableBypassDnd(boolean bypassDnd)

設(shè)置是否繞過(guò)系統(tǒng)的免打擾模式。

setEnableVibration(boolean vibration)

設(shè)置收到通知時(shí)是否使能振動(dòng)。

setEnableLight(boolean isLightEnabled)

設(shè)置收到通知時(shí)是否開(kāi)啟呼吸燈,前提是當(dāng)前硬件支持呼吸燈。

setLedLightColor(int color)

設(shè)置收到通知時(shí)的呼吸燈顏色。

注意:這個(gè)對(duì)象只有在真機(jī)上才有真實(shí)效果。

總結(jié)

以上就是開(kāi)發(fā)一個(gè)消息通知的完整過(guò)程,對(duì)于消息通知的應(yīng)用是一個(gè)APP必不可少的部分,是APP與用戶交互的一個(gè)通道。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2025-05-29 01:33:00

微服務(wù)架構(gòu)系統(tǒng)

2017-03-16 08:46:57

延時(shí)消息環(huán)形隊(duì)列數(shù)據(jù)結(jié)構(gòu)

2022-07-12 17:33:00

消息定時(shí)提醒鴻蒙

2022-07-28 14:31:04

canvas鴻蒙

2021-08-04 10:22:27

鴻蒙HarmonyOS應(yīng)用

2017-04-07 10:30:34

Windows 10Windows消息通知

2011-05-06 15:00:52

Service BroSQL Server

2024-01-31 09:42:11

RabbitMQ消息隊(duì)列.NET

2022-06-02 14:27:05

UI框架JS

2025-03-31 08:39:55

2011-10-19 09:30:23

jQuery

2023-10-27 16:15:35

鴻蒙天氣服務(wù)功能

2017-03-20 09:50:35

消息隊(duì)列架構(gòu)消息

2011-07-18 13:56:19

2011-07-22 16:47:53

iOS 通知 xcode

2021-02-19 09:17:48

微軟Edge瀏覽器

2021-02-25 15:14:12

鴻蒙HarmonyOS應(yīng)用開(kāi)發(fā)

2015-05-11 10:57:01

Android M谷歌

2011-07-22 16:57:44

iOS 通知

2010-02-23 14:48:38

WCF事件通知
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩精品视频无播放器在线看| 在线播放不卡| 丁香花高清电影在线观看完整版| 国产成人精品一区二区| 国产精品久久三区| 老牛影视一区二区三区| 色综合视频一区二区三区44| 中文在线www| 日本一区视频在线| 久久精品国产亚洲| 日本精品一区二区三区四区的功能| 九一久久久久久| 香蕉综合视频| 女同视频在线观看| 精品国产乱码久久久久| 久久久久久久久久国产| 欧美日本视频在线| 国产精品沙发午睡系列990531| 成人午夜视频免费看| 国产精品无码专区av在线播放| 欧美三电影在线| 一区二区三区**美女毛片| 久久国产精品露脸对白| 伊人久久综合网另类网站| 国产伦子伦对白在线播放观看| 久久天堂电影| jizz欧美激情18| 亚洲高清123| 岛国视频一区免费观看| 久久久免费精品视频| 亚洲欧美日韩高清| 精品国一区二区三区| 精品av在线播放| 最新国产成人在线观看| 国产亚洲精品资源在线26u| 中文在线日韩| 午夜影视一区二区三区| 国产网站观看9久| 成人av网页| 任我爽在线视频精品一| 国产精品免费看久久久香蕉| 午夜精品在线视频| 亚洲另类在线一区| 国产精品护士白丝一区av| 久久综合久久鬼色中文字| 国产成人精品免费| 粉嫩av亚洲一区二区图片| 国产精品久久777777毛茸茸| 亚洲专区在线| 精品一区二区三区视频在线观看| 国产精品一区二区av交换| 91精品尤物| 日本久久成人网| 悠悠资源网亚洲青| 国产亚洲字幕| 91成人在线| 六月丁香久久丫| 97se亚洲| 久久影视一区| 亚洲精品一级二级三级| 一区视频在线| 丝瓜av网站精品一区二区| 亚洲综合婷婷| 亚洲精品字幕| 国产日韩1区| 久久99蜜桃精品| 国产精品人人爽人人做我的可爱| 免费视频一区| 国产成人av电影在线| 国产精品视频免费看| 欧美视频第二页| 久久久黄色av| 成人9ⅰ免费影视网站| 国产免费xxx| 大香一本蕉伊线亚洲网| 国产51人人成人人人人爽色哟哟 | 久久网站免费视频| www.4438全国最大| 亚洲蜜桃精久久久久久久| 久草视频视频在线播放| 亚洲综合免费观看高清完整版| 成人性视频网站| 成人国产电影在线观看| 亚洲国产91色在线| 亚洲成a人v欧美综合天堂| 亚洲国产欧美一区二区三区久久| 久久精品在这里| 亚洲欧洲色图综合| 日本韩国欧美在线| 欧美激情一区二区三级高清视频| 91网免费观看| 国产欧美日韩伦理| 男人插曲女人视频免费| 青春草视频在线| 中文字幕免费精品| 色综合久久久久综合体桃花网| 国产精品第1页| 精品欧美一区二区在线观看视频 | 日本欧美黄网站| av天在线播放| 国产欧美日韩影院| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 在线观看国产精品91| 日韩免费电影一区二区| 免费a级人成a大片在线观看| 欧美黄色一区| 精品少妇一区二区三区视频免付费| 91免费电影网站| 在线宅男视频| 91精品国偷自产在线电影 | 精品久久免费| 成人97人人超碰人人99| 九九热视频这里只有精品| 不卡影院一区二区| 国产成人手机高清在线观看网站| 欧美性xxxx极品hd欧美风情| 国产一区精品视频| 伦理av在线| 1区2区3区精品视频| 成人在线看片| 国产精品高清乱码在线观看| 99久久精品国产精品久久| 国产精品www| 一本一道波多野毛片中文在线| 激情六月婷婷综合| 亚洲石原莉奈一区二区在线观看| 久草热视频在线观看| 成人中文字幕视频| 欧美精品一二三| 久久久999免费视频| 亚洲香蕉av| 日韩免费成人网| 日本福利视频在线| 亚洲精品一区二区妖精| 91精品国产一区二区三区| 国产一区二区三区黄| 爱高潮www亚洲精品| 欧美激情在线一区二区三区| 欧美日韩国产123| 欧美黑人在线观看| 新版的欧美在线视频| 亚洲国产视频网站| 国产亚洲精品久久久久久久| 嗯用力啊快一点好舒服小柔久久| 在线不卡欧美精品一区二区三区| 99热久久这里只有精品| 国模吧视频一区| www.国产精品一二区| 久热国产在线| 国产精品―色哟哟| 亚洲自拍欧美另类| 大型av综合网站| 欧美成人一区二区三区| 日本1级在线| 国产精品人妖ts系列视频| 黄色一级视频播放| 中国成人一区| 日本乱人伦a精品| 亚洲精品一区三区三区在线观看| 欧美午夜在线观看| 99re6热在线精品视频播放| 国产成人免费高清| 日日骚一区二区网站| 亚洲福利精品| 97超碰国产精品女人人人爽| 狠狠操一区二区三区| 亚洲无线视频| 国产精品网站入口| 免费av一区| 日韩av片永久免费网站| 久久99精品国产自在现线| 欧美激情在线视频二区| 欧美日韩黄色| 91国产精品视频在线| 蜜臀av一区| 国产成人黄色av| 欧美日韩精品一区二区视频| 日韩免费在线免费观看| 欧美特大特白屁股xxxx| 国产一区二区av| 日韩大陆av| 8090成年在线看片午夜| 国产成人三级| 7777精品视频| 国产一卡不卡| 亚洲最大成人免费视频| 欧美午夜不卡| 国产精品一区二区久久| 欧美日本三区| 欧美爱爱视频网站| 国产欧美一区二区三区鸳鸯浴 | 国产99精品国产| www.玖玖玖| 国产精品久久久久永久免费观看 | 亚洲国产日韩欧美在线| 欧美xxxx黑人又粗又长密月| 日本女人一区二区三区| 四虎影院一区二区三区 | 国产美女在线观看| 中文字幕不卡在线视频极品|