1. 程式人生 > >iOS整合極光推送 生產環境收不到推送訊息

iOS整合極光推送 生產環境收不到推送訊息

但是! 怎麼會那麼順利嘛,問題接踵而至!由於要給裝置傳送自定義訊息來通知使用者在其他裝置登入,這裡就需要一個唯一的識別符號,可以用tags(NSeet型別標籤)、或者a’lias。
[JPUSHService setTags:nil alias:str callbackSelector:@selector(tagsAliasCallback:tags:alias:) object:self];//我們用的alias別名!

//下面這個是回撥,可以看到你的別名是否設定成功,如果成功code返回為0,最常見的錯誤是6002 和6005 ,即標籤或別名內容不合格或者設定超時,反正按照標準來改就好啦。
- (void)tagsAliasCallback:(int)iResCode
tags:(NSSet *)tags
alias:(NSString *)alias {
NSString *callbackString =
[NSString stringWithFormat:@”%d, \ntags: %@, \nalias: %@\n”, iResCode,
[self logSet:tags], alias];
NSLog(@”TagsAlias回撥main:%@”, callbackString);
}
- (NSString )logSet:(NSSet

)dic {
if (![dic count]) {
return nil;
}
NSString *tempStr1 =
[[dic description] stringByReplacingOccurrencesOfString:@”\u”
withString:@”\U”];
NSString *tempStr2 =
[tempStr1 stringByReplacingOccurrencesOfString:@”\”” withString:@”\\”“];
NSString *tempStr3 =
[[@”\”” stringByAppendingString:tempStr2] stringByAppendingString:@”\”“];
NSData *tempData = [tempStr3 dataUsingEncoding:NSUTF8StringEncoding];
NSString *str =
[NSPropertyListSerialization propertyListFromData:tempData
mutabilityOption:NSPropertyListImmutable
format:NULL
errorDescription:NULL];
return str;
}

OK! 別名也設定了,極光也集成了,下面就是見證奇蹟的時刻!於是我興高采烈的拿兩部iPhone輪流登入同一賬號,But!推送收不到!收不到!於是我只有去極光後臺自己發訊息驗證一下。選擇通知-生產環境-別名-傳送! OK 傳送成功,but等了好久,手機還是沒收到訊息,開啟推送記錄一看,目標位0,這是什麼鬼,此刻內心一萬匹草泥馬奔騰而過!然後就準備掄起程式碼操一頓!無意一看發現問題所在!

在最初極光整合註冊的原始程式碼中 有一個註冊AppKey的方法
[JPUSHService setupWithOption:launchOptions appKey:@”4xxxxxxxxxx3c4c9b1a9”
channel:@””
apsForProduction:0
advertisingIdentifier:advertisingId];
注意看,這個方法中apsForProduction在官方API是這麼解釋的
* @param isProduction 是否生產環境. 如果為開發狀態,設定為 NO; 如果為生產狀態,應改為 YES.

由於最開始直接拷貝貼上的開發文件中的程式碼,所以導致預設為內部測試的開發環境ios-dev,但是我們後臺給開的使生產環境ios-product,我自己發的也是生產環境,難怪傳送目標位0,沒有對應平臺他往哪裡發嘛,跟後臺溝通之後我將自己註冊極光時候的apsForProduction改為YES!再次嘗試!ok大功告成!
*
在網上也看到很多類似問題和極光的一些帖子,這裡貼出幾個個相對詳細的供大家參考
http://www.jianshu.com/p/0d382c4d98ff(生產環境收不到訊息)
http://www.jianshu.com/p/c2592540a335(生產證書和開發證書的生成 【推送】)
http://www.jianshu.com/p/eaf07c4372a8(點選推送訊息跳轉至相應介面)
http://www.cnblogs.com/zk1947/p/6080722.html(收到訊息後對訊息的處理小結)

6月8日補充:
今天發現另一種情況,現在基本上都用的xcode8以上版本,xcode8以上都有一個新特性,就是自動選擇證書,不貼圖想必大家也知道我說的是什麼。

這裡就要說明,再未使用到極光之前,我們為了真機除錯,用到PP(Provisioning Profile)檔案可能大都是開發證書,但是一個包在一個裝置上只可能對應一種環境,如果你的應用裝到手機上是開發環境,那說明對應的就是開發環境的證書打包的應用,當然就不可能收到生產環境的推送了。

這裡我們需要渠道蘋果開發者中心https://developer.apple.com在該專案對應的APPID下建立一個生產環境的PP證書(俗話說齒輪檔案),然後down下來,雙擊開啟。到這裡基本上就替換成功可以了。

補充一點:可能在使用真機除錯的時候還是無法收到,這是因為之前打包過開發證書對應的應用,我們可以打包API,打包的時候選第二個Ad Hoc,然後通過iTunes安裝到手機,在除錯,OK訊息穩穩的接收!