ios push 工作機制可以用下圖簡要概括
push的主要工作流程是:
上述過程中,有兩個關鍵步驟需要自己處理的是:1.客戶端獲取devicetoken,並上傳到provider;2.provider傳送push訊息到apns。這兩個步驟中都需要蘋果的push證書授權,下面就來介紹如何生成push證書,以及provisioning profile。生成push證書前要先生成開發證書
生成開發證書的過程不詳細介紹,可以參考如何聯機除錯和發布程式。只是有一點需要注意的,生成開發證書過程中需要通過keychain生成乙個csr檔案,預設名為certificatesigningrequest.certsigningrequest,這個檔案將在生成push證書的時候用到。
注意:要用push功能的bundle identifier一定不能出現萬用字元,比如com.mycompany.*
,這樣的名字是不能使用push的。
生成push ssl certificate
從keychain中匯出私鑰、設定好密碼,命名為private_key.p12
生成push證書
生成provisioning profile
服務端要傳送push訊息給某一裝置還必須知道該裝置的devicetoken。應用執行後獲取到devicetoken,然後上傳給伺服器,下面介紹應用如何獲取devicetoken。應用必須先註冊使用push功能。
123456
-
(bool)(
*)didfinishlaunchingwithoptions:
(nsdictionary*)
launchoptions
1234567
89
-
(void)(
*)didregisterforremotenotificationswithdevicetoken:
(nsdata*)
devicetoken-(
void)(
*)didfailtoregisterforremotenotificationswitherror:
(nserror*)
error
應用獲取到devicetoken後,上傳給provider,provider就可以用這個devicetoken給這個裝置push訊息了。
伺服器配置好證書並拿到devicetoken後就可以向apns傳送訊息了。傳送訊息的格式如下圖所示:
payload就是push的訊息負載,這就是應用需要關心的資料。 payload是乙個json字典,最大值是 256 位元組,超過這個限制,apns將拒絕**。基本格式如下:
1234567
8
}
要在這個結構中新增自定義資料,**在aps空間之外。比如後台推送訊息給應用同時要求應用開啟某個頁面:
1234567
89
,
"page"
:"home"
}
後台告訴客戶端收到這個push後開啟應用的主頁,這裡的page、home都是自己定義的。必須注意的是,payload大小不能超過限制,所以可以把自定義資料更簡化點,比如可以把home與編號1對應,page簡寫為p,這樣"p":1
表示開啟主頁,可以縮小payload的大小。
1234
-
(void)(
*)didreceiveremotenotification:
(nsdictionary*)
userinfo
如果應用還沒有啟動,通過push冷啟動後,仍然能在啟動後獲取payload:
12345
-
(bool)(
*)didfinishlaunchingwithoptions:
(nsdictionary*)
launchoptions
目前為止,push功能基本就完成了,可以開始push功能測試了,如果伺服器還沒開發完成,或者想快速測試是否能正常push,可以使用下面的**實現後台push測試。傳送push前要配置好ssl證書,以及devicetoken和payload結構。 一步一步實現FormsAuthentic驗證登入
本文不講原理,只講用法,原理性的東西網上特別多,不過還是會對一些要用到的東西進行解釋,不深入講原理。本文中用的是vs2012 net mvc 4.0。原理看這篇文章 看完這個文章絕對受益匪淺。說下登入的整個流程 使用者輸入賬號密碼 點選提交 資料提交到後台控制器 去資料庫取得使用者資料 如果登入成功...
一步一步 Sql Azure
一步一步 sql azure 1.使用 windowsazure 平台賬號登陸 2.新建sqlazure server 3.新建資料庫 4.為sql azure server 新增防火牆規則,只有將本機新增到規則裡才能從本機連線到該sqlazure server 5.連線到sql azure ser...
一步一步帶你實現virtual dom(一)
一步一步帶你實現virtual dom 一 一步一步帶你實現virtual dom 二 props和事件 要寫你自己的虛擬dom,有兩件事你必須知道。你甚至都不用翻看react的源 或者其他的基於虛擬dom的 他們 量都太大,太複雜。然而要實現乙個虛擬dom的主要部分只需要大約50行的 50行 下面...