IOS集成極光推送遇到的一些坑及解決辦法

iOS SDK集成、證書設(shè)置什么的爆哑,極光官網(wǎng)上都有什猖,不再說了,參考極光文檔

docs.jiguang.cn/jpush/guideline/intro/

只說一下素邪,我在調(diào)試過程中遇到的問題:

1.設(shè)置別名和標(biāo)簽的問題葱色。

開始糾結(jié)困惑了一下,極光支持設(shè)置別名和標(biāo)簽娘香,在我理解看來別名只是一個(gè)別名苍狰,標(biāo)簽可以綁定更多信息,可以綁定你想綁定的任何用戶信息烘绽,方便后期根據(jù)標(biāo)簽淋昭,來批量下發(fā) Push 消息“步樱可為每個(gè)用戶打多個(gè)標(biāo)簽翔忽。

2.極光推送SDK版本問題。

極光推送SDK目前最新的版本為:JPush iOS SDK v3.0.7,更新日志歇式,https://docs.jiguang.cn/jpush/updates/驶悟,貌似只能下載最新的SDK,沒看到能下載之前的版本,另外有一點(diǎn)材失,最新的SDK痕鳍,Notification Service Extension無法在iOS9(XCode7)中使用,測試時(shí)請刪除對應(yīng)Target以防止不必要的誤導(dǎo)龙巨。


JPush iOS SDK v3.0.7使用須知:

這是一點(diǎn)笼呆,重要的一點(diǎn),故看到這點(diǎn)旨别,放棄了最新版的SDK诗赌,依然使用了上一個(gè)版本JPUSH_VERSION_NUMBER 3.0.6,雖然極光官網(wǎng)給出了

升級提示

建議升級秸弛!铭若。

3.IOS9相關(guān)問題。

接下來就是遇到的IOS的問題递览,首先先說一下AppDelegate和JPUSHRegisterDelegate的幾個(gè)方法:

```

<1.>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

<2.>- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

<3.>- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

<4.>- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler

<5.>- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler

```

<1.>會(huì)在app啟動(dòng)完成調(diào)用launchOptions保存了app啟動(dòng)的原因信息奥喻,如果app是因?yàn)辄c(diǎn)擊通知欄啟動(dòng)的,可以在launchOptions獲取到通知的具體內(nèi)容非迹。

NSDictionary* remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

判斷remoteNotification是否為空环鲤,不為空則為通過點(diǎn)擊推送消息進(jìn)入應(yīng)用

<2.>會(huì)在接收到通知的時(shí)候調(diào)用,在最新的iOS 10中已經(jīng)廢棄憎兽,建議不再使用冷离,IOS9,IOS10&IOS11不會(huì)調(diào)用纯命。

<3.>說是iOS 7之后新增的方法西剥,如果App狀態(tài)為正在前臺(tái)或者點(diǎn)擊通知欄的通知消息,此回調(diào)函數(shù)將被調(diào)用亿汞。

<4.><5.>為極光SDK提供的代理方法瞭空,其中<4.>為"iOS10 前臺(tái)收到遠(yuǎn)程通知的回調(diào)方法。

<5.>為通知響應(yīng)對象-->點(diǎn)擊通知欄消息相應(yīng)方法疗我。

IOS10咆畏,IOS11在前后臺(tái)、未啟動(dòng)狀態(tài)都會(huì)調(diào)用這兩個(gè)方法吴裤,在其中做相應(yīng)處理即可旧找。

重點(diǎn)說一下,IOS9的問題:

我遇到的問題是IOS在前臺(tái)通知欄沒有任何提示麦牺,只能在<3>這個(gè)方法中獲取到钮蛛,開始做了相關(guān)處理

[self handleUserInfo:userInfo];// 根據(jù)消息內(nèi)容鞭缭,做相應(yīng)操作。

但是治標(biāo)不治本魏颓,奇葩的問題是在前臺(tái)收到推送消息岭辣,自動(dòng)進(jìn)入想要進(jìn)入的頁面,而不是我想要的點(diǎn)擊通知欄消息進(jìn)入甸饱,怎么辦呢沦童?只能想辦法解決了!柜候!! 呵呵

后與產(chǎn)品溝通做了一下處理搞动,直接貼代碼啦躏精。粗拙不堪渣刷,望莫介意,

```

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

{

NSLog(@"推送消息內(nèi)容userInfo = %@,? %@", userInfo, [self logDic:userInfo]);

//判斷程序是否在前臺(tái)運(yùn)行

if ([[UIDevice currentDevice].systemVersion floatValue] < 10.0) {

// 解決IOS9前臺(tái)收不到通知的問題

if (application.applicationState ==UIApplicationStateActive) {

//如果應(yīng)用在前臺(tái)矗烛,在這里執(zhí)行

NSString *contentStr = [userInfo NotNSNullobjectForKey:@"alert"];

NSString *title = [userInfo NotNSNullobjectForKey:@"title"];

if (!title || title.length<=0) {

title = @"收到推送消息";

}

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:contentStr delegate:self cancelButtonTitle:@"知道了" otherButtonTitles:@"查看", nil];

[alert uxy_handlerClickedButton:^(UIAlertView *alertView, NSInteger btnIndex) {

if (btnIndex==1) {

// 確定查看

[self handleUserInfo:userInfo];

}

}];

[alert show];

}else{

[self handleUserInfo:userInfo];

}

}

// IOS 7 Support Required,處理收到的APNS信息

//如果應(yīng)用在后臺(tái)辅柴,在這里執(zhí)行

[JPUSHService handleRemoteNotification:userInfo];

completionHandler(UIBackgroundFetchResultNewData);

}

```

在前臺(tái)做一種alert處理,其它狀態(tài)做另一種處理(因?yàn)槠渌鼱顟B(tài)是正常的可以通過通知欄進(jìn)入)瞭吃。

另外碌嘀,如果實(shí)在是必須要通知欄的效果,不妨看一下這篇文章

IOS - 前臺(tái)時(shí)的推送彈窗效果

www.cnblogs.com/oc-bowen/p/5851916.html

(悄悄的說一下歪架,這是極光技術(shù)支持提供的股冗,因?yàn)樯婕暗搅硪粋€(gè)問題,在另一篇文章中和蚪,說一下)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末止状,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子攒霹,更是在濱河造成了極大的恐慌怯疤,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件催束,死亡現(xiàn)場離奇詭異集峦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)抠刺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進(jìn)店門塔淤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人速妖,你說我怎么就攤上這事凯沪。” “怎么了买优?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵妨马,是天一觀的道長挺举。 經(jīng)常有香客問我,道長烘跺,這世上最難降的妖魔是什么湘纵? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮滤淳,結(jié)果婚禮上梧喷,老公的妹妹穿的比我還像新娘。我一直安慰自己脖咐,他們只是感情好铺敌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屁擅,像睡著了一般偿凭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上派歌,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天弯囊,我揣著相機(jī)與錄音,去河邊找鬼胶果。 笑死匾嘱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的早抠。 我是一名探鬼主播霎烙,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蕊连!你這毒婦竟也來了悬垃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤咪奖,失蹤者是張志新(化名)和其女友劉穎盗忱,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體羊赵,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趟佃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了昧捷。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闲昭。...
    茶點(diǎn)故事閱讀 38,617評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖靡挥,靈堂內(nèi)的尸體忽然破棺而出序矩,到底是詐尸還是另有隱情,我是刑警寧澤跋破,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布簸淀,位于F島的核電站瓶蝴,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏租幕。R本人自食惡果不足惜舷手,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劲绪。 院中可真熱鬧男窟,春花似錦、人聲如沸贾富。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颤枪。三九已至汗捡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汇鞭,已是汗流浹背凉唐。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工庸追, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霍骄,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓淡溯,卻偏偏與公主長得像读整,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子咱娶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,486評論 2 348

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