生活随笔
收集整理的這篇文章主要介紹了
HarmonyOS之后台代理定时提醒的功能使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、簡介
在應用開發(fā)時,可以調(diào)用后臺代理提醒類 ReminderRequest 去創(chuàng)建定時提醒,包括倒計時、日歷、鬧鐘三種提醒類型。 使用后臺代理提醒能力后,應用可以被凍結(jié)或退出,計時和彈出提醒的功能將被后臺系統(tǒng)服務代理。
二、API 說明
ReminderRequest 涉及的基礎(chǔ)類包括 ReminderHelper、ReminderRequestTimer、ReminderRequestCalendar、ReminderRequestAlarm,基礎(chǔ)類之間的關(guān)系如下圖所示:
ReminderHelper:封裝了發(fā)布、取消提醒類通知的方法。ReminderHelper 主要接口:
接口名描述 public static int publishReminder(ReminderRequest reminderReq) throws RemoteException, ReminderManager.AppLimitExceedsException, ReminderManager.SysLimitExceedsException 發(fā)布一個定時提醒類通知 ReminderManager.AppLimitExceedsException 系統(tǒng)中保存的當前應用有效的提醒個數(shù)超出最大限制數(shù)量30個時拋出(不包括已經(jīng)超時,即后續(xù)不會再提醒的提醒實例) ReminderManager.SysLimitExceedsException 系統(tǒng)中保存的整個系統(tǒng)有效的提醒個數(shù)超出最大限制數(shù)量2000個時拋出(不包括已經(jīng)超時,即后續(xù)不會再提醒的提醒實例) public static void addNotificationSlot(NotificationSlot slot) throws RemoteException 注冊一個提醒類需要使用的NotificationSlot public static void cancelReminder(int reminderId) throws RemoteException 取消一個指定的提醒類通知。(reminderId從publishReminder的返回值獲取) public static void removeNotificationSlot(String slotId) throws RemoteException 刪除一個slot實例 public static List getValidReminders() throws RemoteException 獲取當前應用設置的所有有效的提醒 public static void cancelAllReminders() throws RemoteException 取消當前應用設置的所有提醒
ReminderRequest:后臺代理提醒類基類,封裝了提醒相關(guān)的屬性查詢和設置的操作。ReminderRequest 主要接口:
接口名描述 public long getRingDuration() 獲取設置的提醒時長,單位秒。如設置的開始響鈴后的響鈴時長 public int getSnoozeTimes() 獲取設置的延遲提醒次數(shù) public long getTimeInterval() 獲取設置的延遲提醒間隔 public ReminderRequest setRingDuration(long ringDurationInSeconds) 設置提醒時長,單位秒,如設置開始響鈴后的響鈴時長 public ReminderRequest setSnoozeTimes(int snoozeTimes) 設置延遲提醒的次數(shù)。(倒計時設置延遲提醒無效) public ReminderRequest setTimeInterval(long timeIntervalInSeconds) 設置延遲提醒的時間間隔。(倒計時設置延遲提醒無效) public ReminderRequest setActionButton(String title, int type) 在提醒彈出的通知界面中添加NotificationActionButton public ReminderRequest setIntentAgent(String pkgName, String abilityName) 設置點擊通知信息后需要跳轉(zhuǎn)的目標包的信息 public ReminderRequest setMaxScreenIntentAgent(String pkgName, String abilityName) 設置提醒到達時跳轉(zhuǎn)的目標包。如果設備正在使用中,則彈出一個通知框 public String getTitle() 獲取提醒的標題 public ReminderRequest setTitle(String title) 設置提醒的標題 public String getContent() 獲取提醒的內(nèi)容 public ReminderRequest setContent(String content) 設置提醒的內(nèi)容 public String getExpiredContent() 獲取提醒“過期”時顯示的擴展內(nèi)容 public ReminderRequest setExpiredContent(String expiredContent) 設置提醒“過期”時顯示的擴展內(nèi)容 public String getSnoozeContent() 獲取提醒“再響”時顯示的擴展內(nèi)容 public ReminderRequest setSnoozeContent(String snoozeContent) 設置提醒“再響”時顯示的擴展內(nèi)容 public int getNotificationId() 獲取提醒使用的notificationRequest的id,參見NotificationRequest.setNotificationId(int id) public ReminderRequest setNotificationId(int notificationId) 設置提醒使用的notificationRequest的id public String getSlotId() 獲取提醒使用的slot id public String SetSlotId(String slotId) 設置提醒使用的slot id
ReminderRequestTimer:提醒類子類,用于倒計時提醒。ReminderRequestTimer 主要接口:
接口名描述 public ReminderRequestTimer(long triggerTimeInSeconds) 創(chuàng)建一個倒計時提醒實例。經(jīng)過指定時間后觸發(fā)提醒
ReminderRequestCalendar:提醒類子類,用于日歷類提醒。可以指定提醒時間精確為:年月日時分,可以指定哪些月份的哪些天的同一時間重復提醒。ReminderRequestCalendar 主要接口:
接口名描述 public ReminderRequestCalendar(LocalDateTime dateTime, int[] repeatMonths, int[] repeatDays) 創(chuàng)建一個日歷類提醒實例,在指定的時間觸發(fā)提醒
ReminderRequestAlarm:提醒類子類,用于鬧鐘類提醒,可以指定幾點幾分提醒,或者每周哪幾天指定時間提醒。ReminderRequestAlarm 主要接口:
接口名描述 public ReminderRequestAlarm(int hour, int minute, int[] daysOfWeek) 創(chuàng)建一個鬧鐘類提醒實例,在指定的時間觸發(fā)提醒
三、后臺代理定時提醒
聲明使用權(quán)限:使用后臺代理提醒需要在配置文件中聲明需要此權(quán)限:
"reqPermissions" : [ { "name" : "ohos.permission.PUBLISH_AGENT_REMINDER" } ]
NotificationSlot slot
= new
NotificationSlot ( "slot_id" , "slot_name" , NotificationSlot
. LEVEL_HIGH
) ; slot
. setEnableLight ( false
) ; slot
. setEnableVibration ( true
) ; try
{ ReminderHelper
. addNotificationSlot ( slot
) ; } catch ( RemoteException e
) { e
. printStackTrace ( ) ; } int [ ] repeatDay
= { } ; ReminderRequest reminder
= new
ReminderRequestAlarm ( 10 , 30 , repeatDay
) ; reminder
. setTitle ( "set title here" ) . setContent ( "set content here" ) ; reminder
. setSnoozeTimes ( 1 ) . setTimeInterval ( 5 * 60 ) . setRingDuration ( 10 ) ; reminder
. setIntentAgent ( "com.ohos.aaa" , FirstAbility
. class
. getName ( ) ) ; reminder
. setActionButton ( "snooze" , ReminderRequest
. ACTION_BUTTON_TYPE_SNOOZE
) . setActionButton ( "close" , ReminderRequest
. ACTION_BUTTON_TYPE_CLOSE
) ; try
{ ReminderHelper
. publishReminder ( reminder
) ; } catch ( ReminderManager
. AppLimitExceedsException e
) { e
. printStackTrace ( ) ; } catch ( ReminderManager
. SysLimitExceedsException e
) { e
. printStackTrace ( ) ; } catch ( RemoteException e
) { e
. printStackTrace ( ) ; }
ReminderRequest reminderRequestTimer
= new
ReminderRequestTimer ( 60 ) ;
創(chuàng)建一個一次性日歷提醒的示例如下:
int [ ] repeatMonths
= { } ; int [ ] repeatDays
= { } ; ReminderRequestCalendar reminderRequestCalendar
= new
ReminderRequestCalendar ( LocalDateTime
. of ( 2021 , 3 , 2 , 14 , 30 ) , repeatMonths
, repeatDays
) ;
創(chuàng)建一個重復的日歷提醒的示例如下:
int [ ] repeatMonths
= { 3 , 5 } ; int [ ] repeatDaysOfMonth
= { 9 , 15 } ; ReminderRequestCalendar reminderRequestCalender
= new
ReminderRequestCalendar ( LocalDateTime
. of ( 2021 , 3 , 2 , 14 , 30 ) , repeatMonths
, repeatDaysOfMonth
) ; reminderRequestCalender
. setTimeInterval ( 10 * 60 ) ;
創(chuàng)建一個一次性鬧鐘提醒的示例如下:
int [ ] repeatDay
= { } ; ReminderRequest reminderRequestAlarm
= new
ReminderRequestAlarm ( 13 , 59 , repeatDay
) ;
創(chuàng)建一個重復的鬧鐘提醒的示例如下:
int [ ] repeatDay
= { 1 , 2 , 3 , 4 } ; ReminderRequest reminderRequestAlarm
= new
ReminderRequestAlarm ( 13 , 59 , repeatDay
) ;
創(chuàng)建一個用于延遲提醒的 ActionButton 界面的示例如下:
reminderRequest
. setActionButton ( "snooze" , ReminderRequest
. ACTION_BUTTON_TYPE_SNOOZE
) ;
創(chuàng)建一個用于關(guān)閉提醒的 ActionButton 界面的示例如下:
reminderRequest
. setActionButton ( "close" , ReminderRequest
. ACTION_BUTTON_TYPE_CLOSE
) ;
注意: notificationId 相同的不同 NotificationRequest 請求,在通知欄展示的內(nèi)容會被覆蓋,對于提醒來說,可能不希望被覆蓋,開發(fā)時可以注意設置不同的 notificationId; 倒計時不支持持久化,系統(tǒng)重啟后,所有倒計時失效。
總結(jié)
以上是生活随笔 為你收集整理的HarmonyOS之后台代理定时提醒的功能使用 的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔 推薦給好友。