極光推送開發(fā)環(huán)境可以收到贴唇,生產(chǎn)環(huán)境收不到推送
首先闡述一下我遇到的問題
我們項(xiàng)目連通了極光推送,以前寫過(guò)的項(xiàng)目也是這樣 在開發(fā)環(huán)境下測(cè)試 好使了? 但是打包ADHoc時(shí)候 就不好使了巷屿,當(dāng)時(shí)也沒在意? 因?yàn)榫W(wǎng)上好多人說(shuō) 只要測(cè)試好使了 證書顯示配置成功了(綠燈)? 那就沒問題了
so 上線 然后上線以后 發(fā)現(xiàn)推送功能完全不好使固以!這就尷尬了 趕緊下架
因?yàn)槲覀冺?xiàng)目使用的是別名推送
使用極光網(wǎng)站推送時(shí)候 我使用了廣播,別名推送嘱巾,regID推送憨琳,結(jié)果 都能收到(開發(fā)環(huán)境)
然后我在生產(chǎn)環(huán)境 再次發(fā)送 廣播,別名旬昭,regID
結(jié)果 很顯然 別名收不到 這就糾結(jié)了 開始查看問題吧
經(jīng)過(guò)兩天的爬坑篙螟,終于找到了問題所在? 也正在積極解決
在這里再次感謝極光官方兩位大牛,如果沒有你們的幫忙 我想我還會(huì)糾結(jié)好久? ? Lris12?? ? Helperhaps?
好了 廢話少說(shuō) 闡述問題跟代碼
————————我是分割線———————————
初次發(fā)現(xiàn)這個(gè)問題的時(shí)候 首先排查的就是證書配置
這里再次建議大家好好仔細(xì)的看看開發(fā)文檔问拘,因?yàn)楹芏噱e(cuò)誤都是細(xì)節(jié)處不注意造成的遍略,
https://docs.jiguang.cn/jpush/client/iOS/ios_sdk/
附上開發(fā)文檔地址。
因?yàn)檫@個(gè)項(xiàng)目是接手別人已經(jīng)做得差不多的 我就負(fù)責(zé)收尾? 所以 證書這方面我會(huì)優(yōu)先查看 是否錯(cuò)誤骤坐,
在
developer.apple.com 中 我已經(jīng)看到
很明顯? 開發(fā)環(huán)境的證書跟生產(chǎn)環(huán)境的證書 都已經(jīng)配置完成绪杏,
那么證書是沒有問題的 下面我們看看極光官網(wǎng)的配置
也是已驗(yàn)證,
這就奇怪了? 到這 我表示 可能是代碼出錯(cuò)了 好吧 我們來(lái)看代碼纽绍。
別名設(shè)置 相信在官方文檔中大家都明白怎么寫
反復(fù)查看文檔? 我發(fā)現(xiàn)并沒有任何問題這么寫蕾久。
經(jīng)過(guò)跟? Lris12 大神的交流
覺得很可能是因?yàn)榫W(wǎng)絡(luò)原因 在注冊(cè)極光還沒有返回成功的時(shí)候 就綁定別名 導(dǎo)致 regID跟別名沒有綁定成功
解決方法:添加5個(gè)監(jiān)聽,在監(jiān)聽到extern NSString * const kJPFNetworkDidLoginNotification; // 登錄成功之后再設(shè)置別名
https://docs.jiguang.cn/jpush/client/iOS/ios_guide_new/#jpush-sdk1
Ps拌夏。這里強(qiáng)烈建議這么寫僧著,安全第一 安全第一B囊颉!m镉蕖栅迄!
這里附上代碼
```
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kJPFNetworkDidLoginNotification object:nil];
[JPUSHService registerDeviceToken:deviceToken];
}
//通知方法
- (void)networkDidReceiveMessage:(NSNotification *)notification {
[JPUSHService setTags:nil aliasInbackground:[OpenUDID value]];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[JPUSHService setTags:nil alias:[OpenUDID value] fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias)
{
}];
});
//注銷通知
[[NSNotificationCenter defaultCenter] removeObserver:self name:kJPFNetworkDidLoginNotification object:nil];
}
```
然而 問題依舊沒有解決,但是這個(gè)時(shí)候 我們登錄極光官網(wǎng)推送
我在生產(chǎn)環(huán)境 再次發(fā)送 廣播皆怕,別名毅舆,regID
結(jié)果? 都收到了!愈腾!
正當(dāng)我高興的時(shí)候? 發(fā)現(xiàn) api推送依舊收不到@时!收不到6ヌ病!
絕望4绫礁鲁!
繼續(xù)排查
按照開發(fā)文檔 設(shè)置xcode配置, 嗯 依舊沒用
這里我重點(diǎn)說(shuō)一下 :iOS9 之后 卸載重裝后會(huì)改變token赁豆,所以registrationID會(huì)改變仅醇,如果你沒有用到idfa
如果你的項(xiàng)目使用的是regID推送 那么你要注意 每次更新app 新用戶下載app? 重新下載app等一系列狀況下 regID改變的問題
還有如果注冊(cè)成功后 會(huì)返回 設(shè)置成功,有callback為0
這個(gè)也要注意下
好 回歸正題魔种,
這時(shí)候時(shí)間已經(jīng)過(guò)去一天半了析二, 最后我覺得 我所有的代碼 配置 證書 環(huán)境 都沒有問題!
再去極光官網(wǎng)看看 到底咋回事
好嗎 這一看 終于發(fā)現(xiàn)了問題所在节预!
大家看沒看到 這里寫的是 推送平臺(tái)? iOS-dev叶摄?
臥槽!安拟!后臺(tái)給我推送的居然是 開發(fā)環(huán)境8蛳拧!
果斷找后臺(tái)理論?飞狻;岚痢!
Lris大神告訴我
「發(fā)布版本后無(wú)法有效推送」 or 「生產(chǎn)環(huán)境下收不到消息」 按以下步驟排查問題: 客戶端 客戶端是否打包證書 檢查當(dāng)前環(huán)境是否正確 設(shè)備里面的手機(jī)應(yīng)用有沒有 添加/配置 這個(gè)tag/ 別名 服務(wù)端注意改變環(huán)境參數(shù)拙泽,option的apns_production的值(true:生產(chǎn))(false開發(fā))淌山。根據(jù)客戶端環(huán)境改變服務(wù)端推送環(huán)境。環(huán)境要一致才能收到推送顾瞻。
然后我們后臺(tái)給我發(fā)送了一段代碼 堵住了我的嘴
$platform = 'android,ios' ;
$msg_content = json_encode(array('n_builder_id'=>0, 'n_title'=>$n_title, 'n_content'=>$n_content,'content-available'=>1,'apns_production'=>1));
$obj = new jpush($masterSecret,$appkeys);
我標(biāo)紅的位置 人家已經(jīng)設(shè)置了1 為什么還不好用泼疑?
經(jīng)過(guò)Helperhaps 大神的解釋 好吧 我懂了
我們后臺(tái)使用的 過(guò)期的V2 api
特別提示:建議不要在客戶端里寫代碼直接調(diào)用此 API。因?yàn)?Android apk 比較容易破解朋其,別人很容易從客戶端代碼里找出來(lái)調(diào)用 JPush Remote API 所需要的保密信息王浴,從而可以模擬到你的身份來(lái)發(fā)起惡意的推送脆炎。
建議的使用方式是:調(diào)用 JPush Remote API 的代碼放在你自己的應(yīng)用服務(wù)器上。你自己的應(yīng)用服務(wù)器對(duì)自己的客戶端提供接口來(lái)推送消息氓辣。具體請(qǐng)參考推聊的作法:示例與代碼秒裕。
升級(jí)到 v3 Push API:建議開發(fā)者升級(jí)到 v3 版本。此版本會(huì)繼續(xù)支持到 2015 年钞啸。
至此? 這個(gè)問題才算是解決(至少對(duì)前端來(lái)說(shuō))
第一次發(fā)這樣的帖子感覺有點(diǎn)亂 嗯几蜻。。体斩。
下次大家在推送上有問題的話梭稚。。先看開發(fā)文檔走一遍流程 然后看看極光個(gè)人推送 廣播能否收到 然后就可以考慮跟服務(wù)端干一仗了P醭场弧烤!
最后祝大家 永無(wú)BUG!5徘谩O景骸!0槲恕<辈ā!1裥!3文骸!Z逖铩F谩!