各位調試的時候必定要用真機,模擬器是獲取不了 token 的ios
交代下使用的設備:
xcode:Version 8.0 (8A218a)
手機: iphone6(10.0)
jpush版本:2.1.7git
iOS10 近期咱們 app 要上架,可是在調試的過程當中發現了一個問題,ios 10手機不能註冊通知了(ios 9的手機能夠),咱們使用的是極光的2.1.7版本,運行的時候老是報錯.github
1.did Fail To Register For Remote Notifications With Error: Error Domain=NSCocoaErrorDomain Code=3000 "未找到應用程序的「aps-environment」的受權字符串" UserInfo={NSLocalizedDescription=未找到應用程序的「aps-environment」的受權字符串} 2. | JPUSH | W - [JPUSHClientController] Not get deviceToken yet. Maybe: your certificate not configured APNs? or current network is not so good so APNs registration failed? or there is no APNs register code? Please refer to JPush docs.
看了極光的論壇,推薦解決方案是:升級到xcode8以後,手機爲ios10系統,測試時出現警告,打開這個論壇,答案在五樓的一個簡書博客裏面.xcode
選中 tagets點擊 capabilitiesapp
Snip20161011_1.png框架
而後自動生成以下文件iphone
Snip20161011_4.pngpost
對應兩種狀態: development和 production, 而後再運行,便可獲取成功獲取 token 了測試
果真問題解決了,能夠註冊了;字體
交代下使用的設備:
xcode:Version 7.1
手機: iphone6(10.0)
jpush版本:2.1.9
這個問題有兩個方案:
下面來講下緣由:
因爲極光2.1.9更新了對 iOS10的支持,會自動識別 iOS10的方法,若是使用 iOS10極光使用的新的UserNotifications框架的,這須要作問題一中的配置才能使用.
因此仍是建議升級 Xcode 8;何況 iOS10字體變了, label 可能顯示不全,須要 xcode 8 才能夠看到字體的變化;可能老闆之後想使用 iOS 10 通知新特性;因此說是跑不掉的,升級 Xocde 8吧;
#ifdef NSFoundationVersionNumber_iOS_9_x_Max JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init]; entity.types = UNAuthorizationOptionAlert|UNAuthorizationOptionBadge|UNAuthorizationOptionSound; entity.categories =[self setUpCategory]; [JPUSHService registerForRemoteNotificationConfig:entity delegate:self]; #endif
因爲篇幅比較長,先給出答案:不須要改,xcode 會根據你打包環境的不一樣,修改爲對應的 production 或development;即便你隨意改爲了任意字符(例如:123
), xcode 也會幫你改回來
交代下使用的設備:
xcode:Version 8.0 (8A218a)
手機: iphone5(9.3)
jpush版本:2.1.7
APS Environment
Paste_Image.png
stackOverFlow鏈接:xcode 8 push notification capabilities and entitlements file setting
Paste_Image.png
可是這個是飯碗的事情,萬一推送不成功,或者蘋果拒絕了;因此我得本身親自試一下.
因而我打了一個 adhoc 的包沒有修改APS Environment,仍是development
裝在手機上,使用生產環境推送;居然成功了.
這裏就開始尷尬了,就在想可能會有如下兩種可能:
1.使用development也能夠,不須要修改爲production
2.或者打包的時候,xcode 會幫我改爲production
2.1.生產環境
因此我就打開了剛纔的 ipa 包,查找裏面的mobileprovision文件,過程以下
Snip20160929_20.png
Snip20160929_21.png
找到mobileprovision 文件後;xcode打開啥也沒有看到, sublime打開發現一堆亂碼;改爲 txt 格式仍是打不開.
sublime打開
這個時候就蛋疼了,那怎麼辦;就去搜了下怎麼打開 mobileprovision,皇天不負有心人,終於找到一篇文章代碼簽名探析,裏面有打開方案
$ security cms -D -i example.mobileprovision
這個命令會輸出簽名信息中的內容,若是你親自試一下,接下來你會獲得一個 XML 格式的 plist 文件內容輸出。
Snip20160930_29.png
Paste_Image.png
2.2測試環境
注意:您能夠打個普通的開發環境的測試包,終端查看裏面的內容,你會發現裏面是development
Paste_Image.png
答:用戶無論怎麼改都是沒有用的,由於 mobileprovision裏面又會改回來.
3.1. 測試環境
Snip20160930_6.png
Paste_Image.png
3.2. Ad Hoc環境
Snip20160930_9.png
Snip20160930_8.png
因此能夠得出結論:xcode 會自動幫咱們改aps Environment對應的value,不用手動改
Background Modes-->remote notification
&push notification
在搜索打開 provison 的時候,搜了很久都沒有答案;總結下關鍵詞少點好;
下面是搜索過程
Snip20160930_25.png
Snip20160930_27.png
Snip20160930_24.png