為了改善終端使用者推送體驗、營造良好可持續的通知生態,各大廠商陸續對推送的訊息根據分類進行限額限頻。
簡介
根據推送內容對訊息進行分類管理,可以自訂 Channel ID。
適用所有 Android 渠道
建立用戶端自訂渠道
推送時下發對應的渠道 ID
參數名稱
類型
是否必填
樣本
描述
channelId
String
否
channelId: "channelIdTest"
Android 通知 channelId
若需要下發廠商通道重要層級訊息,請參考下文各個廠商訊息分類的使用指南
華為分類
廠商針對訊息分類的說明
根據訊息內容,華為推送將通知分類為 服務與通訊、資訊營銷 兩大類別,並對不同類別訊息的提醒方式、訊息樣式進行差異化管理,具體如下:
訊息類型 | 服務與通訊 | 資訊營銷 |
推送內容 | 包括社交通訊類訊息和服務提醒類訊息。 | 包括資訊類訊息和營銷類訊息,指的是營運人員向使用者發送的活動資訊、內容推薦、資訊等 |
提醒方式(EMUI 10.0及以上) | 鎖屏、鈴聲、震動 | 靜默通知,僅在下拉通知欄展示訊息 |
訊息樣式 | 文本+小圖 | 僅有文本 |
推送數量 | 不限量 | 自 2023.01.05 起,資訊營銷類訊息根據應用類型對每日推送數量進行上限管理,具體要求參見 不同應用類別的推送數量上限要求 |
配置方式 | 需要向華為申請自分類權益,審核通過後將信任開發人員提供的分類資訊,訊息不經過智能分類。 | 預設 |
分類方式
訊息智能分類
智能分類演算法將根據您發送的內容等多個維度因素,自動將您的訊息按照分類標準進行歸類。
訊息自分類
2021.07.01 起,華為推送服務開始接收開發人員自分類權益的申請。申請成功後,允許開發人員根據華為推送分類規範,自行對訊息進行分類。
華為訊息分類申請
自分類申請詳情參見 華為訊息分類管理方案。
若應用沒有自分類權益,則應用的推送訊息將通過智能分類進行自動歸類。
若應用有自分類權益,將信任開發人員提供的分類資訊,訊息不經過智能分類。
在 mPaaS MPS 上對接華為訊息分類傳參枚舉(thirdChannelCategory.hms)
傳參(String) | 含義 |
1 | IM:即時聊天 |
2 | VOIP:音視訊通話 |
3 | SUBSCRIPTION:訂閱 |
4 | TRAVEL:旅行類 |
5 | HEALTH:健康 |
6 | WORK:工作事項提醒 |
7 | ACCOUNT:帳號動態 |
8 | EXPRESS:訂單&物流 |
9 | FINANCE:財務 |
10 | DEVICE_REMINDER:裝置提醒 |
11 | SYSTEM_REMINDER:系統提示 |
12 | MAIL:郵件 |
13 | PLAY_VOICE:語音播報(僅透傳訊息支援) |
14 | MARKETING:內容推薦、新聞、財經動態、生活資訊、社交動態、調研、產品促銷、功能推薦、營運活動(僅對內容進行標識,不會加快訊息發送) |
傳參樣本
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: {"hms": "9"} | 樣本傳值為“9”表示華為 FINANCE 財務類型訊息。其他取值詳情請參見 廠商訊息分類 |
榮耀分類
廠商針對訊息分類的說明
根據訊息內容,華為推送將通知分類為 服務與通訊、資訊營銷 兩大類別,具體如下:
訊息類型 | 服務與通訊 | 資訊營銷 |
推送內容 | 包括社交通訊類訊息和服務提醒類訊息。 | 包括資訊類訊息和營銷類訊息,指的是營運人員向使用者發送的活動資訊、內容推薦、資訊等 |
提醒方式 | 鎖屏展示+下拉通知欄展示,支援鈴聲、震動 | 靜默通知,僅在下拉通知欄展示訊息 |
訊息樣式 | 文本+小圖 | 僅有文本 |
推送數量 | 不限量 | 資訊營銷類訊息根據應用類型對每日推送數量進行上限管理:
|
分類方式
訊息智能分類
智能分類演算法將根據您發送的內容等多個維度因素,自動將您的訊息按照分類標準進行歸類。
訊息自分類
允許開發人員根據訊息分類規範,自行對訊息進行分類。
在 mPaaS MPS 上對接榮耀訊息分類傳參枚舉(thirdChannelCategory.honor)
傳參(String) | 含義 |
1 | 服務通訊類 |
2 | 資訊營銷類 |
傳參樣本
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: {"honor": "1"} | 樣本傳值為“1”表示榮耀服務通訊類訊息 |
小米訊息分類
廠商針對訊息分類的說明
根據《小米推送訊息分類新規》,小米推送將訊息分為 私信訊息 和 公信訊息 兩個類別,若應用選擇不接入私信或公信,則會接入 預設 通道。
訊息類型 | 預設 | 公信訊息 | 私信訊息 |
推送內容 | 可按照小米的 公信情境說明 | 熱點新聞、新品推廣、平台公告、社區話題、有獎活動等,多使用者普適性的內容 | 聊天訊息、個人訂單變化、快遞通知、交易提醒、IoT 系統通知等與私人通知相關的內容 |
提醒方式 | 無 | 無 | 響鈴、震動 |
推送數量限制 | 1 倍 | 2-3 倍,具體規則請參見“公信限制規則 | 不限量 |
使用者接收數量限制 | 單個應用單個裝置單日 1 條 | 單個應用單個裝置單日 5-8 條 | 不限量 |
申請方式 | 無需申請 | 需在小米推送平台申請,詳情請參見 channel 申請及接入方式 |
小米訊息分類申請
申請方式請參見小米官方文檔 channel 申請及接入方法。
在 mPaaS MPS 上對接小米訊息分類傳參樣本
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
miChannelId | String | 否 | miChannelId:"miChannelIdTest" | 小米廠商推送渠道的 channelId |
OPPO 訊息分類
廠商針對訊息分類的說明
訊息類型 | 私信 | 公信 |
推送內容 | 針對使用者有一定關注度,且希望能及時接收的資訊,如即時聊天資訊、個人訂單變化、快遞通知、訂閱內容更新、評論互動、會員積分變動等。 | 公信是針對使用者關注度不高,且對於接收這類資訊並無心理預期,如熱點新聞、新品推廣、平台公告、社區話題、有獎活動等,多使用者普適性的內容 |
推送數量限制 | 不限量 | 有公信類通道共用推送次數,當日達到推送量限制後,所有公信類通道將不能再推送訊息; 推送限量:當累計使用者數<50000時,按100000計算;當累計使用者數≥50000時,按累計使用者數*2計算 |
單使用者推送限制(條/日) | 不限量 |
|
配置方式 |
| 預設開通 |
OPPO 私信通道申請
在 mPaaS MPS 上對接 OPPO 訊息分類傳參樣本
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
channelId | String | 否 | channelId:"channelIdTest" | OPPO 私信通道 channelId |
vivo 訊息分類
廠商針對訊息分類的說明
通知開啟的有效使用者:應用整合的 push-sdk 訂閱成功,且裝置近 14 天內有連網的通知許可權開啟使用者。
通知開啟有效使用者數<10000,則營運訊息量級預設為 10000。
通知開啟的有效使用者數及可發送營運訊息量級,可在推送營運後台查詢。
推送限額數以 到達量 計算,當日到達量超限則計入管控。
訊息類型 | 系統訊息 | 營運訊息 |
推送內容 | 使用者需要及時知道的訊息,如:立即訊息、郵件、使用者佈建的提醒、物流等通知 | 使用者關注程度較低的訊息,如:內容推薦、活動推薦、社交動態等通知 |
通知欄許可權 |
|
|
推送數量限制 | 3 倍通知開啟有效使用者數(可郵件申請訊息不限量許可權,詳見 推送訊息限制說明) |
|
使用者接收數量限制 | 無限制 |
|
在 mPaaS MPS 上對接 vivo 二級訊息分類傳參枚舉(thirdChannelCategory.vivo)
傳參(String) | 含義 |
1 | IM 使用者間點對點聊天訊息(私信、群聊等),包括聊天訊息中的圖片、檔案傳輸、音頻(或視頻)通話,不包括未關注人的私信、官方號或者商家批量推送給使用者的私信或廣告。以及寄件提醒。 |
2 | ACCOUNT 帳號變動:帳號上下線、狀態變化、資訊認證、會員到期、續約提醒、餘額變動等。 資產變動:賬戶下的真實資產變動,交易提示、話費餘額、流量、語音時間長度、簡訊額度等典型電訊廠商提醒。 |
3 | TODO 與個人排程相關,需要提醒使用者需要處理某件事項。
|
4 | DEVICE_REMINDER
|
5 | ORDER 電商購物、美食團購等各類商品服務中的訂單相關資訊,推送對象為使用者。
|
6 | SUBSCRIPTION 使用者主動訂閱關注,並有預期在特定時機接收到訊息:
重要 申請訂閱類訊息需要滿足如下條件並提供完整證明:
|
7 | NEWS 新近發生的、有價值的事實新聞內容。 |
8 | CONTENT 內容型的資訊推薦,包含熱搜、點評、廣告、書籍、音樂、視頻、直播、課程、節目、遊戲宣傳、社區話題等。以及:
|
9 | MARKETING
|
10 | SOCIAL
|
在 mPaaS MPS 上對接 vivo 訊息分類傳參樣本
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
classification | String | 否 | classification:"1" | 用於傳遞 vivo 推送通道的訊息類型:
不填則預設為 1 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: {"vivo": "1"} | 樣本傳值為“1”表示vivo IM 類型訊息 |
classification 參數傳“0”代表營運訊息,不經過智能分類二次修正,直接從營運訊息總量扣除額度,並受使用者接收條數限制的頻控。
classification 參數傳“1”代表系統訊息,經過智能分類二次修正,若智能分類識別出不是系統訊息,會自動修正為營運訊息,並扣除營運訊息額度;若識別為系統訊息,則從系統訊息總量扣除額度。
MPS 對接廠商訊息分類 Java 範例程式碼
廠商訊息分類推送參數推薦都上傳,MPS 會根據裝置類型進行對應廠商分類參數的封裝。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。
// 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
// 本樣本以將AccessKey ID和AccessKey Secret儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡。
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
// Create an API request and set parameters
PushSimpleRequest request = new PushSimpleRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setTaskName("測試工作");
request.setTitle("測試");
request.setContent("測試");
request.setDeliveryType(3L);
Map<String,String> extendedParam = new HashMap<String, String>();
extendedParam.put("key1","value1");
request.setExtendedParams(JSON.toJSONString(extendedParam));
request.setExpiredSeconds(300L);
request.setPushStyle(2);
String imageUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"fcmUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"iosUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
String iconUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"hmsUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
request.setImageUrls(imageUrls);
request.setIconUrls(iconUrls);
request.setStrategyType(2);
request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");
Map<String,String> target = new HashMap<String, String>();
String msgKey = String.valueOf(System.currentTimeMillis());
target.put("user1024",msgKey);
request.setTargetMsgkey(JSON.toJSONString(target));
//廠商訊息類別欄位
//封裝VIVO訊息分類一級分類
request.setClassification("1");
//封裝華為訊息分類、榮耀訊息分類和VIVO訊息分類二級分類
Map<String, String> map = new HashMap<>();
map.put("hms", "2");
map.put("vivo", "3");
map.put("honor", "1");
pushSimpleReq.setThirdChannelCategory(map);
//封裝小米訊息分類
pushSimpleReq.setMiChannelId("miChannelIdTest);
//封裝OPPO訊息分類
pushSimpleReq.setChannelId("channelIdTest");
// Initiate the request and handle the response or exceptions
PushSimpleResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}