前言json
上一片初級手冊裏給你們演示瞭如何使用個推服務端的sdk調用個推推送服務的api。相信許多朋友已經嘗試成功了。但除了可以完成傳送消息到手機上的基本功能之外,開發者必定會有不少定製化的需求。本篇給你們提供一些進階使用的tips。segmentfault
定製化api
推送展現定製化
個推推送服務的客戶端展現定製化需求主要經過它的推送模板來實現。上一篇提到,調用推送方法前須要先構造一個template。緩存
『 新建一個推送模版,以透傳模板爲例,透傳顧名思義到達客戶端後不作任何操做,由app選擇處理
其餘原生模板類型種類不少,支持各類客戶端展示效果,包括彈框下載、打開連接等等。 』
TransmissionTemplate template = new TransmissionTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setTransmissionContent("測試用的透傳文本");
template.setTransmissionType(1);app
此處咱們在示例裏使用了TransmissionTemplate。這是個推的一個基本模板類型。使用這個模板,容許用戶設置內容(若是二進制數據能夠以base64方式轉碼),由個推推送系統將內容推送至APP,開發者自行對內容進行處理和展現。
除了這個模板類型之外,個推還提供瞭如下模板共開發者直接使用:post
NotificationTemplate # 通知欄模板
在通知欄顯示一條含圖標、標題等的通知,用戶點擊後激活您的應用
NotificationTemplate template = new NotificationTemplate();
template.setAppId(appId);
template.setAppkey(appKey);
template.setTitle("測試標題"); // 展現標題
template.setText("測試文本"); // 展現文本
template.setLogo("logo.png"); // 本地logo
template.setLogoUrl("http://imgurl.com/xxx.png"); // 外鏈logo
template.setIsRing(true); // 是否響鈴
template.setIsVibrate(true); //是否震動
template.setIsClearable(true); //通知欄裏是否可被清除
template.setTransmissionType(1); //理解啓動應用測試
LinkTemplate # 通知欄—連接模板
在通知欄顯示一條含圖標、標題等的通知,用戶點擊可打開您指定的網頁
除了上面的設置之外LinkTemplate須要額外設置一個跳轉的URL
LinkTemplate template = new LinkTemplate();
template.setUrl("http://www.baidu.com");url
NotyPopLoadTemplate # 通知欄—彈框下載模板
在通知欄顯示一條含圖標、標題等的通知,用戶點擊後彈出框,用戶能夠選擇直接下載應用或者取消下載應用。除了appId,appKey之外還須要設置下面幾個值:
NotyPopLoadTemplate template = new NotyPopLoadTemplate();
template.setPopTitle("彈框標題");
template.setPopContent("彈框內容");
template.setPopImage("POP.png");
template.setPopButton1("按鈕1");
template.setPopButton2("按鈕2");
template.setLoadIcon("下載圖標");
template.setLoadTitle("下載標題");
template.setLoadUrl("下載地址");spa
其餘接口code
除了經常使用的pushMessageToSingle/ pushMessageToList/ pushMessageToApp/ 這三個推送接口之外,個推還提供了一些額外的方便用戶使用和排查問題的接口。
getClientIdStatus # 獲取客戶端在線與否狀態
IGtPush push = new IGtPush(url, appKey, masterSecret);
push.getClientIdStatus(appId, cid);
這個接口會返回客戶端在個推系統裏的在線狀態,個推裏的在線狀態決定了個推系統會給這個用戶推送這條消息仍是幫它緩存到離線庫裏。
stop # 根據taskId中止推送任務
IGtPush push = new IGtPush(url, appKey, masterSecret);
push.stop(contentId);
當你發起了一個數量巨大的羣推任務,會花費個推必定的時間去幫助你推送完全部的客戶端。期間,你能夠調用這個接口中止這次推送任務,尚未收到的客戶端將不會再收到此次推送的消息。
回調接口
當你調用了服務端的api發送完一條消息,並收到服務端的返回success_online。如何肯定這條推送是否真的到達了本身的客戶端呢?個推提供了一個回調接口服務,開發者能夠在個推開放者平臺上註冊一個回調URL,這樣個推在確認客戶端收到消息後,會向開發者填寫的回調URL post一個http請求。
填寫回調URL
回調協議
協議使用HTTP POST方式,經過調用第三方預先提供的URL來傳遞信息。
POST數據的內容採用Json格式。
第三方返回Json格式的返回信息,表示是否成功接收到回執
舉例
回執例子:
{"sign":"xxxxxxxxxxxxx","msgid":"test-msgid","desc":"test-descmsg","taskid":"test-taskid","appid":"xxxxxxxxxxxxx","code":"400", "cid":"test-cid"}
響應例子:
{"code":"0","result":"ok"}
開發者在本身的服務端處理這個json串便可肯定對應的消息推送是否真的到達了客戶端。
小結
今天介紹的這些tips都是比較實用的,儘管不少開發者偏心使用TransmissionTemplate來進行推送,而後最大自由的處理推送內容,能夠完成不少功能,可是其餘模板在特定的應用情形下,也能發揮其便捷的優點。好比更新應用,徹底可使用NotyPopLoadTemplate,只須要少量幾個設置,就能在客戶端完成彈框下載的功能;好比消息提示,能夠直接使用NotificationTemplate,完成最基礎也最經常使用的客戶端收到推送,而後在通知欄提醒用戶的功能。 回調接口也是默默無聞可是很是實用的功能,能使你在須要在確保消息送達的情景下作到百分百的安心。尚未使用的開發者們趕快嘗試一下吧~