資源描述:
《iphone消息推送機(jī)制實現(xiàn)與探討》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、iPhone消息推送機(jī)制實現(xiàn)與探討最近兩天在研究ios的消息推送機(jī)制。研究這個東西,還是充滿興趣的。Push的原理:Push的工作機(jī)制可以簡單的概括為下圖圖中,Provider是指某個iPhone軟件的Push服務(wù)器,這篇文章我將使用.net作為Provider。?APNS是ApplePushNotificationService(ApplePush服務(wù)器)的縮寫,是蘋果的服務(wù)器。上圖可以分為三個階段。第一階段:.net應(yīng)用程序把要發(fā)送的消息、目的iPhone的標(biāo)識打包,發(fā)給APNS。?第二階段:APNS在自身的已注冊Push服務(wù)的iPhone列表
2、中,查找有相應(yīng)標(biāo)識的iPhone,并把消息發(fā)到iPhone。?第三階段:iPhone把發(fā)來的消息傳遞給相應(yīng)的應(yīng)用程序,并且按照設(shè)定彈出Push通知。????從上圖我們可以看到。??1、首先是應(yīng)用程序注冊消息推送。???2、IOS跟APNSServer要deviceToken。應(yīng)用程序接受deviceToken。???3、應(yīng)用程序?qū)eviceToken發(fā)送給PUSH服務(wù)端程序。???4、服務(wù)端程序向APNS服務(wù)發(fā)送消息。???5、APNS服務(wù)將消息發(fā)送給iPhone應(yīng)用程序。???無論是iPhone客戶端跟APNS,還是Provider和APNS都
3、需要通過證書進(jìn)行連接的。下面我介紹一下幾種用到的證書。幾種證書:一、*.certSigningRequest文件??1、生成CertificateSigningRequest(CSR):2、填寫你的郵箱和CommonName,這里填寫為PushChat。選擇保存到硬盤。這樣就在本地生成了一個PushChat.certSigningRequest文件。二、生成*.p12文件1、導(dǎo)出密鑰,并輸入你的密碼。輸入你的密碼:這樣就生成了一個PushChatKey.p12文件。三、新建一個AppID和SSLcertificate文件1、用你的付過費的apple
4、帳號登錄到iOSProvisioningPortal。新建一個AppID。????Description:中輸入PushChat????BundleSeedID:默認(rèn)選擇GenerateNew????BundleIdentifier:輸入com.mysoft.PushChat???點擊提交這樣就會生成下面這條記錄:點擊配置:出現(xiàn)下面界面,點擊繼續(xù):這里我們選擇前面生成好的PushChat.certSigningRequest文件,點擊生成。正在生成生成完畢,我們把它下載下來。命名為aps_developer_identity.cer。點擊完成,你會
5、發(fā)現(xiàn)狀態(tài)變成Enabled。到現(xiàn)在為止,我們已經(jīng)生成了3個文件。1、PushChat.certSigningRequest2、PushChatKey.p123、aps_developer_identity.cer現(xiàn)在我們創(chuàng)建一個簡單的iPhone應(yīng)用程序。1、打開Xcode,選擇創(chuàng)建一個View-basedApplication。命名如下圖:2、在PushChatAppDelegate中的didFinishLaunchingWithOptions方法中加入下面代碼:-?(BOOL)application:(UIApplication?*)appli
6、cationdidFinishLaunchingWithOptions:(NSDictionary?*)launchOptions{self.window.rootViewController?=?self.viewController;[self.windowmakeKeyAndVisible];//?Letthedeviceknowwewanttoreceivepushnotifications[[UIApplicationsharedApplication]registerForRemoteNotificationTypes:(UIRemot
7、eNotificationTypeBadge?
8、?UIRemoteNotificationTypeSound?
9、?UIRemoteNotificationTypeAlert)];return?YES;}通過registerForRemoteNotificationTypes方法,告訴應(yīng)用程序,能接受push來的通知。3、在xcode中運行,會彈出下面的提示框:選擇OK。表示此應(yīng)用程序開啟消息通知服務(wù)。在?PushChatAppDelegate.m代碼中添加下面方法獲取deviceToken?:-?(void)application:(UIAppli
10、cation*)applicationdidRegisterForRemoteNotificationsWithDevic