久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

iOS消息推送機制的實現(xiàn)

 求知665 2014-10-19

iOS消息推送的工作機制可以簡單的用下圖來概括:


 

Provider是指某個iPhone軟件的Push服務(wù)器,,APNS是Apple Push Notification Service的縮寫,,是蘋果的服務(wù)器,。

 

上圖可以分為三個階段:

第一階段:應(yīng)用程序把要發(fā)送的消息,、目的iPhone的標識打包,,發(fā)給APNS。 

第二階段:APNS在自身的已注冊Push服務(wù)的iPhone列表中,,查找有相應(yīng)標識的iPhone,,并把消息發(fā)送到iPhone,。 

第三階段:iPhone把發(fā)來的消息傳遞給相應(yīng)的應(yīng)用程序,,并且按照設(shè)定彈出Push通知,。

 

從上圖我們可以看到:

1、應(yīng)用程序注冊消息推送,。

2,、iOS從APNS Server獲取device token,應(yīng)用程序接收device token,。

3,、應(yīng)用程序?qū)evice token發(fā)送給PUSH服務(wù)端程序。

4,、服務(wù)端程序向APNS服務(wù)發(fā)送消息,。

5、APNS服務(wù)將消息發(fā)送給iPhone應(yīng)用程序,。

 

無論是iPhone客戶端和APNS,,還是Provider和APNS,都需要通過證書進行連接,。

 

下面我介紹一下幾種用到的證書,。

 

一、CSR文件

 

1,、生成Certificate Signing Request(CSR)


 

2,、填寫你的郵箱和常用名稱,并選擇保存到硬盤,。


 

點擊繼續(xù):


 

這樣就在本地生成了一個Push.certSigningRequest文件,。

 

二、p12文件

 

1,、導(dǎo)出密鑰,。



 

2、輸入你的密碼,。

 

 

這樣就生成了一個Push.p12文件,。

 

三、SSL certificate文件

 

1,、用你付過費的賬號登錄到iOS Provisioning Portal,,并新建一個App ID,這個過程可以參考:iOS應(yīng)用的真機調(diào)試,,這樣就會生成下面這條記錄:


 

2,、點擊右側(cè)的Configure:


 

3、點擊Development Push SSL Certificate一行后的Configure:

 

 

4,、點擊Continue:


 

5,、選擇前面生成好的Push.certSigningRequest文件,,點擊Generate,出現(xiàn)如下所示的頁面:


 

6,、點擊Continue:


 

7,、點擊Download,并將文件命名為aps_developer_identity.cer,。

 

8,、點擊Done,你會發(fā)現(xiàn)狀態(tài)變成了Enabled:


 

注意:有的App ID的Apple Push Notification service列是灰色的,,并且不允許使用Configure按鈕,,這是因為APNS不支持帶通配符的App ID。

 

到現(xiàn)在為止,,我們已經(jīng)生成了三個文件:

 

1,、Push.certSigningRequest

2、Push.p12

3,、aps_developer_identity.cer

 

在項目的AppDelegate中的didFinishLaunchingWithOptions方法中加入下面的代碼:

 

  1. [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeBadge)];   

 

通過registerForRemoteNotificationTypes方法,,告訴應(yīng)用程序,能接受push來的通知,。

 

在項目的AppDelegate中添加下面的方法來獲取deviceToken:

 

  1. - (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {     
  2.     NSString *token = [NSString stringWithFormat:@"%@", deviceToken];  
  3.     NSLog(@"My token is:%@", token);  
  4. }  
  5.   
  6. - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {      
  7.     NSString *error_str = [NSString stringWithFormat: @"%@", error];  
  8.     NSLog(@"Failed to get token, error:%@", error_str);  
  9. }  

 

獲取到的deviceToken,,我們可以提交給后臺應(yīng)用程序,發(fā)送通知的后臺應(yīng)用程序除了需要知道deviceToken之外,,還需要一個與APNS連接的證書,。

 

這個證書可以通過我們前面生成的兩個文件中得到。

 

1,、將aps_developer_identity.cer轉(zhuǎn)換成aps_developer_identity.pem格式

 

  1. openssl x509 -in aps_developer_identity.cer -inform DER -out aps_developer_identity.pem -outform PEM  

 

2,、將p12格式的私鑰轉(zhuǎn)換成pem

 

  1. openssl pkcs12 -nocerts -out Push_Noenc.pem -in Push.p12  

 

3、創(chuàng)建p12文件

 

  1. openssl pkcs12 -export -in aps_developer_identity.pem -inkey Push_Noenc.pem -certfile Push.certSigningRequest -name "aps_developer_identity" -out aps_developer_identity.p12  

 

這樣我們就得到了在.net或java等后臺應(yīng)用程序中使用的證書文件:aps_developer_identity.p12

 

如果后臺應(yīng)用是php的話,,那么可以按照 iOS消息推送機制中pem文件的生成這篇文章中的方法來生成php后臺應(yīng)用程序中使用的證書文件:ck.pem

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多