關(guān)于推送(無法獲取DeviceToken)

? 近日公司來了新的后臺(tái)赠制,說他原先集成的是百度推送边酒。然而我們App老版用的都是極光推送默垄。無奈我們換成了百度推送。但是測(cè)試推送的時(shí)候甚纲,百度推送網(wǎng)站的web后臺(tái)老是出現(xiàn)“網(wǎng)絡(luò)原因口锭,無法發(fā)送推送”的提示,搞得連測(cè)試也沒法測(cè)介杆,絕對(duì)不是我證書的問題鹃操。在這里我要吐槽一下百度推送,要么出現(xiàn)以上網(wǎng)絡(luò)原因春哨,發(fā)不出推送荆隘。要么推送有延遲,一下收到好幾條赴背。反正我對(duì)百度推送的感覺已經(jīng)很不好了椰拒。最后又換回了極光推送。

? 原本十分鐘就能搞完的東西凰荚,結(jié)果出了莫名其妙的問題燃观。


? 極光推送打印臺(tái)提示:[JPUSHClientController] Not get deviceToken yet。也就是代理中?

?- (void)application:didRegisterForRemoteNotificationsWithDeviceToken:和- (void)application didFailToRegisterForRemoteNotificationsWithError:不調(diào)用便瑟。

原先都是按照demo一步一步來的缆毁,如今出現(xiàn)了這個(gè)問題,那種感覺就像無數(shù)只草泥馬奔騰而過到涂,這才讓我從頭到尾對(duì)推送原理擼了一遍脊框,特此記錄下來,給大家分享践啄。

? 證書就不多說了浇雹,唯一注意的一點(diǎn)是在你創(chuàng)建開發(fā)推送證書的時(shí)候類型應(yīng)該是Apple Push Notification service SSL (Sandbox),不是app Development屿讽。這里有幾份詳細(xì)的集成過程和對(duì)推送在AppDelegate中的封裝昭灵,感覺不錯(cuò)。

iOS集成極光推送,繞過一些坑

史上最全的推送教程

極光推送常見問題官方文檔

大部分的問題都可以在以上找到解決方案虎锚,我來列舉幾個(gè)比較容易遺漏的點(diǎn)硫痰;

? 1.推送設(shè)置setupWithOption中的appKey要和推送平臺(tái)上注冊(cè)時(shí)給的一致,isProduction 為NO就是開發(fā)狀態(tài)窜护,為YES就是生產(chǎn)狀態(tài)效斑。

? 2.程序設(shè)置中的Capabilities中 Remote notification要打?qū)?/p>

? 3.確定你的手機(jī)聯(lián)網(wǎng)并打開通知權(quán)限

? 4.代碼中是否重寫了AppDelegate中的方法(百度時(shí)有人提到了環(huán)信API重寫了獲取Token的方法)

? 5.確定你的代碼中有這個(gè)

? 很多人問題都出在了第五種情況上。

? 然而我的經(jīng)過徹底的排查柱徙,還是不調(diào)用獲取DeviceToken的函數(shù)缓屠,這種情況下,我拿同事的手機(jī)測(cè)試就能獲取到DeviceToken护侮。但別高興的太早敌完,如果你把APP卸載了重新打包就獲取不到了,原因是第一次打包調(diào)用registerForRemoteNotificationTypes注冊(cè)成功后羊初,之后即使不聯(lián)網(wǎng)滨溉,再調(diào)用都會(huì)以最上一次的device token作為參數(shù)回調(diào)didRegisterForRemoteNotificationsWithDeviceToken方法,除非你卸載了重裝长赞,這時(shí)的APNs要向你發(fā)送新的DeviceToken晦攒,這時(shí)就獲取不到了,這就是我現(xiàn)在的問題得哆,然后就會(huì)報(bào)[JPUSHClientController] Not get deviceToken yet脯颜。這個(gè)問題折磨了我一天,舊版的推送SDK也換過贩据,依舊不行栋操。碉堡的是第二天早上再打包的時(shí)候莫名其妙的就好了,簡(jiǎn)直嗶了狗饱亮。我沒有作任何改動(dòng)矾芙。按照我的理解,應(yīng)該是證書從蘋果開發(fā)者中心分發(fā)下來驗(yàn)證要經(jīng)過一段時(shí)間近尚,或是Xcode Bug蠕啄,或者是用這個(gè)證書在與百度推送綁定后再與極光綁定時(shí)發(fā)生了微妙的變化场勤,反正問題就這樣解決了戈锻。


? 下面是收到推送時(shí)的一些知識(shí)點(diǎn)和坑,大家可以交流一下

1.注意:App在活躍狀態(tài)時(shí)是收不到推送通知的橫幅的

2.App在后臺(tái)狀態(tài)時(shí)和媳,點(diǎn)擊推送會(huì)調(diào)用-(void)application:didReceiveRemoteNotification:fetchCompletionHandler:在這個(gè)函數(shù)里判斷applicationState從而做相應(yīng)的處理格遭。

注意,這里有個(gè)坑.從后臺(tái)點(diǎn)擊推送進(jìn)入前臺(tái)留瞳,進(jìn)入到這個(gè)函數(shù)里時(shí)拒迅,application的狀態(tài)是InActive,而非Active或Background。開始我還以為這個(gè)狀態(tài)是殺死狀態(tài)璧微,其實(shí)應(yīng)該叫空閑狀態(tài)作箍。那么這個(gè)函數(shù)里只需要判斷UIApplicationStateActive(正在使用)和UIApplicationStateInActive(從后臺(tái)進(jìn)入前臺(tái))狀態(tài)。


幫助大家理解一下這倆狀態(tài)的區(qū)別


3.當(dāng)App在殺死狀態(tài)下點(diǎn)擊推送(注意不是點(diǎn)擊APP)并不會(huì)執(zhí)行以上函數(shù)前硫,而會(huì)進(jìn)入到- (BOOL)application: didFinishLaunchingWithOptions:胞得,不點(diǎn)擊推送時(shí)launchOptions為nil,這時(shí)推送的內(nèi)容都在launchOptions里屹电,可以用以下方法獲取

上面這個(gè)方法里,我把角標(biāo)設(shè)為0牧愁,并且把數(shù)據(jù)以通知的方式傳遞給self.window.rootViewController。這里我用了一下延時(shí)操作猪半,因?yàn)榱⒓磦鞯脑挘瑀ootViewController還沒有初始化完成偷线,是收不到這個(gè)通知的办龄。不知道各位大神還有沒有更合理的解決方法,歡迎提出。

以上就是我推送的艱辛歷程俐填,僅代表個(gè)人對(duì)推送的理解翔忽,歡迎各位大神指出錯(cuò)誤英融,謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末歇式,一起剝皮案震驚了整個(gè)濱河市驶悟,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌痕鳍,老刑警劉巖龙巨,帶你破解...
    沈念sama閱讀 219,188評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異旨别,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)秸弛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門洪碳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叼屠,“玉大人,你說我怎么就攤上這事镜雨。” “怎么了吵冒?”我有些...
    開封第一講書人閱讀 165,562評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵西剥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我瞭空,道長(zhǎng),這世上最難降的妖魔是什么咆畏? 我笑而不...
    開封第一講書人閱讀 58,893評(píng)論 1 295
  • 正文 為了忘掉前任旧找,我火速辦了婚禮溺健,結(jié)果婚禮上钮蛛,老公的妹妹穿的比我還像新娘。我一直安慰自己魏颓,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,917評(píng)論 6 392
  • 文/花漫 我一把揭開白布沦童。 她就那樣靜靜地躺著叹话,像睡著了一般偷遗。 火紅的嫁衣襯著肌膚如雪渣刷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,708評(píng)論 1 305
  • 那天箩溃,我揣著相機(jī)與錄音碌嘀,去河邊找鬼。 笑死股冗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的止状。 我是一名探鬼主播烹棉,決...
    沈念sama閱讀 40,430評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼怯疤,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了集峦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,342評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤摘昌,失蹤者是張志新(化名)和其女友劉穎高蜂,沒想到半個(gè)月后聪黎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體备恤,經(jīng)...
    沈念sama閱讀 45,801評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,976評(píng)論 3 337
  • 正文 我和宋清朗相戀三年湘纵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了滤淳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,115評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铺敌,死狀恐怖屁擅,靈堂內(nèi)的尸體忽然破棺而出偿凭,到底是詐尸還是另有隱情派歌,我是刑警寧澤痰哨,帶...
    沈念sama閱讀 35,804評(píng)論 5 346
  • 正文 年R本政府宣布匾嘱,位于F島的核電站,受9級(jí)特大地震影響霎烙,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜游昼,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,458評(píng)論 3 331
  • 文/蒙蒙 一尝蠕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧趟佃,春花似錦、人聲如沸闲昭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽簸淀。三九已至瓶蝴,卻和暖如春租幕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背劲绪。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留歉眷,地道東北人颤枪。 一個(gè)月前我還...
    沈念sama閱讀 48,365評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像畏纲,于是被迫代替她去往敵國(guó)和親春缕。 傳聞我的和親對(duì)象是個(gè)殘疾皇子台囱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,055評(píng)論 2 355

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