1. 程式人生 > >百度Push服務SDK使用者手冊(iOS版)

百度Push服務SDK使用者手冊(iOS版)

第一章 簡介

百度雲推送(以下簡稱百度 Push 服務或 Push 服務) iOS SDK 是百度官方推出的 Push 服務 iOS 開發平臺軟體開發工具包,包中含有供 iOS 開發者使用的百度 Push 服務的介面,開發者可通過閱讀本文件從而簡單快捷地整合百度 Push 服務。Push iOS SDK 的整合壓縮包名為 Baidu-Push-SDK-iOS-1.4.2-0.zip,解壓後的目錄結構如下圖所示:

• 版本說明:記錄Push iOS SDK所有的版本資訊以及版本更新資訊的文件。

• 使用者手冊:介紹 Push iOS SDK 介面及如何在專案中整合 Push 服務的文件。

• PushDemo:一項已經整合百度 Push 服務的 iOS 平臺示例工程,可供使用者參照,快速瞭解如何使用 SDK。

• LibBPush:包括標頭檔案 BPush.h 、靜態庫檔案libBPush.a。

第二章 SDK 功能說明

2.1 框架設計

在iOS App 中加入訊息推送功能的基本步驟分為如下兩步 

第一步,開發者在 Apple 開發者中心官網上註冊推送證書(詳見附錄),然後在 App 工程中新增證書,並且實現一系列推送有關的方法。

第二步,向 Apple 的推送伺服器 APNS (Apple Push Notification Service) 傳送需要推送的訊息,APNS 在收到訊息後,會將訊息發到裝置上。

以上整個過程較為複雜,而且功能比較單一,在整合百度的Push SDK 後,可以越過這些複雜的操作,使用百度 Push SDK 提供的 API介面,可以更加簡便、簡捷的在 App 中使用 Push 功能。

由於蘋果 iOS 系統限制,推送到搭載 iOS 系統裝置上的訊息都需要經過 APNS 再下發到裝置,百度 Push 服務相當於開發者與 APNS 之間的橋樑,幫助開發者完成 Push 服務。具體如下圖所示:

對應上圖的流程標號,推送服務的各個流程解釋如下:

• 1、初始化應用推送證書

• 2、應用執行在 iOS 裝置上時,向百度雲推送伺服器做繫結操作

• 3、向雲推送服務傳送請求,向指定iOS裝置推送訊息(廣播或組播不需要user id)

• 4、百度雲推送在收到開發者的推送請求後,向 APNS 轉發推送訊息

• 5、APNS 收到推送訊息的命令,向 iOS 裝置推送訊息,開發者想要推送的訊息成功到達指定裝置

2.2 主要功能

百度雲推送 SDK 主要提供以下功能介面:

1.Push 服務

  • Push 服務初始化及繫結
  • Push 服務解除繫結

2.Tag 管理

  • 建立 tag
  • 刪除 tag
  • 列出 tag

3.通知推送

4.推送效果反饋

第三章 快速Demo 體驗

本章節將幫助您如何借鑑SDK包中的Demo原始碼進行簡單的訊息推送,快速地使用百度雲推送服務。具體操作通過以下幾步驟即可完成體驗。

3.1 註冊成為百度開發者

登入百度開放服務平臺 ,註冊百度賬號,併成為百度開發者,(參考開發者註冊),已註冊使用者可直接登入。頁面如下圖所示:

3.2 基本設定

登入成功後,可在【管理控制檯】- 【開發者服務管理】進入工程總覽介面,如圖所示:

點選進入新建或已有的工程,將會顯示出應用的基本資訊,其中 API key 和 appid 需要在 Demo 中使用,如圖所示:

進入左邊導航欄,選擇“雲推送”功能,首次選擇時,需要進行【推送設定】,如圖所示:

說明(iOS):

開發證書:需上傳推送證書的“開發版本” 的pem檔案。

生產證書:需上傳推送證書的“生產版本” 的pem檔案。

部署狀態:開發測試期間選擇 【開發狀態】,待 App 上線完成後可更改為【生產狀態】。

注:有關如何申請證書的步驟可在文件最後【附錄-申請推送證書】中參考。

完成以上資訊後,點選“儲存設定”按鈕即可儲存資訊。

3.3 下載開發工具包

下載地址:iOS SDK下載 下載後,您將得到一個壓縮包,裡面有相關的文件、庫檔案、標頭檔案和Demo包。

3.4 修改工程設定

選擇相應的Demo分開發Demo和釋出Demo開啟.xcodeproj 工程,首先需要修改 Bundle Identifier ,修改為在建立證書時所選擇的 Bundle ID,如下圖:

Demo 配置引數

修改下面方法中的apikey的值為自己的apikey,並配置為自己的證書,如下圖:

Demo 配置引數

3.5 執行Demo應用

若以上步驟均無誤,即可對 Demo 進行真機測試(推送通知必須在真機環境下進行測試)。如下圖所示 Demo 執行截圖

3.6 Demo客戶端檢視訊息

開啟Demo後,可以繫結、解綁以及新增刪除tag,Demo介面會顯示伺服器返回資料。在繫結成功後,使用百度開放服務平臺推送訊息,進入指定的應用,選擇雲推送,將顯示以下介面,如圖所示:

有關控制檯推送的更多內容請查閱文件

第四章 iOS SDK開發準備

4.1 執行環境

• iOS 5.1及以上版本

• GPRS、3G、4G及Wi-Fi網路

• Apple應用ID以及對應的推送證書(可參照附錄)

4.2 接入百度開放服務平臺

關於如何註冊百度開發者以及如何建立應用等內容可參照文件第三章「3.1 註冊成為開發者」,其中,應用ID(APPID)用於標識開發者建立的應用程式,API Key(即Client_id)是開發者建立的應用程式的唯一標識,開發者在呼叫百度API時必須傳入此引數。

4.3 使用者賬戶支援

 4.3.1 已有百度賬戶

開發者可選擇使用oauth2.0協議接入百度開放平臺,所有使用者標識使用百度的user id作為唯一標識,使用AccessToken作為驗證憑證。詳細資訊可前往百度開放服務平臺-百度OAuth瞭解。

4.3.2 無賬號登入體系

  1. API Key登陸 開發者無需接入百度賬戶體系,每個終端直接通過API Key向Server請求使用者標識user id,此id是根據端上的屬性生成,具備唯一性,開發者可通過此id對應到自己的賬戶系統,登陸方式方便靈活,但需要開發者自己設計賬戶體系和登入介面。

  2. 開發者AccessToken登陸 Access Token可以通過以下兩種方式獲取: 第一種,普通使用者百度賬戶登陸獲取,當應用程式使用百度賬號作為賬戶體系時使用,即4.3.1節所示,可以換取百度賬戶的唯一的user id; 第二種,開發者百度賬戶登入獲取,註冊server會根據不同終端的device id分配不同的user id。這種方式可以實現不依賴於百度賬戶的第三方登陸體系,使用該登陸方式時,開發者需要定期的與端上做Access Token的同步,以保證端上的Access Token不過期。

4.4 獲取客戶端和服務端SDK開發工具包

開發者可以去官網下載:下載地址

第五章 iOS SDK開發步驟

5.1 新增SDK到工程中

新增到SDK到工程中的步驟如下:

• 將libBPush.a和BPush.h新增到自己的工程下,新增時需要注意勾選當前Target

• SDK需要以下庫:Foundation.framework、CoreTelephony.framework、libz.dylib、SystemConfiguration.framework,請在工程中新增。

5.2 iOS SDK API

5.2.1 API總覽

API主要包含在標頭檔案BPush.h中,目前有以下介面可供支援:



功能 API 函式原型
註冊 Push + (void)registerChannel:(NSDictionary )launchOptions apiKey:(NSString )apikey pushMode:(BPushMode)mode withFirstAction:(NSString )leftAction withSecondAction:(NSString )rightAction withCategory:(NSString )category isDebug:(BOOL)isdebug
設定 Access Token + (void)setAccessToken:(NSString )token
註冊 Device Token + (void)registerDeviceToken:(NSData )deviceToken
繫結 + (void)bindChannelWithCompleteHandler:(BPushCallBack)handler
解除繫結 + (void)unbindChannelWithCompleteHandler:(BPushCallBack)handler
處理推送訊息 + (void)handleNotification:(NSDictionary )userInfo
設定 tag + (void)setTag:(NSString )tag withCompleteHandler:(BPushCallBack)handler
刪除 tag + (void)delTag:(NSString )tag withCompleteHandler:(BPushCallBack)handler
列舉 tag + (void)listTagsWithCompleteHandler:(BPushCallBack)handler
獲取 appId + (NSString ) getAppId
獲取 channelId + (NSString ) getChannelId
獲取 userId + (NSString ) getUserId
建立本地訊息通知 + (void)localNotification:(NSDate )date alertBody:(NSString )body badge:(int)bage withFirstAction:(NSString )leftAction withSecondAction:(NSString )rightAction userInfo:(NSDictionary )userInfo soundName:(NSString )soundName region:(CLRegion )region regionTriggersOnce:(BOOL)regionTriggersOnce category:(NSString )category
在前臺展現本地訊息通知 + (void)showLocalNotificationAtFront:(UILocalNotification )notification identifierKey:(NSString )notificationKey
根據通知的標識刪除本地訊息通知 + (void)deleteLocalNotificationWithIdentifierKey:(NSString )notificationKey
刪除指定本地訊息通知 + (void)deleteLocalNotification:(UILocalNotification )localNotification
獲取指定本地訊息通知 + (NSArray )findLocalNotificationWithIdentifier:(NSString *)notificationKey
清除所有本地訊息通知 + (void)clearAllLocalNotifications

注意:API 呼叫的返回結果都是用BPushCallback回撥.

5.2.2 相關常量的定義:

  1. 百度Push請求,返回結果的鍵。

    NSString *const BPushRequestErrorCodeKey; 錯誤碼。0成功,其它失敗,具體參見BpushErrorCode。

    NSString *const BPushRequestErrorMsgKey; 錯誤資訊。成功時為空。

    NSString *const BPushRequestRequestIdKey; 向百度Push服務發起請求的請求ID,用來追蹤定位問題。

    NSString *const BPushRequesAppIdKey; 繫結成功時返回的app id。

    NSString *const BPushRequestUserIdKey; 繫結成功時返回的user id。

    NSString *const BPushRequestChannelIdKey; 繫結成功時,返回的channel id。

  2. 百度 Push 請求錯誤碼,BPushErrorCode 列舉型別。

    BPushErrorCode_Success = 0, BPushErrorCode_MethodTooOften = 22, // 呼叫過於頻繁 BPushErrorCode_NetworkInvalible = 10002, // 網路連線問題 BPushErrorCode_InternalError = 30600, // 伺服器內部錯誤 BPushErrorCode_MethodNodAllowed = 30601, // 請求方法不允許 BPushErrorCode_ParamsNotValid = 30602, // 請求引數錯誤 BPushErrorCode_AuthenFailed = 30603, // 許可權驗證失敗 BPushErrorCode_DataNotFound = 30605, // 請求資料不存在 BPushErrorCode_RequestExpired = 30606, // 請求時間戳驗證超時 BPushErrorCode_BindNotExists = 30608, // 繫結關係不存在

  3. 方法名,即 onMethod。 

    NSString *const BpushRequestMethod_Bind; bind 方法。

    NSString *constBpushRequestMethod_Unbind; unbind 方法。 

    NSString *const BpushRequestMethod_SetTag; setTags 方法。

    NSString *const BpushRequestMethod_DelTag; delTags 方法。 

    NSString *constBpushRequestMethod_ListTag; listTag 方法。

5.2.3 API 說明

註冊 Push

功能描述:

註冊百度Push服務。

函式原型:

+(void)registerChannel:(NSDictionary*)launchOptions apiKey:(NSString*)apikey pushMode:(BPushMode)mode withFirstAction:(NSString*)leftAction withSecondAction:(NSString*)rightAction withCategory:(NSString*)category isDebug:(BOOL)isdebug;

引數說明:

  • launchOptions:App 啟動時系統提供的引數。
  • apiKey:通過apikey註冊百度推送。
  • mode:當前推送的環境。
  • isdebug:是否是debug模式。
  • leftAction:快捷回覆通知的第一個按鈕名字
  • rightAction:第二個按鈕名字
  • ategory 自定義引數 一組動作的唯一標示 需要與服務端ans的category匹配才能展現通知樣式

返回結果:

(無)

設定Access Token

函式原型:

+(void)setAccessToken:(NSString*)token;

功能描述:

當App用Access Token方式繫結時,用於設定Access Token。無賬號繫結(API Key繫結)時無需呼叫該介面,如果App帳號體系用的不是百度的帳號,也可以用開發者自己的百度帳號獲取Access Token給所有端使用,即4.3.2節無賬號登入體系的第二種方式。必須注意的是,Access token有過期時間,需要及時為每個端更新Access token,並重新執行繫結操作。

引數說明:

  • token:通過百度帳號認證方式獲取的Access token。

返回結果:

(無)

註冊Device Token

函式原型:

+(void)registerDeviceToken:(NSData*)deviceToken;

功能描述:

向百度 Push服務註冊客戶端的Device token,Push服務推送訊息時必須用到,由於Device token是可變的,所以需要經常性的向服務端註冊。

引數說明:

  • deviceToken:直接使用應用程式委託中的回撥方法application:didRegisterForRemoteNotificationsWithDeviceToken:傳入的deviceToken引數即可。

返回結果:

(無)

繫結

函式原型:

+(void)bindChannelWithCompleteHandler:(BPushCallBack)handler;

功能描述:

繫結Push服務通道,必須在設定好Access Token或者API Key並且註冊deviceToken後才可繫結。繫結結果通過BPushCallBack回撥返回。

引數說明:

(無)

返回結果:

BPushCallBack中有繫結結果的反饋,error_code 為0時繫結成功。繫結成功後可以獲取appid,channelid,userid等資訊。

解除繫結

函式原型:

+(void)unbindChannelWithCompleteHandler:(BPushCallBack)handler;

功能描述:

解除已經繫結的Push服務通道,成功解除繫結後,將無法接收雲推送訊息,也無法進行set tag和del tag操作。重新繫結後即可恢復推送功能。解綁請求的結果通過BPushCallBack回撥返回。

引數說明:

(無)

返回結果:

BPushCallBack中有解綁結果的反饋,解綁成功會得到requestid。

處理Push訊息

函式原型:

+(void)handleNotification:(NSDictionary*)userInfo
            
           

相關推薦

Push服務SDK使用者手冊iOS

第一章 簡介 百度雲推送(以下簡稱百度 Push 服務或 Push 服務) iOS SDK 是百度官方推出的 Push 服務 iOS 開發平臺軟體開發工具包,包中含有供 iOS 開發者使用的百度 Push 服務的介面,開發者可通過閱讀本文件從而簡單快捷地整合

怎麼在網頁中插入地圖並標註某個地點簡單

注: 1.從本篇開始,我就把這些年積攢的技術都分享出來,有些可能已經過時,但是還是希望能幫到一些人。 2.程式設計師成長之路小說,還是籌備中,敬請期待。 3.這些文章都會和新浪部落格同步。 先看

uid-generator原始碼 偽共享false sharing,併發程式設計無聲的效能殺手 一個Java物件到底佔用多大記憶體? 寫Java也得了解CPU--偽共享

https://github.com/baidu/uid-generator   snowflake演算法 uid-generator是基於Twitter開源的snowflake演算法實現的。 snowflake將long的64位分為了3部分,時間戳、工作機器id和序列號,位數分配如下。

2015校招之動態規劃兼職問題

晚上做完百度校招筆試題,真心覺得不再愛了,第一題圖片沒刷出來,第二題一看就有思路,結果花了20多分鐘寫程式碼,可竟然半個多小時除錯,還做錯了,第三題也是很簡單。因為前面的網站高併發導致的各種刷不出圖問題,很是影響手感。不吐槽了,動態規劃問題,只是這裡比普通的動態規劃多了層包

Mac 雲下載限速破解教程附軟體

分享一個用mac破解百度網盤限速的教程。普通會員還不能解除限速,超級會員才會解除限速,360一年,太貴 一、下載dmg檔案裡面有這兩個檔案: 一個是aria2,一個是擴充套件外掛

地圖修改點匯聚樣式JS地圖

javascript版百度地圖進行點匯聚並更改樣式,引入百度開源類庫TextIconOverlay_min.js和MarkerClusterer_min.js,使用(map, options)進行點

網盤下載提速方法親測

前言:本方法源自於網路,如有侵權請致信本站(郵箱:[email protected])   百度網盤加速下載方法詳細介紹   操作前準備   1.以“360安全瀏覽器”為例,進行以下操作(不代表僅360瀏覽器可用,其他瀏覽器尚未實踐)。   2.外掛 T

部署DHCP服務---運維筆記補充

部署DHCP服務---運維筆記一?DHCP概述 (1)了解DHCP服務:Dynamic Host Configuration Protoco動態主機配置協議是由Internet工作任務小組設計開發的,專門用於為TCP/IP參數的協議。l(1) 使用DHCP的好處:① 減少管理員的工作量② 避免輸入錯誤

設計模式-14裝飾模式 swift

實現 info 有一個 istview listview 接口 tor true lis 一,概念   裝飾者模式(Decorator):動態地為一個對象添加一些額外的職責,若要擴展一個對象的功能,裝飾者提供了比繼承更有彈性的替代方案。   多組合,少繼承 二,UML圖

【前端】jQuery DataTables 使用手冊精簡 【前端】jQuery DataTables 使用手冊精簡

【前端】jQuery DataTables 使用手冊(精簡版) 一、常用屬性 //把公共的設定項都放在這裡,就不需要每個頁面都設定一遍了,放在jQuery物件上是為了避免汙染全域性變數window.dataTablesSettings = { processing : false,//是否顯

《阿里巴巴Java開發手冊正式》--MySQL規約

(一)建表規約 1.【強制】表達是與否概念的欄位,必須使用 is_xxx的方式命名,資料型別是 unsigned tinyint( 1表示是,0表示否),此規則同樣適用於 odps建表。 說明:任何欄位如果為非負數,必須是 unsigned。 個人備註:

《皇室戰爭》服務端開發案例java

注:這是一般讀何金成《深度解析Java遊戲伺服器開發》中第九章《皇室戰爭》遊戲開發實戰,和結合自己在開發小程式棋牌綜合平臺的一次總結,並將兩者結合的一個開源的java遊戲服務。其中大家可以下載體驗android和ios版本的皇室戰爭遊戲,也可以在小程式搜尋****來體驗我們上

基於CoAP協議客戶端/服務端的demoJava

概述:CoAP是為物聯網而生,短小精悍,它底層基於UDP協議的,其它具體參考百度百科,本例子是基於Californium框架。1、先決條件java環境eclipse工具Maven外掛(有最好,不需要手動下載jar引入,沒有的話手動引入)2、下載Californium框架核心j

《阿里巴巴Java開發手冊正式》--工程規約

(一)應用分層 1.【推薦】圖中預設上層依賴於下層,箭頭關係表示可直接依賴,如:開放介面層可以依賴於Web層,也可以直接依賴於 Service層,依此類推: 開放介面層:可直接封裝 Service介面暴露成 RPC介面;通過 Web封裝成 http介面;

新增16條設計規約!阿里巴巴Java開發手冊詳盡開放下載!

《阿里巴巴Java開發手冊》是阿里內部Java工程師所遵循的開發規範,涵蓋程式設計規約、單元測試規約、異常日誌規約、MySQL規約、工程規約、安全規約等,這是近萬名阿里Java技術精英的經驗總結,並經歷了多次大規模一線實戰檢驗及完善。這是阿里回饋給Java社群的一份禮物,希望

演算法複雜的漸近表示法詳細

轉自:http://blog.csdn.net/corivsky/article/details/2772004 一個演算法的時間複雜度,指演算法執行的時間。 假設資料輸入規模是n,演算法的複雜度可以表示為f(n)的函式 一。大O記號 假設f(n)和g(n)的定

基於UMeng訊息推送測試-demo教程iOS

基於UMeng訊息推送測試-demo教程(iOS版) 眼看著就要過年了(2017本命年終於快過去了臨來嶄新的2018大發年),每個人的心裡就像飛了一樣,這個時候能夠在辦公間待下來的,每個人都是精英,突然想起了那首張含韻的歌《放假了》。 今天是2017年臘月25距離2018年僅有5天,依舊在外

QQ 瀏覽器iOS崩潰資訊研究

今天碰巧下載了QQ瀏覽器iOS版本,居然一啟動就掛了。後來從手機裡面把崩潰資訊匯出來,仔細研究下,把研究的結果放到網上,與大家分享下。 先把我匯出的崩潰資訊放出來 Incident Identifier: 83F9CC94-FF53-45DE-AB80-8

新聞類APP模板詳解iOS

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { NSInteger row = indexPath.row; UITableView

一款APP從設計稿到切圖過程全方位揭祕IOS

9月17日凌晨,IOS9正式推送,它使用的字型最終還是變了,我下面寫的內容你們也要酌情更新,因為我寫的實在趕不上它更新的速度了 iOS9使用的西文字型由Helvetica Neue變更為 San Francisco, iOS9中文字型由此前的黑體-簡變更