iOS apns推送

  前言:推送分爲本地推送以及遠程推送。git

  二者的區別爲本地推送通常爲定時推送、按期推送或者位置推送。而遠程推送更爲多樣化,能知足較高的要求。固然遠程推送須要服務器端開發,開發流程較複雜。github

  一、本地推送只須要在客戶端寫代碼便可,實現簡單輕鬆。安全

 (1)本地推送在app未開啓的狀況下也能收到本地推送的消息。會走這個入口方法服務器

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsapp

 

 (2)app在後臺能收到推送消息。點擊推送的消息,會打開APP,而且走工具

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;測試

 

 (3)app在前臺運行時會收到推送消息,若是將通知中心的代理設爲AppDelegate .這樣本地推送的表現形式在前臺時也能收到banner彈框消息。spa

可是若是將通知中心的代理設爲某個控制器的話,在前臺收不到推送消息,可是依然會回調willPresentNotification代理方法。 3d

可是UIAppDelegate方法代理

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;會自動回調消息的內容

 

 

對於iOS 10  用戶點擊 推送消息,都會走代理方法,不管是前臺 後臺 仍是未開啓狀態

 

-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler;

 

當應用在前臺時,會走以下代理方法 後臺以及未開啓app狀態的狀況下都不會走這個代理方法。目的是在前臺時,應用能及時根據推送的消息進行一些相應的UI處理等。

 

 

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification*)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler;

 

 

 

 

 

二、遠程推送

遠程推送 服務器端開發比較繁瑣。下面是一些寫在遠程推送開發前的內容。能夠藉助第三方的推送工具如 Push me baby來測試。

有一篇很好的參考文章,感謝這位大俠的分享:https://mobiforge.com/design-development/programming-apple-push-notification-services

 

簡單說明就是在github上下載push me baby源碼 運行。在代碼中init方法中修改device token\ certificate。注意相應環境的證書和device token要互相匹配。 device token由測試demo在真機上生成。 相應的證書要安裝在mac上。拖入工程目錄的證書要是cer格式。

 

////////////////////////////////////////////////下面是生成推送證書時須要注意的事項////////////////////////////////////////////////

生成apns推送證書時,服務器端須要pem格式。在電腦上將證書轉成pem格式 ,思路是分別將證書和key導成p12,而後將p12轉成pem格式。最後將兩個pem文件合併成一個pem文件。最後驗證證書是否生成成功。若是驗證不成功的時候,注意請求crs文件,即祕鑰時,爲了安全起見,注意填寫的郵箱爲開發者帳號。

參考連接 https://www.jianshu.com/p/fb180965ff76     

 

https://www.jianshu.com/p/cc952ea07a08

 

下面來介紹遠程推送,遠程推送的表現形式和本地推送很是一致。可是遠程推送能夠隨時隨地由應用的服務器推送消息,給appns,而後apns再將消息推送給設備。

遠程推送不管應用在前臺或者後臺仍是沒有運行,都會彈banner條幅。同時也會有推送代理方法。

相關文章
相關標籤/搜索