麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

使用pushmebaby測試app的遠程推送功能

2019-11-14 19:27:21
字體:
供稿:網(wǎng)友

什么是遠程消息推送功能

蘋果給iOS和Mac添加了消息推送的功能,使得我們可以通過后臺服務(wù)器給應(yīng)用程序(APP)發(fā)送消息,不管APP是否正在使用,比如郵箱的來件提示功能。這項服務(wù)被稱為Apple Push Notification service(APNs)。里面一共涉及到四個角色:APP、設(shè)備、APNs和應(yīng)用后臺服務(wù)器(PRovider),其中APP、后臺服務(wù)器和APNs之間使用deviceToken唯一的標識一個用戶。

推送服務(wù)的工作流程:

  1. APP向系統(tǒng)注冊推送服務(wù)。
  2. 設(shè)備從APNs請求deviceToken。
  3. 通過代理方法將deviceToken返回給APP。
  4. APP將deviceToken發(fā)送給應(yīng)用后臺服務(wù)器(Provider)。
  5. 應(yīng)用后臺服務(wù)器保存deviceToken,然后在需要推送通知的時候,給APNs發(fā)送信息,使用deviceToken標識所要送達的客戶端。
  6. APNs將后臺服務(wù)器發(fā)過來的數(shù)據(jù)推送到設(shè)備。
  7. 設(shè)備將消息分發(fā)給應(yīng)用程序。

在使用推送功能的時候,需要在開發(fā)者中心創(chuàng)建支持Push Notification的證書,并且將證書和私鑰用于應(yīng)用后臺服務(wù)器與APNs之間通信。

環(huán)境配置

使用推送服務(wù)有一些必要條件:

  1. 開發(fā)者賬號。
  2. iOS真機(iphone、iPad、iPod)。
  3. 后臺服務(wù)器。
  4. 網(wǎng)絡(luò)。

為了使應(yīng)用支持推送服務(wù),需要配置Provisioning Profile使它支持Push,和普通的Provisioning Profile文件一樣分為Development和Production兩個版本。我們使用Development版進行測試。

接下來創(chuàng)建一個用于應(yīng)用后臺服務(wù)器和APNs服務(wù)器通信時使用的SSL證書和私鑰。

1 .在鑰匙串訪問工具中獲取證書請求文件(CSR)。

2 .保存請求文件。

3 .從鑰匙串訪問工具中導(dǎo)出私鑰,將它保存為PushKey.p12,輸入密碼abcde。千萬別把密碼給忘了哈,等下要用的。

4 .登陸iOS Dev Center創(chuàng)建APP ID和*Provisioning Profile*。

5 .創(chuàng)建新的App ID時,要注意開啟Push Notification。

6 .最后App ID看起來是這樣的。

7 .到這一步,雖然已經(jīng)開啟了推送服務(wù),但是還需要進一步配置,點擊Setting按鈕進行設(shè)置。

8 .滾動到最下面,需要創(chuàng)建SSL證書(Create Certificate),測試環(huán)境使用Development SSL Certificate

9 .查看證書創(chuàng)建步驟和說明,上傳第1步得到的證書請求文件。

10 .下載生成好的證書,命名為aps_development.cer


到了這里,我們有多種選擇繼續(xù)了。

1 .使用第三方小工具PushMeBaby模擬應(yīng)用后臺服務(wù)器發(fā)送推送信息。

2 .搭建應(yīng)用后臺服務(wù)器發(fā)送推送信息。


下面先試一試第一種方法,使用PushMeBaby。這是一個開源的Mac小程序,我們直接去Github下載源碼,用Xcode打開,將applicationDelegate.m中天上deviceToken和證書的位置。

- (id)init {    self = [super init];    if(self != nil) {        //77e231f0 76257e00 eed93ac6 47b52c78 12bae79f 9c9d1c67 4c990589 36c9a235 ---- 保留空格        self.deviceToken = @"";        //推送內(nèi)容,JSON格式        self.payload = @"{/"aps/":{/"alert/":/"長沙戴維營教育iOS開發(fā)培訓(xùn)最好!/",/"badge/":1}}";        //獲取證書路徑        self.certificate = [[NSBundle mainBundle] pathForResource:@"aps_development" ofType:@"cer"];    }    return self;}

deviceToken的獲取在下面的代碼部分。

一定要記得將剛才的證書文件添加到項目中,當然也可以直接將證書路徑賦值給self.certificate。


接下來試一試第二種方法,我們使用php來發(fā)送通知(其實運行PHP并不需要另外搭建服務(wù)器和下載程序,Mac默認支持PHP運行,不信到命令行運行一下php)。

這種方式相對來說麻煩一些,但是也是實際使用的時候會采取的方式。我們需要進一步處理私鑰和證書文件。

1 .首先將證書文件和私鑰處理成單個方便使用的pem文件,假設(shè)CSR、p12和cer文件都放在桌面上。

$ cd ~/Desktop$ls aps_development.cerCertificateSigningRequest.certSigningRequestPushKey.p12

2 .將aps_development.cer轉(zhuǎn)換為pem文件。

$ openssl x509 -in aps_development.cer -inform der -out PushCert.pem$ lsaps_development.cerCertificateSigningRequest.certSigningRequestPushCert.pemPushKey.p12

3 .將p12私鑰文件轉(zhuǎn)換為pem文件。

$ openssl pkcs12 -nocerts -out PushKey.pem -in PushKey.p12 Enter Import PassWord:MAC verified OKEnter PEM pass phrase:Verifying - Enter PEM pass phrase:

4 .將兩個文件合成同一個。

$ cat PushCert.pem PushKey.pem > ck.pem$ lsaps_development.cerCertificateSigningRequest.certSigningRequestck.pemPushCert.pemPushKey.pem PushKey.p12

5 .測試證書是否有效。

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushCert.pem -key PushKey.pem 

如果有效的話,會輸出一堆信息,并且建立連接,否則不會成功建立連接。

6 .使用PHP進行測試,下載SimplePush.php,修改文件并填入deviceToken和密碼。在終端運行該代碼。

$ php simplepush.php Connected to APNSMessage successfully delivered

成功發(fā)送推送消息。

代碼實現(xiàn)

有了上面的這些準備工作,iOS端的開發(fā)非常簡單,UIApplicaton中有好幾個方法都與推送消息有關(guān),包括本地推送。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    //判斷是否注冊了遠程通知    if (![application isRegisteredForRemoteNotifications]) {        UIUserNotificationSettings *uns = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound) categories:nil];        [application registerUserNotificationSettings:uns];        //注冊遠程通知        [application registerForRemoteNotifications];    }    return YES;}//注冊成功,返回deviceToken- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{    NSLog(@"%@", deviceToken);}//注冊失敗- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{    NSLog(@"%@", error);}//接收到推送消息- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{    NSLog(@"remote: %@", userInfo);}

甚至可以使用APNs實現(xiàn)一個聊天工具,具體請查看參考資料(4)。

參考資料

  1. https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html
  2. https://github.com/stefanhafeneger/PushMeBaby
  3. http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
  4. http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2

本文檔由長沙戴維營教育整理。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 91成人在线免费 | 护士hd老师fre0性xxx | 亚洲第一页中文字幕 | av在线播放地址 | 国产毛片视频 | 日韩精品dvd | 久久在草 | 国产精品久久久久无码av | 欧美日韩一区二区综合 | 欧美日本色 | 久久久久久久久久久高潮一区二区 | 中文字幕四区 | 黄污在线观看 | 九九精品在线观看视频 | 免费黄色短视频网站 | 久草在线观看福利视频 | 一区二区免费看 | 美国av免费看 | 深夜视频在线 | 久久大陆 | 精品一区二区三区免费看 | 久草视频在线资源 | 中文字幕在线观看日韩 | 亚洲一级片免费观看 | 精品一区二区三区在线播放 | 海外中文字幕在线观看 | 久草在线观看福利 | 日本在线观看视频网站 | 一本色道久久综合亚洲精品图片 | 97中文字幕第一一一页 | 羞羞视频免费网站男男 | 欧美激情猛片xxxⅹ大3 | 欧美成人精品一区 | 免费一级欧美大片视频在线 | 黄视频网站免费 | 日韩视频一二区 | 国产精品欧美久久久久一区二区 | 奶子吧naiziba.cc免费午夜片在线观看 | 91短视频网址 | 亚洲四播房| 欧美国产一级片 |