iOS 10和低版本下,前后臺收到消息處理方案

由于iOS 9及以下版本,前臺收到通知時無法顯示在通知欄的。iOS 10 已經開放了前臺展示通知欄的API。

首先我們來看看低版本的如何處理:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler;

首先來比較這兩個API的異同,雖然前者已經被蘋果拋棄了,但是在低版本系統我們還是要適配的,最主要的區別是前者只能在應用跑在前臺時才能收到,后者則前后臺都可以收到,而且如果設置了后臺模式為Remote Notifications的話,還可以執行30s來獲取數據。

假如兩者都在Appdelegate里面都實現的話,系統只會調用帶completionHandler的后者。
為了前后臺通知處理一致,我們實現后者,大致如下:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
//如果是前臺,使用第三方EBForeNotification定制通知欄界面,假如在后臺或者未運行,則本來就有
if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
[EBForeNotification handleRemoteNotification:userInfo soundID:0 isIos10:NO];
}
completionHandler(UIBackgroundFetchResultNoData);
}

下面處理iOS 10的情況:
//new API 設置前臺收到遠程消息時是否顯示
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{

completionHandler(UNNotificationPresentationOptionAlert);

}

//用戶點擊通知欄,前后臺處理方式一致,需要注意的是以前的低版本的API是收到通知就回調,iOS 10以后則是用戶點擊才回調
-(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
//do something
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 概述 在多數移動應用中任何時候都只能有一個應用程序處于活躍狀態,如果其他應用此刻發生了一些用戶感興趣的那么通過通知...
    莫離_焱閱讀 6,564評論 1 8
  • 推送通知 注意:這里說的推送通知跟NSNotification有所區別 NSNotification是抽象的,不可...
    iOS開發攻城獅閱讀 4,340評論 1 13
  • 引言:iOS開發,推送可以說是必須的,但是之前對于推送總是概念模糊,最近借公司項目需求,深入了解了一下。“對于知識...
    ibabyblue閱讀 1,387評論 36 8
  • 許多集成的步驟個推官網都有了,這里只寫關于推送的遠程推送和本地通知的步驟和代碼。APP在后臺時:走蘋果的APNS通...
    AllureJM閱讀 2,771評論 1 9
  • 不同版本極光推送SDK集成各有差異,集成時一定要注意版本號,樓主已將博文更新成最新的SDK JPush v3.0....
    i順頌時宜閱讀 7,903評論 37 170