Device 安裝帶有推送服務程序的iPhone手機
Provider 程序服務器,把需要推送的信息發給 APNs
DeviceToken 在Device第一次連接APNs時,由APNs生成的經過加密的連接認證信息。在以後的連接中,無論時Provider到APNs還是APNs到Device 都需要 DeviceToken作爲認證。
Payload 需要推送的消息的主體內容。
alert-alert消息的消息體,按鍵標題等
badge
-顯示在程序icon右上角的數字,sound-聲音提示文件的文件名,該聲音資源文件要在程序包中。
整體流程大體分爲五個步驟:
1: Device --> 連接--> APNs 獲取 DeviceToken
2: Device -->連接--> Provider 提供DeviceToken
3: Provider偵測需要push的消息生成Notification信息
4: Provider偵把要push的消息推送到APNs
5: APNs把該消息推送到手機
使用方法:
爲了獲取deviceToken
第一步:獲取認證書Certificates.p12 [註釋:.p12 文件,文件名可以隨便取]
該Certificates.p12 認證書 是用於服務器與APNs服務器SSL 連接時的認證,而獲取p12的前提是獲取APNs Assistant
1:每個程序都要在apple開發中心生成 App ID.
2:單擊app id 的後面的 Configure
3:在新的頁面中,勾選Enable Push Notification Services , 而後點擊Configure ,隨後出現APNs Assistant,APNs助手會引導生成你的程序與APNs服務器進行SSL連接的認證書App ID specific Client SSL certificate[註釋:一般文件名爲“aps_developer_identity.cer” 可修改]
4:APNs助手會引導你保存SSL certificate到你的硬盤,保存好後雙擊,安裝到你的keychain
5: 執行完以上四步,可以點擊Done,關閉APNs助手。
6:啓動Keychain Access程序,查看剛纔安裝的認證,name 爲apple Development/Production push Services。。。
導出--即獲得Certificates.p12 保存好給Provider 服務器使用
第二步:iPhone 端
iPhone provisioning 以開啓了PUSH功能App ID 生成相應的provisioning。
iPhone需要用到的方法函數如下:
//註冊啓用 push
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge /*|UIRemoteNotificationTypeSound*/)];
//用該判斷 程序是不是通過push消息啓動的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
//iPhone 從APNs服務器獲取deviceToken後激活該方法
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
//註冊push功能失敗 後 返回錯誤信息,執行相應的處理
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err
注意:
deviceToken的處理
[[devToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]
調測試方法:
Device
調試運行iPhone端程序,以獲取deviceToken 爲成功標誌。
Provider
網上有個共開發測試的Provider程序:
PushMeBaby:
使用的方法是,
1;拷貝註冊獲取的SSL certificate文件【.cer文件】重命名爲 apns.cer 添加到PushMeBaby資源文件夾中
2: 運行,輸入 iPhone端獲取的deviceToken
3: 推送
以Device 程序獲得相應消息爲成功標誌。