1. 程式人生 > >極光推送 推送處理總結 點選通知跳轉

極光推送 推送處理總結 點選通知跳轉

當應用處於殺死狀態的時候,通過點選通知內容開啟APP 此時只需在  (位於後臺的時候點選通知內容不會走這個方法)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

]方法中判斷launchOptions是否為空

例如:

if (launchOptions !=nil) {// 不是空 就是推送點選 否則是圖示啟動

NSDictionary* remoteNotification = [launchOptionsobjectForKey

:UIApplicationLaunchOptionsRemoteNotificationKey];

if ([[UIDevicecurrentDevice].systemVersionfloatValue] < 10.0) {

 // iOS 10 不必走此方法

        [selfreciveNotification:remoteNotification];// 處理推送跳轉方法 詳見下方

      }

}

#pragma mark  iOS 6 以下收到推送

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary

 *)userInfo {

    [JPUSHServicehandleRemoteNotification:userInfo];

    //pushDic = userInfo;

    //[selfreciveNotificationAlertShow];

}


iOS 7 及以上10以下 收到推送及點選處理

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult

))completionHandler {

    [JPUSHServicehandleRemoteNotification:userInfo];

if (application.applicationState == UIApplicationStateActive) {

// 如果是前臺執行出現彈窗

         pushDic = userInfo;

// 前臺收到推送出現彈窗

        [selfreciveNotificationAlertShow];

    }else{

// 處於後臺的點選

        [selfreciveNotification:userInfo];

    }

    completionHandler(UIBackgroundFetchResultNewData);

}


#pragma mark iOS 10 前臺收到通知(遠端推送本地通知)

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification*)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {

    NSDictionary * userInfo = notification.request.content.userInfo;

    if([notification.request.triggerisKindOfClass:[UNPushNotificationTriggerclass]]) {

/// iOS10處理遠端推送

        [JPUSHServicehandleRemoteNotification:userInfo];

        pushDic = userInfo;

// 前臺出彈窗提示

        [self reciveNotificationAlertShow];

    }else{

/// iOS10處理本地通知新增到通知欄

completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);

    }

// 需要執行這個方法,選擇是否提醒使用者,有BadgeSoundAlert三種類型可以選擇設定

}


當APP 無論運行於後臺時,殺死 點選通知內容 開啟APP 會走這個方法 這要在這個方法中處理推送跳轉

iOS 10

- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {

// Required

NSDictionary * userInfo = response.notification.request.content.userInfo;

if([response.notification.request.triggerisKindOfClass:[UNPushNotificationTriggerclass]]) {

// 推送處理

        [JPUSHServicehandleRemoteNotification:userInfo];

        [selfreciveNotification:userInfo];

    }else{

// 本地通知處理

}

    completionHandler();  // 系統要求執行這個方法

}

3. APP運行於前臺的時候 需要獲取到推送內容,新增alertView

// APP前臺彈窗提示

- (void )reciveNotificationAlertShow{

}

 // APP殺死和後臺時 推送點選的跳轉處理

- (void)reciveNotification:(NSDictionary *)pushdic{

// 點選推送之後廣告頁消失

HuoDongXiangQingViewController *hdxqVC = [[HuoDongXiangQingViewControlleralloc]init];

        hdxqVC.hidesBottomBarWhenPushed =YES;

    // 獲取當前停留的controler 進行push

        [[selfcurrentViewController].navigationControllerpushViewController:hdxqVCanimated:YES];

   }

#pragma mark 獲取當前的停留的VC用來實現任意頁面跳轉到指定頁面

- (UIViewController *)currentViewController{

UIViewController *currVC =nil;

UIViewController *Rootvc =self.window.rootViewController;

do{

if ([RootvcisKindOfClass:[UINavigationControllerclass]]) {

UINavigationController *nav = (UINavigationController *)Rootvc;

UIViewController *v = [nav.viewControllerslastObject];

            currVC = v;

            Rootvc = v.presentedViewController;

continue;

        }elseif ([RootvcisKindOfClass:[UITabBarControllerclass]]){

UITabBarController *tabvc = (UITabBarController *)Rootvc;

            currVC = tabvc;

            Rootvc = [tabvc.viewControllersobjectAtIndex:tabvc.selectedIndex];

continue;

        }

    }while (Rootvc !=nil);

return currVC;

}

// APP 處於前臺的時候 推送通知點選建立alertview  點選跳轉方法和殺死 後臺執行狀態處理方法相同

- (void)reciveNotificationAlertShow{

UIAlertView *alert = [[UIAlertViewalloc]initWithTitle:@"提示"message:@"收到熱門推送"delegate:selfcancelButtonTitle:@"取消"otherButtonTitles:@"檢視",nil];

    [alert show];

}


獲取當前頁的方法也可以使用

- (UIViewController *)topVC:(UIViewController *)rootViewController{

if ([rootViewControllerisKindOfClass:[UITabBarControllerclass]]) {

UITabBarController *tab = (UITabBarController *)rootViewController;

return [selftopVC:tab.selectedViewController];

    }elseif ([rootViewControllerisKindOfClass:[UINavigationControllerclass]]){UINavigationController *navc = (UINavigationController *)rootViewController;

return [selftopVC:navc.visibleViewController];

    }elseif (rootViewController.presentedViewController){

UIViewController *pre = (UIViewController *)rootViewController.presentedViewController;

return [selftopVC:pre];

    }else{

return rootViewController;

    }

}

使用方法 

        UIViewController *vc = [selftopVC:[UIApplicationsharedApplication].keyWindow.rootViewController];

        huodong.hidesBottomBarWhenPushed =YES;

        [vc.navigationControllerpushViewController:huodonganimated:YES];

如果想實現模態效果 可以這樣寫

       TBMoiveViewController* currentView = [[TBMoiveViewControlleralloc]init];

       // 建立導航欄

FLGNanViewController *nanVC = [[FLGNanViewControlleralloc]initWithRootViewController:currentView];

        [self.window.rootViewControllerpresentViewController:nanVCanimated:YEScompletion:^{

        }];


相關推薦

極光 處理總結 通知

當應用處於殺死狀態的時候,通過點選通知內容開啟APP 此時只需在  (位於後臺的時候點選通知內容不會走這個方法) - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOption

前端外掛jquery.singlePageNav.min.js(導航選單縮放選單摺疊按鈕緩衝效果外掛)

Bootstrap導航點選選單跳轉與點選縮放選單摺疊按鈕緩衝效果外掛jquery.singlePageNav.min.js 引入步驟: <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"><

Android中在fragment A裡面button到fragment B實現方法

方法一:直接getActivity,使用activity的fragmenttransation的replace方法替換 假設 class OneFragment extends Fragment{ private Button btn; @Override p

mpvue小程式裡面navigator分析

1.一般這種情況是路徑沒有配置對,並且控制檯會報錯。2.你配置的路徑是tabbar裡定義的路徑,控制檯不報錯,但是也不會跳轉,這個時候如果你需要在導航和tabbar同時跳轉,需要加個屬性:需要注意的是,當你路徑變成非tabbar路徑時,需要把這個屬性去掉open-type="

layer彈出層的內容頁按鈕到新的頁面問題

在參與的一個專案中,有一個這樣的需求,匯入基礎資料成功後,預設彈出一個管理員登入頁,點選登入按鈕,需要跳到管理頁面。 匯入頁按鈕: <button type="button" id="start" class="layui-btn layui-b

jsbutton到另一個頁面

點選按鈕怎麼跳轉到另外一個頁面呢?我們在網站製作中可能是需要的,因為有時我們需要做這樣的效果,尤其是將按鈕做成一個圖片,而點選圖片要跳轉到新的頁面時,怎麼做到呢? 這樣的效果可以:onclick="window.location='新頁面'" 來實現。 1.在原來的窗體中直接跳轉用 程式碼如下 window

連結到微信公眾號關注頁、微信關注連結

現在的公眾號引流一般都只能是 二維碼掃碼後關注,那麼通過點選一段網頁連結(圖片、或文字)怎麼引導使用者到公眾號關注頁呢? 一、首先開啟需要設定關注頁 的公眾號 此時的公眾號應該已經開啟 原創功能並發表有原創文章(登入微信公眾平臺設定) 二、進入公眾號的訊息列表頁,並進入任意一篇 原

微信連結外部瀏覽器開啟指定頁面的實現

隨著微信的越來越大眾化,微信的使用程度也越來越高。隨之,產生了一種新的推廣模式,即微信推廣。在這個微信的大平臺上會衍生出許許多多的推廣手段。而移動前端作為服務於手機使用者的手機網頁技術,也不可避免的加入進來。一些客戶不僅僅滿足於自己的網站可以在微信端上完美的展現出來(因為微信大面積遮蔽掉了眾多推廣營銷的域名)

安卓-通過Button不同的頁面。

最近在做一個安卓前端,剛開始接觸安卓(菜鳥一隻),啥都不懂,就通過記筆記的方法來了解安卓吧。在自己的xml的檔案中定義一個Button。如下:<Button android:id="@+id/btnOne" android

js實現『載入更多』功能例項 & 列表到詳情頁(tap)

寫在前面: 實際操作過程中,因為要用ajax去請求很多次資料,所以效能方面肯定會打折扣,拼接資料也是很麻煩,對於列表資料比較多的情況,寫起來不方便,也不好修改維護,不過功能實現很完整,我正在考慮去看看Vue裡面不用修改v-for嘗試著讓它在陣列上面做文章。 h5專案裡需要實現簡單的分頁功

echarts-圖例,但圖例不被關閉

myChart.setOption(option_science); var triggerAction = function(action, selected) {

div中新增多張img圖片,img頁面檢視大圖

var imgList = $.trim(that.find("td").eq(10).text()).split(";"); var myDiv = document.getElementById(

iOS UITextView 設定 NSLinkAttributeName 屬性,連結

@interface ViewController ()<UITextViewDelegate>- (void)viewDidLoad{    [super viewDidLoad];    NSMutableAttributedString *str = [[NSMutableAttribu

高德地圖氣泡到其它地圖

高德地圖的周邊搜尋,在點選Mark上的氣泡可以跳轉到手機中的地圖進行導航 @Override public void onInfoWindowClick(Marker marker) {

iOS 實現tabbar登入頁面

在APP的設計中常常有需要點選tabbar直接進行跳轉登入的操作。下面說一下需要怎麼來實現這個操作。 程式碼。 (BOOL)tabBarController:(UITabBarController )tabBarController should

Android按鈕到網頁

<Button android:layout_width="60dp" android:layout_height="40dp" android:onClick="tiaowan" /> public void tia

封裝List,按鈕傳值並優化

package com.example.yinchenglong1229; import android.annotation.SuppressLint; import android.content.Intent; import android.os.AsyncTask; import android.s

在一個頁面連結至另一個頁面的選項卡tab中

頁面A <body> <a href="選項卡-練習.html?type=1">1111111111</a> <a href="選項卡-練習.html?type=2">2222222222</a>

Vue2.5.x --- 路由後重新整理頁面仍然停留在之前的路由頁面解決方法

如果想重新整理的時候是重新整理點選的頁面 可以用快取記錄重新整理前的路由地址 然後重新整理時設定預設地址為快取的路由地址即可 處理前的情況,頁面重新整理也會停留在之前跳轉的路由頁面: 處

jquery的$.alerts.alert怎麼實現頁面

jquery外掛有個自帶的彈窗效果,若要實現關閉彈窗後跳轉頁面或重新整理頁面,可進行如下操作 $.alerts.alert("這裡是顯示的內容",“這裡是標題”,"這裡是點選處的文字",function(){這裡進行點選後的操作}); 示例如下 $.alerts.ale