作為一個現代應用,沒有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到你的應用了。