天天看點

iOS裝置遠端Push功能詳解

作為一個現代應用,沒有Push功能,你已經過時了,為了緊跟時代潮流,我決定研究下如何實作蘋果的Push功能。

總的來說,分為六個内容:建立App,設定AppPush證書,如何在應用内注冊Push,如何處理Push,Push内容詳解。

1.首先我們需要一個測試使用的App。

進入iOS Provisioning Portal,App IDs-> New App ID。

分别輸入你的App的描述和identifier。點選Submit。

進入你新建立的App編輯頁面。把Enable for Apple Push Notfication Service的鈎鈎打上。這裡分兩個,Development Push SSL Certificate和Production Push SSL Certificate兩個服務,我們開發和測試使用第一個就好了。第二個是供從AppStore和ADHOC管道擷取iPa的使用者使用的。點選Configure。

彈出如上界面。我們需要生成一個CSR檔案。

我們需要用到鑰匙串應用。

打開鑰匙串。

填上電子郵件和常用名稱然後選擇存儲到磁盤。點選繼續,把證書儲存到本地。

生成的簽名證書。

回到剛才的頁面,把生成的證書上傳到伺服器上面。

點選Continue。

将生成的證書下載下傳到本地。

到這裡所有在網絡上配置的活動都完成了。

你的應用資訊裡面應該是顯示成這樣的。

2.然後我們需要在App裡面做點文章。

建立一個App,起名叫PushTest。

将應用程式的Bundle identifier改為你剛才設定的那個。

然後在程式的AppDelegate.m檔案裡面加入如下代碼。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {  

    NSString *token = [NSString stringWithFormat:@"%@", deviceToken];  

    NSLog(@"My token is:%@", token);  

}  

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {  

    NSLog(@"Error in registration. Error: %@", err);  

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{  

    NSLog(@"%@",userInfo);  

所有使用APNS服務的應用在進入程式時,需要先在蘋果的APNS伺服器上進行注冊。

注冊的方法是這樣的 。

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert)];  

蘋果的Push服務分三種,數字、聲音和alert形式。其中Alert是一定會顯示出來的。而數字和聲音是可選的。

進入應用,執行我上面的代碼,程式會自動彈出一個提示框,請使用者允許你的應用向他發送Push消息。

這時會觸發

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken

這個代理方法。生成的 device token我們要記下來,等下要用。

如果說注冊失敗了,會觸發這個代理:

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)err;我們可以根據錯誤調整。

收到了APNS發送的Push的消息後,會觸發這個代理。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

到此為止,我們在用戶端做的操作基本都完成了,将程式build到真機上,然後觸發注冊通知的動作。當你正确收到deviceToken 的時候,就說明你注冊成功了。

3. 然後就是測試我們的Push可不可用了。

打開項目,ApplicationDelegate.m 的init方法中有參數設定,把你剛才的deviceToken寫為參數。然後把剛才注冊完成後Apple給你的檔案aps_development.cer放入項目中,self.certificate=

[[NSBundle mainBundle] pathForResource:@"aps_development" ofType:@"cer"]。把這句修正下。然後就可以build了。

點選Push 按鈕之後,就會發送Push到你的應用了。