iOS開發(fā)之(APNS)遠程推送實現(xiàn)代碼 附證書與真機調(diào)試
遠程推送通知
什么是遠程推送通知
顧名思義,就是從遠程服務器推送給客戶端的通知(需要聯(lián)網(wǎng))遠程推送服務,又稱為APNs(ApplePush Notification Services)
為什么需要遠程推送通知傳統(tǒng)獲取數(shù)據(jù)的局限性只要用戶關閉了app,就無法跟app的服務器溝通,無法從服務器上獲得最新的數(shù)據(jù)內(nèi)容遠程推送通知可以解決以上問題不管用戶打開還是關閉app,只要聯(lián)網(wǎng)了,都能接收到服務器推送的遠程通知遠程推送通知使用須知所有的蘋果設備,在聯(lián)網(wǎng)狀態(tài)下,都會與蘋果的服務器建立長連接什么是長連接只要聯(lián)網(wǎng)了,就一直建立連接長連接的作用時間校準系統(tǒng)升級查找我的iPhone.....長連接的好處數(shù)據(jù)傳輸速度快數(shù)據(jù)保持最新狀態(tài)推送原理
Provider就是我們公司的服務器,經(jīng)過蘋果的APNs服務器找到我們的設備,給我們設備上的客戶端應用推送消息。那APNs服務器是如何找到我們的設備和設備上的應用呢,答案就是DeviceToken,DeviceToken需要配置推送證書才可以獲得,推送證書需要知道我們的APPID(應用的BundleID,應用唯一標識)和UDID(設備唯一標識),還有自己服務器的UDID,我們先來打一個推送證書,登錄開發(fā)者中心,點擊證書模塊
點擊iOS Apps的證書
進入這樣的界面
點擊App IDs,然后點右上角的加號
箭頭所指為應用ID描述,我們假設寫了一個很牛逼的應用,ExcitedApp,接下來我們填入App ID,注意這里的AppID是固定的,不能有星號
接下來我們添加App所需要的服務,然后點擊Continue
一直點擊下一步,完成,在App IDs 列表里面找到我們的ExcitedApp,我們看到
發(fā)現(xiàn)Push服務是黃色警告,這時點擊Edit,找到推送模塊,我們需要配置推送證書了,點擊紅色箭頭所指的位置
我們需要一個CSR文件,CSR是一個簽名請求文件,意思就是讓我們的MAC具有調(diào)試推送的權限,點擊繼續(xù)
點擊了繼續(xù)我們看到
然后我們打開Mac上的鑰匙串,從證書頒發(fā)機構請求證書
前兩個隨便寫,最后選擇存到磁盤
完成之后,接下來我們就可以添加CSR文件了
添加完,選擇生成
證書配好了,下載下來
配好了!
順帶著我們把發(fā)布的證書也給配了,步驟都一樣
打開我們剛剛下載的證書,添加到鑰匙串中
終于能開始整我們的項目了,快哭了都
不要忘記修改bundle id 這里還要搞一個真機調(diào)試的證書才可以
真機調(diào)試的東西這里不累述,搞了這么多東西,我們終于可以拿到DeviceToken了
在AppDelegate.m中注冊推送
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) { UIUserNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:myTypes categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:settings]; }else { UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound; [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes]; } return YES; }
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"%@",deviceToken); }
//ios8 另外增加以下方法 #ifdef __IPHONE_8_0 - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [application registerForRemoteNotifications]; } #endif
DeviceToken處理流程
接下來我們用SmartPush來測試一下我們的推送:https://github.com/shaojiankui/SmartPush
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
iOS CAReplicatorLayer實現(xiàn)脈沖動畫效果
這篇文章主要介紹了iOS CAReplicatorLayer實現(xiàn)脈沖動畫效果 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-06-06iOS動態(tài)調(diào)整UILabel高度的幾種方法
在iOS編程中UILabel是一個常用的控件,下面這篇文章主要給大家介紹了關于iOS動態(tài)調(diào)整UILabel高度的幾種方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。2017-12-12