iOS開發之遠程推送,ios開發
說到遠程推送,應該用的也挺多的,今天就基於SEA的雲推送服務,做一個推送的小demo,來瞭解一下iOS中的遠程推送是怎麼一回事兒,首先你得有蘋果的開發人員帳號,好鹹蛋也差不多了,主要內容走起。
一、準備階段
1.在蘋果開發官網上申請推送認證之前需要一個名字叫做certSigningRequest檔案。該檔案在MAC系統中產生,用於在Apple網站上申請推送認證檔案,下面是利用鑰匙串產生該檔案的步驟:
(1).開啟Mac下的鑰匙串-》鑰匙串訪問-》認證助理-》從憑證授權單位請求認證,如所示:
1 openssl pkcs12 -clcerts -nokeys -out a.pem -in aps_test_cer.p122 openssl pkcs12 -nocerts -out b.pem -in aps_test_key.p123 cat a.pem b.pem > end.pem
6、將產生的end.pem檔案上傳到SAE上的雲推送服務上即可,我們在SAE上可以通過檔案的id進行訪問:
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檔案就可以給我們的裝置發送通知了。