iOS:集成極光推送以及推送之后邏輯處理。

回憶起當(dāng)初做推送功能的時(shí)候瘫拣,踩過(guò)一些坑亿絮,也得到了一些經(jīng)驗(yàn)》髡。總歸推送的模塊實(shí)現(xiàn)按如下步驟來(lái)壹无。

1.先確定的推送消息需要跳轉(zhuǎn)的界面。將其寫成單獨(dú)的xib感帅,方便之后present斗锭。

2.像蘋果申請(qǐng)APNS證書并且將其制作成.p12文件,將其傳給極光推送失球。

3.得到appkey岖是,并且按照J(rèn)PUSH中的iOS+SDK+Integration+Guide.pdf將極光推送的框架集成進(jìn)入app代碼。

4.服務(wù)器根據(jù)registrationID來(lái)對(duì)用戶進(jìn)行分類推送实苞,我們需要處理得到的消息豺撑。
5.解析得到的userInfoDic,并跳轉(zhuǎn)到需要顯示消息的頁(yè)面黔牵。

得到消息之后聪轿,主要需要進(jìn)行的操作是如何進(jìn)行跳轉(zhuǎn)。我們需要獲取當(dāng)前顯示的vc界面猾浦。

方法1.

// 取到tabbarcontroller

TabBarViewController *tabBarController = (TabBarViewController*)self.window.rootViewController;

// 取到navigationcontroller

MyNavigationController * nav = (MyNavigationController*)tabBarController.selectedViewController;

//取到nav控制器當(dāng)前顯示的控制器

UIViewController *baseVC = (UIViewController *)nav.visibleViewController;

[baseVC.navigationController pushViewController:XXVC animated:YES];//PUSH過(guò)去

方法2.

- (UIViewController *)getCurrentVC{
    
    UIViewController *result = nil;
    UIWindow * window = [[UIApplication sharedApplication] keyWindow];
    //app默認(rèn)windowLevel是UIWindowLevelNormal陆错,如果不是,找到UIWindowLevelNormal的
    if (window.windowLevel != UIWindowLevelNormal)
    {
        NSArray *windows = [[UIApplication sharedApplication] windows];
        for(UIWindow * tmpWin in windows)
        {
            if (tmpWin.windowLevel == UIWindowLevelNormal)
            {
                window = tmpWin;
                break;
            }
        }
    }
    id  nextResponder = nil;
    UIViewController *appRootVC=window.rootViewController;
    //    如果是present上來(lái)的appRootVC.presentedViewController 不為nil
    if (appRootVC.presentedViewController) {
        nextResponder = appRootVC.presentedViewController;
    }else{
        UIView *frontView = [[window subviews] objectAtIndex:0];
        nextResponder = [frontView nextResponder];
    }
    
    if ([nextResponder isKindOfClass:[UITabBarController class]]){
        UITabBarController * tabbar = (UITabBarController *)nextResponder;
        UINavigationController * nav = (UINavigationController *)tabbar.viewControllers[tabbar.selectedIndex];
        //        UINavigationController * nav = tabbar.selectedViewController ; 上下兩種寫法都行
        result=nav.childViewControllers.lastObject;
        
    }else if ([nextResponder isKindOfClass:[UINavigationController class]]){
        UIViewController * nav = (UIViewController *)nextResponder;
        result = nav.childViewControllers.lastObject;
    }else{
        result = nextResponder;
    }
    
    return result;
}

兩個(gè)方法均能獲取當(dāng)前最前顯示的UIViewController金赦。方法一比較簡(jiǎn)便但是有內(nèi)容缺陷音瓷。當(dāng)你的應(yīng)用處于如游客時(shí)沒(méi)有TabBarViewController,當(dāng)?shù)顷懞髉resent到一個(gè)新的TabBarViewController導(dǎo)航控制器夹抗,當(dāng)用戶處于任意一個(gè)RootViewController時(shí)绳慎,使用方法一會(huì)造成crash。
當(dāng)iOS推送給你的時(shí)候:會(huì)主動(dòng)調(diào)用application的代理方法,userInfoDic里就存著遠(yuǎn)程推送的內(nèi)容杏愤。

- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:
(void (^)(UIBackgroundFetchResult))completionHandler {
    [JPUSHService handleRemoteNotification:userInfo];
    userInfoDic = [[NSDictionary alloc]init];
    userInfoDic = userInfo;
    completionHandler(UIBackgroundFetchResultNewData);
}

技術(shù)外的話:推送功能特別是遠(yuǎn)程push靡砌,并不是即時(shí)接受,甚至很久之后才收到這也是正常的珊楼。所以盡量能夠確定時(shí)間的活動(dòng)乏奥,通過(guò)利用app內(nèi)部的json字段來(lái)注冊(cè)本地推送,達(dá)到定時(shí)的效果亥曹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末邓了,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子媳瞪,更是在濱河造成了極大的恐慌骗炉,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇受,死亡現(xiàn)場(chǎng)離奇詭異句葵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)兢仰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門乍丈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人把将,你說(shuō)我怎么就攤上這事轻专。” “怎么了察蹲?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵请垛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我洽议,道長(zhǎng)宗收,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任亚兄,我火速辦了婚禮混稽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘审胚。我一直安慰自己匈勋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布菲盾。 她就那樣靜靜地躺著颓影,像睡著了一般各淀。 火紅的嫁衣襯著肌膚如雪懒鉴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音临谱,去河邊找鬼璃俗。 笑死,一個(gè)胖子當(dāng)著我的面吹牛悉默,可吹牛的內(nèi)容都是我干的城豁。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼抄课,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼唱星!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起跟磨,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤间聊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后抵拘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哎榴,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年僵蛛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尚蝌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡充尉,死狀恐怖飘言,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情驼侠,我是刑警寧澤热凹,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站泪电,受9級(jí)特大地震影響般妙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜相速,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一碟渺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧突诬,春花似錦苫拍、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蔬捷,卻和暖如春垄提,著一層夾襖步出監(jiān)牢的瞬間榔袋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工铡俐, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凰兑,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓审丘,卻偏偏與公主長(zhǎng)得像埃元,于是被迫代替她去往敵國(guó)和親勘天。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缸濒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 極光推送: 1.JPush當(dāng)前版本是1.8.2妇拯,其SDK的開發(fā)除了正常的功能完善和擴(kuò)展外也緊隨蘋果官方的步伐,SD...
    Isspace閱讀 6,701評(píng)論 10 16
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理脓钾,服務(wù)發(fā)現(xiàn)喉镰,斷路器,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 不同版本極光推送SDK集成各有差異惭笑,集成時(shí)一定要注意版本號(hào)侣姆,樓主已將博文更新成最新的SDK JPush v3.0....
    i順頌時(shí)宜閱讀 7,852評(píng)論 37 170
  • 推送通知 注意:這里說(shuō)的推送通知跟NSNotification有所區(qū)別 NSNotification是抽象的,不可...
    iOS開發(fā)攻城獅閱讀 4,199評(píng)論 1 13
  • 最近幾天沉噩,不少伙伴問(wèn)了我同樣一個(gè)問(wèn)題捺宗,就是大學(xué)越讀越迷茫了。有想法但是不知道怎么行動(dòng)川蒙;想出國(guó)蚜厉,但是英語(yǔ)怎么都學(xué)不好...
    淑淑女子閱讀 268評(píng)論 0 1