iOS開發之遠程推送

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   color   ar   os   使用   

  說到遠程推送,應該用的也挺多的,今天就基於SEA的雲推送服務,做一個推送的小demo,來瞭解一下iOS中的遠程推送是怎麼一回事兒,首先你得有蘋果的開發人員帳號,好鹹蛋也差不多了,主要內容走起。

  一、準備階段

    1.在蘋果開發官網上申請推送認證之前需要一個名字叫做certSigningRequest檔案。該檔案在MAC系統中產生,用於在Apple網站上申請推送認證檔案,下面是利用鑰匙串產生該檔案的步驟:

      (1).開啟Mac下的鑰匙串-》鑰匙串訪問-》認證助理-》從憑證授權單位請求認證,如所示:

 

      (2).經過上一步會出現下面的對話方塊,郵箱和名稱隨便填寫,然後選擇儲存到磁碟,就可以在本地產生一個CertificateSigningRequest.certSigningRequest檔案。如:

 

    2.去蘋果開發人員的網站上申請推送認證,步驟如下:

      (1)、用開發人員帳號登陸後,進入Member Center,入所示:

 

      (2)、進入member Center後點擊下面的連結:

      (3)、註冊一個支援推送的AppId,在identifiers下面的App IDs選項中點擊添加按鈕,添加一個新的AppIDs,入:

      (4)、填寫你的AppId的名字

      (5)、綁定你應用的Bundle ID

 

      (6)、選中Push Notifications,使本AppID支援訊息推送:

 

 

    3、用上面的AppID申請推送認證

     (1)、點擊認證,選中開發模式,然後單選推送服務

 

      (2)、選中我們剛才建立的AppID,如下:

      (3)、上傳我們剛才在本地用鑰匙串建立的檔案:

      (4)、接下來就可以下載並使用我們的推送認證了

    4、用我們的AppID建立一個Provisioning Profiles檔案,如下:

 

    5.由上面的認證,產生php用的pem檔案過程如下:

      (1).由鑰匙串開啟上面我們產生的CSR檔案,單擊右鍵匯出p12檔案,如:

      (2).設定訪問密碼:

      (3)、在終端下切換到存有剛才我們匯出的p12檔案夾下,進行命令列產生pem檔案,命令列如下,合并的時候會讓輸入密碼,密碼就是我們上面設定的密碼:

1 openssl pkcs12 -clcerts -nokeys -out a.pem -in aps_test.p122 openssl pkcs12 -nocerts -out b.pem -in aps_test.p123 cat a.pem b.pem > end.pem

 

    6、將產生的end.pem檔案上傳到SAE上的雲推送服務上即可,我們在SAE上可以通過檔案的id進行訪問:

    

  二、伺服器端代碼編寫:

    SAE上雲推送所用到的PHP代碼如下:

 1 <?php 2  3 $cert_id =你的認證序號; 4 $device_token = 你的deviceToken; 5 $message = "hello world"; 6  7 //這個是簡單的例子,更複雜的訊息格式請查看蘋果官方文檔 8 $body = array( 9     ‘aps‘ => array( ‘alert‘ => $message)10 );11 $apns = new SaeAPNS();12 //push訊息到SAE推送伺服器13 $result = $apns->push( $cert_id , $body , $device_token );14 15 if( $result && is_array($result) ){16     echo ‘發送成功‘;17     var_dump( $result );18 } else {19     echo ‘發送失敗‘;20     var_dump($apns->errno(), $apns->errmsg());21 }22 23 //查看訊息發送的匯總資訊,傳回值包括當天發送成功的訊息數,以及因各類原因發送失敗的訊息數。24 $result = $apns->getInfo($cert_id);25 if ($result === false) {26     echo "getInfo失敗";27     var_dump($apns->errno(), $apns->errmsg());28 } else {29     echo "getInfo成功";30     var_dump($result);31 }32 33 ?>

 

  三、用戶端代碼如下:

    1.在Appdelegate中註冊推送:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // Override point for customization after application launch.    //註冊遠程通知    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];    [application registerForRemoteNotifications];    return YES;}

  

    2.擷取裝置令牌的回調方法

1 //註冊遠程推送後擷取裝置令牌2 3 -(void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken4 {5     6     NSLog(@"%@",deviceToken);7 }

 

    3.註冊錯誤回調的方法:

-(void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{    NSLog(@"%@",[error localizedDescription]);}

 

    4.在Build Settings中的Code Signing中中我們的推送認證和描述檔案

  到這兒,調用伺服器上的php檔案就可以給我們的裝置發送通知了。

 

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.