你有沒有發現,我們解鎖手機後桌面上App右上角總能看到一個小紅點,這就是推播角標。推播角標指的是移動裝置上App圖示右上角的紅色圓圈,圓圈內的白色數位表示未讀訊息數量。角標是一種比較輕的提醒方式,通過直觀的展現使用者尚未閱讀的資訊數量,可以給使用者營造一種緊張感,激起使用者閱讀的好奇心,從而讓使用者忍不住點開。因此在使用得當的情況下,推播角標有助於提高App推播開啟率,保持使用者粘性。
HMS Core推播服務提供了設定桌面角標的API介面,開發者可以在訊息中封裝角標引數。那這個「小紅點」功能是如何實現的呢?以下是詳細的整合步驟。
1.系統版本:EMUI4.1 及以上
2.桌面版本:6.3.29
3.支援裝置:華為裝置
< uses - permission android: name = "android.permission.INTERNET" / >
<
uses - permission android: name =
"com.huawei.android.launcher.permission.CHANGE_BADGE " / >
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) 語句以免程式崩潰。
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.開啟應用或者點選、清理通知欄訊息並不會清理角標數,需應用在端側參考角標開發指導去清理角標。
若「add_num」和「set_num」都設定為空,則應用角標數位預設加1
瞭解更多詳情>>
存取華為開發者聯盟官網
獲取開發指導檔案
華為移動服務開源倉庫地址:GitHub、Gitee
關注我們,第一時間瞭解 HMS Core 最新技術資訊~