進來學!7種推送樣式,拉新促活提升轉化率
在談訊息推送樣式之前,先來說說訊息推送。
什麼是訊息推送?
簡而言之,就是你的app主動向使用者推送訊息。在競爭日益激烈的應用市場,靈活運用訊息推送,對使用者增長、促活和留存有很大的促進作用。
訊息推送在不同推送型別中有不同的價值體現。
產品功能類推送
-
系統訊息通知:社交屬性的app中的關注、贊評轉互動訊息推送;購物app中物流資訊通知等……
-
資訊活動通知:新聞媒體app的時效性訊息推送、遊戲和知識等app的節假日活動、福利促銷資訊推送等……
使用者運營類推送
-
沉默使用者喚醒:用主動觸及使用者的訊息推送方式喚醒沉默使用者。
-
提高使用者活躍:結合福利活動等資訊的推送,提高使用者的活躍。
訊息推送預期效果的實現,需要推送內容、推送樣式以及時間節奏的完美結合。今天我們將詳解華為推送服務所提供的8種訊息推送樣式及其實現方法,為你的應用使用者增長和活躍助力。
華為推送服務(Push Kit)是華為提供的訊息推送平臺,建立了從雲端到終端的訊息推送通道。通過整合推送服務可以實時推送訊息到使用者終端,構築良好的使用者關係,提升使用者的感知度和活躍度。
Push Kit當前支援多種文字樣式,Inbox樣式,按鈕樣式以及自定義圖示等樣式。你可定義極具個性化的訊息來吸引使用者。本文通過簡單的程式碼和效果展示,幫助你快速瞭解並上手華為Push訊息。
訊息樣式介紹
首先,藉助官方開發文件給出的示例,介紹通知欄訊息的結構。
從上圖可以看出,通知欄訊息從上到下依次包含訊息小圖示、應用名稱、訊息摘要、訊息到達時間、標題、內容等部分。這其中,除了應用名稱,其他要素共同構成了通知欄訊息自定義樣式。
作為各種樣式的對比,首先給大家展示最基本的通知欄訊息樣式:
{ "validate_only":false, "message":{ "android":{ "notification":{ "body":"簡要描述訊息的內容,自由發揮啦", "click_action":{ "type":3 }, "title":"這裡是訊息標題" } }, "token":["xxx"] } }
說明:一條通知欄訊息,至少需要包含以上欄位,否則無法傳送。
下面,分別給大家講解各個樣式自定義的方式。
1)自定義訊息小圖示
Push Kit提供了兩種設定通知欄訊息小圖示的方法:
通過服務端API傳送下行訊息攜帶“icon”欄位,圖示檔案必須存放在應用的/res/raw路徑下,例如“res/raw/ic_launcher”,對應應用本地的“/res/raw/ic_launcher.xxx”
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
檔案。
{
"android" :{
"notification" :{
"body" : "沒錯,訊息小圖示可以自定義哦" ,
"click_action" :{
"type" :3
},
"icon" : "/raw/custom_notification_icon" ,
"title" : "快看左上角小圖示"
}
},
"token" :[ "xxx" ]
}
|
通過應用的“AndroidManifest.xml”檔案新增meta-data元資料來實現,參考程式碼如下:
<meta-data android:name="com.huawei.messaging.default_notification_icon" android:resource="@drawable/ic_push_notification"/>
其中,meta-data元資料“name”不可改變,“resource”指定的資源圖示由您指定,需要在應用的“res/drawable”目錄下。
分析:對比兩種方法,方法1更加靈活,只需要提前把小圖示預置在客戶端,服務端就可以根據需要使用不同的小圖示。
2)自定義訊息摘要
訊息摘要展示在應用名右側,用於簡要描述訊息的內容。通過服務端API中的“notify_summary”欄位進行設定。
{ "validate_only":false, "message":{ "android":{ "notification":{ "body":"簡要描述訊息的內容,自由發揮啦", "click_action":{ "type":3 }, "notify_summary":"這裡是摘要部分……", "title":"這裡是訊息標題", } }, "token":["xxx"] } }
3)自定義訊息到達時間(僅用於展示)
華為Push伺服器一旦接收到開發者的訊息推送請求,就會立即處理併發送給使用者。因此,訊息實際到達使用者手機的時間是無法自定義的。但是,服務端API提供了用於通知欄訊息展示、排序的自定義時間欄位“when”。開發者一旦指定此引數,使用者通知欄的訊息將根據此時間進行展示和排序。
上圖的測試中,兩條訊息都是在10點左右傳送並收到的,且上方訊息傳送時間早於下方訊息。如果沒有設定“when”欄位,圖片訊息應該展示在下面。但是由於下方訊息傳送時使用“when”欄位指定展示時間為"2021-04-29T01:26:23.045123456Z"。因此,實際在使用者手機上排序展示時,下方訊息展示了“when”欄位設定的時間。
{ "validate_only":false, "message":{ "android":{ "notification":{ "body":"簡要描述訊息的內容,自由發揮啦", "click_action":{ "type":3 }, "title":"這裡是訊息標題", "when":"2021-04-29T01:26:23.045123456Z" } }, "token":["xxx"] } }
說明:此引數使用UTC時間,且必須小於當前時間。
4)自定義訊息按鈕
通知欄訊息支援新增多個按鈕,點選按鈕可以觸發相應的動作。
{ "validate_only":false, "message":{ "android":{ "notification":{ "body":"推送訊息底部可新增多個按鈕,點選按鈕可以出發相應的動作", "buttons":[{ "action_type":0, "name":"瞭解更多" },{ "action_type":3, "name":"任性忽視" }], "click_action":{ "type":3 }, "title":"震驚!這個推送樣式你必須瞭解" } }, "token":["xxx"] } }
說明:按鈕動作型別:0:開啟應用首頁,1:開啟應用自定義頁面,2:開啟指定的網頁,3:清除通知,4:華為分享功能;
“name”欄位的值如果為英文,通知訊息展示時按鈕名字會以全大寫字母展示。
上述訊息,改變的主要是區域性樣式,不涉及訊息的title和body欄位。這些樣式可以隨意搭配使用,相互之間不影響。
下面介紹的3種樣式,由於涉及title和body欄位,因此相互之間存在一些影響,呼叫服務端API時不建議同時使用。
5)大文字樣式
早期版本推送服務,預設樣式下僅支援單行文字,單行文字支援的字數太少,會有表達不全的缺陷。大文字樣式支援標題單行,內容文字多行(當前EMUI 9系統限制最多顯示12行中文或者14行英文,EMUI 10&11系統限制最多顯示11行中文或者13行英文)。大文字展開後效果如下:
{ "validate_only":false, "message":{ "android":{ "notification":{ "big_body":"大文字樣式支援標題單行,內容文字多行。當前EMUI9系統限制最多顯示12行中文或者14行英文,EMUI10&11系統限制最多顯示11行中文或者13行英文。", "big_title":"這裡是大文字訊息標題", "body":"簡要描述訊息的內容,自由發揮啦", "click_action":{ "type":3 }, "style":1, "title":"這裡是訊息標題" } }, "token":["xxx"] } }
說明
EMUI 9:大文字展開之前顯示的標題與內容取自“title”與“body”欄位,非“big_title”與“big_body”欄位的內容。
EMUI 10:大文字展開之前顯示的標題取自“title”欄位,內容取自“big_body”欄位。
6)Inbox樣式
此樣式也可以展示多行文字,但是不同於大文字樣式,Inbox樣式將每行內容都當作獨立的單行文字去展示。文字內容最多可展示5行,每行內容展示不了時後邊自動新增“...”。
{ "validate_only":false, "message":{ "android":{ "notification":{ "body":"簡要描述訊息的內容,自由發揮啦", "click_action":{ "type":3 }, "inbox_content":["1.首先你需要找到一頭大象","2.好吃好喝把大象騙到冰箱旁","3.開啟冰箱門","4.把大象塞進冰箱","5.關上冰箱門"], "style":3, "title":"這裡是訊息標題" } }, "token":["xxx"] } }
總結:
7)訊息本地化展示
通知訊息本地化又可以理解為國際化多語言展示,指的是通知訊息可以根據手機本地語言變化展示對應語言的標題和內容,從而覆蓋本訊息中普通的標題和內容。
Push Kit提供了兩種訊息本地化展示的方法:
完全通過服務端提供的REST API介面實現;
{ "validate_only":false, "message":{ "android":{ "notification":{ "body":"bbb", "body_loc_args":["Jack"], "body_loc_key":"body_key", "click_action":{ "type":3 }, "multi_lang_key":{ "title_key":{ "en":"NewFriendRequestFrom%s", "zh":"來自%s的好友請求" }, "body_key":{ "en":"Mynameis%s.", "zh":"我叫%s。" } }, "title":"ttt", "title_loc_args":["Shanghai"], "title_loc_key":"title_key" } }, "token":["xxx"] } }
說明:
1、“title_loc_key”、“body_loc_key”欄位分別對應“multi_lang_key”中相關欄位的名稱;
2、“title_loc_args”、“body_loc_args”欄位的值都是一個可變的字串陣列,用於填充對應欄位的值中的佔位符%s;
3、“multi_lang_key”欄位當前最多支援配置三種語言。
服務端REST API與應用本地的字串資原始檔“strings.xml”配合實現。
{ "validate_only":false, "message":{ "android":{ "notification":{ "title":"ttt", "body":"bbb", "body_loc_args":["Jack","Shanghai"], "body_loc_key":"body_key", "click_action":{ "type":3 }, "title_loc_key":"title_key" } }, "token":["xxx"] } }
在Android資原始檔“/res/values/strings.xml”中定義字串資源。
支援佔位符,%後面是佔位符的位置,從1開始,$後面是填充資料的型別。
支援多語言,比如“/res/values-en/strings.xml”進行英語本地化適配。
<stringname="title_key">NewFriendRequest</string> <stringname="body_key">Mynameis%1$s,Iamfrom%2$s.</string>
在App中新增程式碼,動態獲取可變字串,並對資源節點進行字串格式化,填充內容到佔位符中。
publicclassDemoHmsMessageServiceextendsHmsMessageService{ @Override publicvoidonMessageReceived(RemoteMessagemessage){ String[]bodyArrays=message.getNotification().getBodyLocalizationArgs(); //獲取內容並進行格式化 Stringkey=getResources().getString(R.string.body_key); Stringbody=String.format(key,bodyArrays[0],bodyArrays[1]); Log.i(TAG,body); } }
分析:對比2種方法,方法1使用靈活,不需要改造客戶端程式碼。但是方法2可以同時支援更多的語言,適用於全球化程度更高的應用。
>>訪問華為開發者聯盟官網,瞭解更多相關內容
>>獲取開發指導文件
原文連結:https://developer.huawei.com/...
原作者:胡椒