iOS開發(fā)之(APNS)遠(yuǎn)程推送實(shí)現(xiàn)代碼 附證書與真機(jī)調(diào)試
遠(yuǎn)程推送通知
什么是遠(yuǎn)程推送通知
顧名思義,就是從遠(yuǎn)程服務(wù)器推送給客戶端的通知(需要聯(lián)網(wǎng))遠(yuǎn)程推送服務(wù),又稱為APNs(ApplePush Notification Services)
為什么需要遠(yuǎn)程推送通知傳統(tǒng)獲取數(shù)據(jù)的局限性只要用戶關(guān)閉了app,就無法跟app的服務(wù)器溝通,無法從服務(wù)器上獲得最新的數(shù)據(jù)內(nèi)容遠(yuǎn)程推送通知可以解決以上問題不管用戶打開還是關(guān)閉app,只要聯(lián)網(wǎng)了,都能接收到服務(wù)器推送的遠(yuǎn)程通知遠(yuǎn)程推送通知使用須知所有的蘋果設(shè)備,在聯(lián)網(wǎng)狀態(tài)下,都會(huì)與蘋果的服務(wù)器建立長連接什么是長連接只要聯(lián)網(wǎng)了,就一直建立連接長連接的作用時(shí)間校準(zhǔn)系統(tǒng)升級(jí)查找我的iPhone.....長連接的好處數(shù)據(jù)傳輸速度快數(shù)據(jù)保持最新狀態(tài)推送原理

Provider就是我們公司的服務(wù)器,經(jīng)過蘋果的APNs服務(wù)器找到我們的設(shè)備,給我們?cè)O(shè)備上的客戶端應(yīng)用推送消息。那APNs服務(wù)器是如何找到我們的設(shè)備和設(shè)備上的應(yīng)用呢,答案就是DeviceToken,DeviceToken需要配置推送證書才可以獲得,推送證書需要知道我們的APPID(應(yīng)用的BundleID,應(yīng)用唯一標(biāo)識(shí))和UDID(設(shè)備唯一標(biāo)識(shí)),還有自己服務(wù)器的UDID,我們先來打一個(gè)推送證書,登錄開發(fā)者中心,點(diǎn)擊證書模塊

點(diǎn)擊iOS Apps的證書

進(jìn)入這樣的界面

點(diǎn)擊App IDs,然后點(diǎn)右上角的加號(hào)

箭頭所指為應(yīng)用ID描述,我們假設(shè)寫了一個(gè)很牛逼的應(yīng)用,ExcitedApp,接下來我們填入App ID,注意這里的AppID是固定的,不能有星號(hào)

接下來我們添加App所需要的服務(wù),然后點(diǎn)擊Continue

一直點(diǎn)擊下一步,完成,在App IDs 列表里面找到我們的ExcitedApp,我們看到

發(fā)現(xiàn)Push服務(wù)是黃色警告,這時(shí)點(diǎn)擊Edit,找到推送模塊,我們需要配置推送證書了,點(diǎn)擊紅色箭頭所指的位置

我們需要一個(gè)CSR文件,CSR是一個(gè)簽名請(qǐng)求文件,意思就是讓我們的MAC具有調(diào)試推送的權(quán)限,點(diǎn)擊繼續(xù)

點(diǎn)擊了繼續(xù)我們看到

然后我們打開Mac上的鑰匙串,從證書頒發(fā)機(jī)構(gòu)請(qǐng)求證書

前兩個(gè)隨便寫,最后選擇存到磁盤

完成之后,接下來我們就可以添加CSR文件了

添加完,選擇生成

證書配好了,下載下來

配好了!

順帶著我們把發(fā)布的證書也給配了,步驟都一樣
打開我們剛剛下載的證書,添加到鑰匙串中

終于能開始整我們的項(xiàng)目了,快哭了都

不要忘記修改bundle id 這里還要搞一個(gè)真機(jī)調(diào)試的證書才可以
真機(jī)調(diào)試的東西這里不累述,搞了這么多東西,我們終于可以拿到DeviceToken了
在AppDelegate.m中注冊(cè)推送
- (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)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- iOS消息推送原理及具體實(shí)現(xiàn)代碼
- iPhone/iPad開發(fā)通過LocalNotification實(shí)現(xiàn)iOS定時(shí)本地推送功能
- iOS10添加本地推送(Local Notification)實(shí)例
- iOS推送之本地通知UILocalNotification
- iOS本地推送簡單實(shí)現(xiàn)代碼
- 使用iOS推送時(shí)警告錯(cuò)誤的解決方法
- iOS10 推送最新特性研究
- iOS仿支付寶芝麻信用分?jǐn)?shù)儀表盤動(dòng)畫效果
- iOS逆向工程使用LLDB的USB連接調(diào)試第三方App
- IOS 仿時(shí)光網(wǎng)選票UI實(shí)例代碼
相關(guān)文章
iOS touch事件區(qū)分單擊雙擊響應(yīng)的方法
如果您的 iPhone 應(yīng)用里有個(gè) view,既有單擊操作又有雙擊操作。用戶雙擊 view 時(shí),總是先執(zhí)行一遍單擊的操作再執(zhí)行雙擊的操作。所以直接判斷時(shí)就會(huì)發(fā)現(xiàn)不能直接進(jìn)入雙擊操作。下面是區(qū)分 touch 事件是單擊還是雙擊的方法,需要的朋友可以參考下2016-10-10
詳解iOS應(yīng)用開發(fā)中的ARC內(nèi)存管理方式
這篇文章主要介紹了詳解iOS應(yīng)用開發(fā)中的ARC內(nèi)存管理方式,文中示例基于Objective-C語言,需要的朋友可以參考下2016-02-02
iOS中給自定義tabBar的按鈕添加點(diǎn)擊放大縮小的動(dòng)畫效果
這篇文章主要介紹了iOS中給自定義tabBar的按鈕添加點(diǎn)擊放大縮小的動(dòng)畫效果的相關(guān)資料,非常不錯(cuò),具有參考解決價(jià)值,需要的朋友可以參考下2016-11-11
iOS開發(fā)-調(diào)用系統(tǒng)相機(jī)和相冊(cè)獲取照片示例
這篇文章主要介紹了iOS開發(fā)-調(diào)用系統(tǒng)相機(jī)和相冊(cè)獲取照片示例的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02
iOS App使用設(shè)計(jì)模式中的模板方法模式開發(fā)的示例
這篇文章主要介紹了iOS應(yīng)用使用設(shè)計(jì)模式中的模板方法模式開發(fā)的示例,例子代碼為Objective-C語言,文中還與Java的相關(guān)實(shí)現(xiàn)進(jìn)行類比,需要的朋友可以參考下2016-03-03
iOS中修改UITextField占位符字體顏色的方法總結(jié)
這篇文章給大家分享了iOS中修改UITextField占位符字體顏色的三個(gè)方法,分別是使用attributedPlaceholder屬性、重寫drawPlaceholderInRect方法和修改UITextField內(nèi)部placeholderLaber的顏色,下面我們一起來看看詳細(xì)的方法介紹。2016-09-09
詳解iOS的Core Animation框架中的CATransform3D圖形變換
CATransform3D一般用于操作view的layer的,是Core Animation的結(jié)構(gòu)體,可以用來做比較復(fù)雜的3D操作,這里我們就帶大家來詳解iOS的Core Animation框架中的CATransform3D圖形變換2016-07-07

