前一陣子介紹圖解APP訊息推播流程,是關於iOS和Android兩大平台從發送到接收的整個過程,現在我們想要實作處理推送通知 (Process Push Notification),iOS SDK已經包好方法只要註冊成功後,就能透過某個method來繼續接下來的處理。可以先參考圖解蘋果推播通知服務 (Apple Push Notification Service)。
現在有兩個case要處理:
- app在前景與背景運作時(已在記憶體中)
- app第一次載入時(沒在記憶體中)
我想要從收到通知的列表中點擊來觸發,第一點沒什麼問題,第二點就無法觸發該method:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;
怎麼辦呢?還沒開啟app,最先會經過這method:
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
於是乎我們可以在Appdelegate.m中實作:
/** Theme: Process Push Notification IDE: Xcode 7 Language: Objective C Date: 105/04/19 Author: HappyMan Blog: https://cg2010studio.wordpress.com/ */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; // Accept push notification when app is not open if (remoteNotif) { [self handleRemoteNotification:application userInfo:remoteNotif]; return YES; } return YES; } // Accept push notification when app is open (foreground and background) -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { [self handleRemoteNotification:application didReceiveRemoteNotification:userInfo]; } -(void)handleRemoteNotification:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // Do whatever you want here }
我用iPhone 5c iOS 7測試,真的是在載入時馬上進行我想跳轉到特定頁面的動作呢!
參考:Calling didReceiveRemoteNotification when app is launching for the first time。
隨意留個言吧:)~