iOS 遠程推播通知 詳解

來源:互聯網
上載者:User

標籤:

 

1: ios本地通知和遠程通知

http://wangjun.easymorse.com/?p=1482

2: 蘋果遠程通知服務申請啟用例圖 (外國佬寫的.)

http://mobiforge.com/developing/story/programming-apple-push-notification-services

3:書籍參考:iPhone 開發秘籍 第16章 推播通知.

 

好了,進入本文:

首先是申請認證的網址

https://developer.apple.com/ios/manage/overview/index.action

登入成功以後,進入iOS 組態管理的 首頁面.

第一步操作是去 建立一個新的App IDs建立成功後,會需要提供安全性憑證來激動推送服務,如:

選擇儲存到磁碟以後,產生一個檔案名稱為(簡稱CSR): CertificateSigningRequest.certSigningRequest

回到Apple頁面 將這個提交並提示激動成功.

啟用成功後的App  IDs 提供下載 開發版或是發布版的主動推送認證(aps_development.cer),如果需要做伺服器方面的主動推送的話,就必須要下載這個檔案來使用推送服務了.

第二步要為App提供接受推送許可的認證,點擊Provisioning進行設定,添加一個新的許可,選擇剛剛新建立的App IDs. 再選擇可以調試的iPhone 裝置.

最後,同樣是下載下來: YsyPushMessageDemo.mobileprovision雙擊該認證,讓其載入一次.

接下來,進入iOS工程,選擇使用該認證來調試.

紅圈中,全部設定剛剛載入的許可認證.

 

那麼到這裡,關於認證類的 準備工作,已經全部準備就緒.

在這裡再此強調一次,每個檔案的具體作用

1: CertificateSigningRequest.certSigningRequest : 為產生App IDs 而用

2: aps_development.cer 為開發主動推送服務而用到的認證

3: YsyPushMessageDemo.mobileprovision 為App 接受推播通知的許可服務

 

主動推送的Push 代碼 及使用,請參考一開始介紹的第一篇部落格

這裡只附上: https://github.com/stefanhafeneger/PushMeBaby

 

接下來,說說收到推播通知代碼方面.

1:申請本App需要接受來自服務商提供推送訊息,

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


2:申請發出後,如果成功,委託會自動返回一個裝置令牌(toKen),如果失敗,將會進入另外一個失敗的委託

[csharp] view plaincopy
  1. //遠程通知註冊成功委託  
  2. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken  
  3. {  
  4.     NSLog(@"%@",deviceToken);  
  5.     self.viewController.toKenValueTextView.text = [NSString stringWithFormat:@"%@",deviceToken];  
  6.     self.viewController.pushStatusLabel.text = @"已經註冊.";  
  7. }  
  8. //遠程通知註冊失敗委託  
  9. -(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error  
  10. {  
  11.     self.viewController.toKenValueTextView.text = [error description];  
  12. }  


3:將裝置令牌碼提供給服務商,以供推送到具體的手機上面. 如果遠程推送訊息來了,使用者點擊了推送訊息,或者應用已經處於開啟狀態,系統都會自動調用以下委託:

[csharp] view plaincopy
  1. //點擊某條遠程通知時調用的委託 如果介面處於開啟狀態,那麼此委託會直接響應  
  2. -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  
  3. {  
  4.     NSLog(@"遠程通知");  
  5.     [self PMD_uesPushMessage:userInfo];  
  6. }  


4: 第三點裡面的介紹的情況是應用程式已經處於運行狀態,上面的委託才會被執行,如果應用程式處於未啟用狀態,此時又需要響應訊息,那麼需要以下委託處理.

[csharp] view plaincopy
  1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  
  2. {  
  3.     //這裡處理應用程式如果沒有啟動,但是是通過通知訊息開啟的,此時可以擷取到訊息.  
  4.     if (launchOptions != nil) {  
  5.         NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];  
  6.         [self PMD_uesPushMessage:userInfo];  
  7.     }  
  8.     return YES;  
  9. }  

5:清空通知中樞已有的推送訊息,只需要將指定App 的 Badge 設定為 0即可

[csharp] view plaincopy
  1. [[UIApplication sharedApplication ] setApplicationIconBadgeNumber:0];  


6:主動推送的字串必須符合如下Json數組的格式,才能正確推送到手機當中.

    @"{

       //自訂參數

       \"userinfo\":

              {

                 \"name\":\"remote notice\"

              },

       //標準寫法

       \"aps\":

              {

                 \"alert\":

                           {

                              \"action-loc-key\":\"Open\",//支援多語言

                              \"body\":\"messgae content\"//訊息本文

                           },

                 \"badge\":1,//為App 的icon  標記 具體數值

                 \"sound\":\"default\" //播放的音頻檔案,default 表示系統預設的選擇列鈴聲

             } 

     }";

到這裡就差不多結束了.

iOS 遠程推播通知 詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.