實現iOS前台時的推送彈窗效果


原文鏈接

或許很多童鞋還不知道,在 iOS 中收到推送通知時,如果 App 處於前台運行的情況下,推送的頂部彈窗是不會彈出來的。

然而就是有很多**的產品經理都會提出類似這樣的**需求:
那就是在 App 處於前台時一樣要彈出推送的窗口,而且還要能點擊,能跳轉到指定頁面,甚至這一需求還涉及到了產品的核心功能。

今天 Pikacode 就跟大家分享一下自己寫的小插件,僅僅只需 1、2 行代碼,即可搞定這一需求。

Github: https://github.com/Yasashi/EBForeNotification

EBForeNotification


在 App 處於前台時展示跟系統完全一樣的推送彈窗聲音。獲取推送內容,並且處理點擊事件。

支持 iOS 7~10 beta,支持模擬器真機運行。

效果

實際效果如下:


 

 
  • 跟系統推送彈窗 UI 效果完全相同
  • 可以自動獲取 App 的應用名稱應用圖標
  • 彈窗時會自動隱藏系統狀態欄、收起后自動顯示系統狀態欄
  • 自帶推送聲音
  • 時間及下方收拉條的顏色跟當前頁面的背景顏色相同
  • 自帶點擊事件,點擊可獲取推送內容,進行相應頁面跳轉
  • 自帶上滑手勢,快速收起
  • 自動在處於最前端的 controller 上進行彈窗

安裝

  1. 下載並在 Xcode 中 拖拽拷貝 EBForeNotification 文件夾至 Xcode 工程。
  2. targets --> Build Settings --> 搜 other link --> 添加 -ObjC

     

本地彈窗

在任意方法內調用以下任 1 行代碼即可彈窗

#import "EBForeNotification.h" {... //普通彈窗(系統聲音) [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示內容"}} soundID:1312]; //普通彈窗(指定聲音文件) [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示內容"}} customSound:@"my_sound.wav"]; //帶自定義參數的彈窗(系統聲音) [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示內容"}, @"key1":@"value1", @"key2":@"value2"} soundID:1312]; //普通彈窗(指定聲音文件) [EBForeNotification handleRemoteNotification:@{@"aps":@{@"alert":@"展示內容"}, @"key1":@"value1", @"key2":@"value2"} customSound:@"my_sound.wav"]; ...}

接收遠程/本地推送后彈窗

接收遠程/本地推送后,自動在前台展示推送彈窗及聲音。
AppDelegate.m 中添加代碼

//AppDelegate.m #import "EBForeNotification.h" //ios7 before - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { ... //系統聲音彈窗 [EBForeNotification handleRemoteNotification:userInfo soundID:1312]; //指定聲音文件彈窗 [EBForeNotification handleRemoteNotification:userInfo customSound:@"my_sound.wav"]; ... } //ios7 later - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { ... //系統聲音彈窗 [EBForeNotification handleRemoteNotification:userInfo soundID:1312]; //指定聲音文件彈窗 [EBForeNotification handleRemoteNotification:userInfo customSound:@"my_sound.wav"]; ... completionHandler(UIBackgroundFetchResultNewData); }

soundID 參數

iOS 系統自帶的聲音 id,系統級的推送服務默認使用的是三全音,id = 1312

其他系統聲音 id 可以在這里查詢到 iOS Predefined sounds
備用地址 AudioServices sounds

監聽並處理點擊事件

添加 Observer 監聽 EBBannerViewDidClick,獲取推送內容,通過推送時自定義的字段處理自己邏輯,如:跳轉到對應頁面等。

接收到的推送內容類似以下:

{
    "aps": { "alert":"推送內容", "sound":"sound", "badge":"3" }, "key1":"跳轉頁面1" //自定義此字段以跳轉到相應頁面 }

添加 Observer 獲取自定義的字段,並處理:

#import "EBForeNotification.h" [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(eBBannerViewDidClick:) name:EBBannerViewDidClick object:nil]; -(void)eBBannerViewDidClick:(NSNotification*)noti{ if(noti[@"key1" == @"跳轉頁面1"]){ //跳轉到頁面1 } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM