W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
HarmonyOS 提供了通知功能,即在一個應(yīng)用的 UI 界面之外顯示的消息,主要用來提醒用戶有來自該應(yīng)用中的信息。當(dāng)應(yīng)用向系統(tǒng)發(fā)出通知時,它將先以圖標(biāo)的形式顯示在通知欄中,用戶可以下拉通知欄查看通知的詳細(xì)信息。常見的使用場景:
通知相關(guān)基礎(chǔ)類包含 [ NotificationSlot ]、[ NotificationRequest ]和[ NotificationHelper ]?;A(chǔ)類之間的關(guān)系如下所示:
圖1 通知基礎(chǔ)類關(guān)系圖
NotificationSlot 可以對提示音、振動、鎖屏顯示和重要級別等進(jìn)行設(shè)置。一個應(yīng)用可以創(chuàng)建一個或多個 NotificationSlot,在發(fā)送通知時,通過綁定不同的 NotificationSlot,實現(xiàn)不同用途。
說明
NotificationSlot 需要先通過 NotificationHelper 的 addNotificationSlot(NotificationSlot)方法發(fā)布后,通知才能綁定使用;所有綁定該 NotificationSlot 的通知在發(fā)布后都具備相應(yīng)的特性,對象在創(chuàng)建后,將無法更改這些設(shè)置,對于是否啟動相應(yīng)設(shè)置,用戶有最終控制權(quán)。
不指定 NotificationSlot 時,當(dāng)前通知會使用默認(rèn)的 NotificationSlot,默認(rèn)的 NotificationSlot 優(yōu)先級為 LEVEL_DEFAULT 。
接口名 | 描述 |
---|---|
NotificationSlot(String id, String name, int level) | 構(gòu)造 NotificationSlot。 |
setLevel(int level) | 設(shè)置 NotificationSlot 的級別。 |
setName(String name) | 設(shè)置 NotificationSlot 的命名。 |
setDescription(String description) | 設(shè)置 NotificationSlot 的描述信息。 |
enableBypassDnd(boolean bypassDnd) | 設(shè)置是否繞過系統(tǒng)的免打擾模式。 |
setEnableVibration(boolean vibration) | 設(shè)置收到通知時是否使能振動。 |
setLockscreenVisibleness(int visibleness) | 設(shè)置在鎖屏場景下,收到通知后是否顯示,以及顯示的效果。 |
setEnableLight(boolean isLightEnabled) | 設(shè)置收到通知時是否開啟呼吸燈,前提是當(dāng)前硬件支持呼吸燈。 |
setLedLightColor(int color) | 設(shè)置收到通知時的呼吸燈顏色。 |
setSlotGroup(String groupId) | 綁定當(dāng)前 NotificationSlot 到一個 NotificationSlot 組。 |
NotificationSlot 的級別目前支持如下幾種, 由低到高:
NotificationRequest 用于設(shè)置具體的通知對象,包括設(shè)置通知的屬性,如:通知的分發(fā)時間、小圖標(biāo)、大圖標(biāo)、自動刪除等參數(shù),以及設(shè)置具體的通知類型,如普通文本、長文本等。
接口名 | 描述 |
---|---|
NotificationRequest() | 構(gòu)建一個通知。 |
NotificationRequest(int notificationId) | 構(gòu)建一個通知,指定通知的id。通知的Id在應(yīng)用內(nèi)容具有唯一性,如果不指定,默認(rèn)為0。 |
setNotificationId(int notificationId) | 設(shè)置當(dāng)前通知id。 |
setAutoDeletedTime(long time) | 設(shè)置通知自動取消的時間戳。 |
setContent(NotificationRequest.NotificationContent content) | 設(shè)置通知的具體類型。 |
setCreateTime(long createTime) | 設(shè)置通知的創(chuàng)建的時間戳。 |
setDeliveryTime(long deliveryTime) | 設(shè)置通知分發(fā)的時間戳。 |
setSlotId(String slotId) | 設(shè)置通知的 NotificationSlot id。 |
setTapDismissed(boolean tapDismissed) | 設(shè)置通知在用戶點擊后是否自動取消。 |
setLittleIcon(PixelMap smallIcon) | 設(shè)置通知的小圖標(biāo),在通知左上角顯示。 |
setBigIcon(PixelMap bigIcon) | 設(shè)置通知的大圖標(biāo),在通知的右邊顯示。 |
setGroupValue(String groupValue) | 設(shè)置分組通知,相同分組的通知在通知欄顯示時,將會折疊在一組應(yīng)用中顯示。 |
addActionButton(NotificationActionButton actionButton) | 設(shè)置通知添加通知 ActionButton。 |
setIntentAgent(IntentAgent agent) | 設(shè)置通知承載指定的 IntentAgent,在通知中實現(xiàn)即將觸發(fā)的事件。 |
具體的通知類型:目前支持六種類型,包括普通文本 NotificationNormalContent、長文本 NotificationLongTextContent、圖片 NotificationPictureContent、多行 NotificationMultiLineContent、社交 NotificationConversationalContent、媒體 NotificationMediaContent。
類名 | 接口名 | 描述 |
---|---|---|
NotificationNormalContent | setTitle(String title) | 設(shè)置通知標(biāo)題。 |
NotificationNormalContent | setText(String text) | 設(shè)置通知內(nèi)容。 |
NotificationNormalContent | setAdditionalText(String additionalText) | 設(shè)置通知次要內(nèi)容,是對通知內(nèi)容的補充。 |
NotificationPictureContent | setBriefText(String briefText) | 設(shè)置通知概要內(nèi)容,是對通知內(nèi)容的總結(jié)。 |
NotificationPictureContent | setExpandedTitle(String expandedTitle) | 設(shè)置通知一旦設(shè)置了,折疊時顯示setTitle(String)的值,展開時當(dāng)前設(shè)置的展開標(biāo)題。 |
NotificationPictureContent | setBigPicture(PixelMap bigPicture) | 設(shè)置通知的圖片內(nèi)容,附加在setText(String text)下方。 |
NotificationLongTextContent | setLongText(String longText) | 設(shè)置通知的長文本。 |
NotificationConversationalContent | setConversationTitle(String conversationTitle) | 設(shè)置社交通知的標(biāo)題。 |
NotificationConversationalContent | addConversationalMessage(ConversationalMessage message) | 通知添加一條消息。 |
NotificationMultiLineContent | addSingleLine(String line) | 在當(dāng)前通知中添加一行文本。 |
NotificationMediaContent | setAVToken(AVToken avToken) | 將媒體通知綁定指定的AVToken。 |
NotificationMediaContent | setShownActions(int[] actions) | 設(shè)置媒體通知待展示的按鈕。 |
說明
通知發(fā)布后,通知的設(shè)置不可修改。如果下次發(fā)布通知使用相同的 id,就會更新之前發(fā)布的通知。
NotificationHelper 封裝了發(fā)布、更新、訂閱、刪除通知等靜態(tài)方法。訂閱通知、退訂通知和查詢系統(tǒng)中所有處于活躍狀態(tài)的通知,有權(quán)限要求需為系統(tǒng)應(yīng)用或具有訂閱者權(quán)限。
接口名 | 描述 |
---|---|
publishNotification(NotificationRequest request) | 發(fā)布一條通知。 |
publishNotification(String tag, NotificationRequest) | 發(fā)布一條帶TAG的通知。 |
cancelNotification(int notificationId) | 取消指定的通知。 |
cancelNotification(String tag, int notificationId) | 取消指定的帶 TAG 的通知。 |
cancelAllNotifications() | 取消之前發(fā)布的所有通知。 |
addNotificationSlot(NotificationSlot slot) | 創(chuàng)建一個 NotificationSlot。 |
getNotificationSlot(String slotId) | 獲取 NotificationSlot。 |
removeNotificationSlot(String slotId) | 刪除一個 NotificationSlot。 |
getActiveNotifications() | 獲取當(dāng)前應(yīng)用發(fā)的活躍通知。 |
getActiveNotificationNums() | 獲取系統(tǒng)中當(dāng)前應(yīng)用發(fā)的活躍通知的數(shù)量。 |
setNotificationBadgeNum(int num) | 設(shè)置通知的角標(biāo)。 |
setNotificationBadgeNum() | 設(shè)置當(dāng)前應(yīng)用中活躍狀態(tài)通知的數(shù)量在角標(biāo)顯示。 |
通知的開發(fā)指導(dǎo)分為創(chuàng)建 NotificationSlot、發(fā)布通知和取消通知等開發(fā)場景。
創(chuàng)建NotificationSlot
NotificationSlot 可以設(shè)置公共通知的震動,鎖屏模式,重要級別等,并通過調(diào)用 NotificationHelper.addNotificationSlot() 發(fā)布 NotificationSlot 對象。
NotificationSlot slot = new NotificationSlot("slot_001","slot_default", NotificationSlot.LEVEL_MIN); // 創(chuàng)建notificationSlot對象
slot.setDescription("NotificationSlotDescription");
slot.setEnableVibration(true); // 設(shè)置振動提醒
slot.setLockscreenVisibleness(NotificationRequest.VISIBLENESS_TYPE_PUBLIC);//設(shè)置鎖屏模式
slot.setEnableLight(true); // 設(shè)置開啟呼吸燈提醒
slot.setLedLightColor(Color.RED.getValue());// 設(shè)置呼吸燈的提醒顏色
try {
NotificationHelper.addNotificationSlot(slot);
} catch (RemoteException ex) {
HiLog.warn(LABEL, "addNotificationSlot occur exception.");
}
發(fā)布通知
int notificationId = 1;
NotificationRequest request = new NotificationRequest(notificationId);
request.setSlotId(slot.getId());
String title = "title";
String text = "There is a normal notification content.";
NotificationNormalContent content = new NotificationNormalContent();
content.setTitle(title)
.setText(text);
NotificationContent notificationContent = new NotificationContent(content);
request.setContent(notificationContent); // 設(shè)置通知的內(nèi)容
try {
NotificationHelper.publishNotification(request);
} catch (RemoteException ex) {
HiLog.warn(LABEL, "publishNotification occur exception.");
}
取消通知
取消通知分為取消指定單條通知和取消所有通知,應(yīng)用只能取消自己發(fā)布的通知。
int notificationId = 1;
try {
NotificationHelper.cancelNotification(notificationId);
} catch (RemoteException ex) {
HiLog.warn(LABEL, "cancelNotification occur exception.");
}
try {
NotificationHelper.cancelAllNotifications();
} catch (RemoteException ex) {
HiLog.warn(LABEL, "cancelAllNotifications occur exception.");
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: