App上看到就忍不住點的小紅點是如何實現的?

2022-06-08 12:01:42

你有沒有發現,我們解鎖手機後桌面上App右上角總能看到一個小紅點,這就是推播角標。推播角標指的是移動裝置上App圖示右上角的紅色圓圈,圓圈內的白色數位表示未讀訊息數量。角標是一種比較輕的提醒方式,通過直觀的展現使用者尚未閱讀的資訊數量,可以給使用者營造一種緊張感,激起使用者閱讀的好奇心,從而讓使用者忍不住點開。因此在使用得當的情況下,推播角標有助於提高App推播開啟率,保持使用者粘性。

HMS Core推播服務提供了設定桌面角標的API介面,開發者可以在訊息中封裝角標引數。那這個「小紅點」功能是如何實現的呢?以下是詳細的整合步驟。

一.使用者端API設定華為推播角標

支援平臺:

1.系統版本:EMUI4.1 及以上

2.桌面版本:6.3.29

3.支援裝置:華為裝置

角標功能開發:

  1. 宣告許可權
	< uses - permission android: name = "android.permission.INTERNET" / >
	    <
	    uses - permission android: name =
"com.huawei.android.launcher.permission.CHANGE_BADGE " / >
  1. 在需要進行角標顯示地方,採用如下方法傳遞資料給華為桌面應用。
	Bundle extra = new Bundle();
	extra.putString("package", "xxxxxx");
	extra.putString("class", "yyyyyyy");
	extra.putInt("badgenumber", i);
	context.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher
	.settings/badge/"), "change_badge", null, extra);

關鍵引數說明:

package:應用包名

class:桌面圖示對應的應用入口Activity類

badgenumber:角標數位

	boolean mIsSupportedBade = true;
	if (mIsSupportedBade) {
	    setBadgeNum(num);
	}
	/** set badge number*/
	public void setBadgeNum(int num) {
	    try {
	        Bundle bunlde = new Bundle();
	        // com.test.badge is your package name
	        bunlde.putString("package", "com.test.badge"); 
        // com.test. badge.MainActivity is your apk main activity
        bunlde.putString("class", "com.test. badge.MainActivity");
        bunlde.putInt("badgenumber", num);                
        this.getContentResolver().call(Uri.parse("content://com.huawei.android.launcher.settings/badge/"), "change_badge", null, bunlde);
    } catch (Exception e) {
        mIsSupportedBade = false;
    }
}

特殊情形考慮:

(1)對於第三應用開啟和退出時,是否還繼續顯示角標取決於應用傳遞的值(badgenumber為0時,不顯示角標;badgenumber大於0時,顯示角標)。

(2)當第三方應用package和class發生變化時,需傳遞該變化後的資訊。

(3)在呼叫角標介面前不一定要事先獲取桌面是否支援角標功能此功能。當桌面不支援角標功能時,介面會丟擲異常,應用可以在呼叫介面的地方加上try … catch(Exception e) 語句以免程式崩潰。

二.HMS Core推播服務sdk桌面角標設定

Push Kit傳送下行訊息介面中由BadgeNotification的三個引數決定了角標是否顯示以及顯示的數量:

在設定時需要注意以下5點:

1.class欄位應用包名+應用入口Activity類名,如果傳錯角標則無法展示

2.add_num欄位要求emui版本8.0.0以上,推播服務版本8.0.0

3.set_num欄位要求emui版本10.0.0以上,推播服務版本10.1.0

4.開啟應用或者點選、清理通知欄訊息並不會清理角標數,需應用在端側參考角標開發指導去清理角標。

  1. 「class「必填,「add_num」和」set_num」引數選填。

若「add_num」和「set_num」都設定為空,則應用角標數位預設加1

瞭解更多詳情>>

存取華為開發者聯盟官網
獲取開發指導檔案
華為移動服務開源倉庫地址:GitHubGitee

關注我們,第一時間瞭解 HMS Core 最新技術資訊~