遇到的問題
項目中遇到了一個iOS的問題,需要調(diào)試镣隶。拿到了工程之后漫试,直接打開六敬,開啟自動配置證書,隨便寫了個我調(diào)試常用的BundleID驾荣,竟然迎來了一個個的紅色嘆號:
The 'Apple Push Notification' feature is only available to users enrolled in Apple Developer Program. Please visit
https://developer.apple.com/programs/ to enroll.
Provisioning profile "iOS Team Provisioning Profile: com.wsgh.test2" doesn't support the Push Notifications capability.
Provisioning profile "iOS Team Provisioning Profile: com.wsgh.test2" doesn't include the aps-environment entitlement.
第一個錯應該是根本原因外构∑张荩可是為什么呢?
排查和解決
字面意思是审编,推送功能只對注冊開發(fā)者開放撼班。仔細一想,這可以理解垒酬,因為我用的是我自己的個人開發(fā)者Team砰嘁,窮鬼一個,并沒有花99美元勘究。
- 解決辦法:
切換到企業(yè)的開發(fā)Team中矮湘;
繼續(xù)使用自己的Team,但是關閉推送功能口糕;
我比較喜歡用自己的缅阳,所以選擇方法2。打開Xcode工程的配置界面走净,切換到Capabilities標簽券时,找到Push。伏伯。橘洞。What?為啥沒有说搅?合著我現(xiàn)在不想用推送都不行了炸枣?
可是,作為一個愛折騰的程序狗弄唧,我表示不服:配置這個東西一定是有配置文件的适肠,大家開發(fā)的時候因為xcode做的比較強大,各種配置都直接點UI了候引,一般也懶得關注配置文件在哪侯养。
好,思路確定了澄干,找吧逛揩。為了圖省事,我把工程直接創(chuàng)建了個git倉庫麸俘,用來比較工程文件的變動辩稽。
先切換到公司的Team,點開推送開關配置从媚,然后git commit逞泄;
然后關閉推送開關,再看看文件變動。
發(fā)現(xiàn)兩處不同:
- 工程根目錄的xcodeproj包中喷众,右鍵顯示包內(nèi)容各谚,找到了project.pbxproj,其中有個com.apple.push的值侮腹,開啟推送時是1嘲碧,關閉變成了0。估計這個是那個開關的配置文件父阻;
- Code Signing Entitlements配置的那個entitlements文件中愈涩,打開推送開關配置時,會自動生成一個APS Environment鍵值加矛,這是iOS10推出之后履婉,SDK新要求的一個配置權(quán)限的地方,這個鍵值就是推送的配置斟览,關閉的時候毁腿,這個被刪掉了。
至此苛茂,根據(jù)這個修改之后已烤,這個工程就能用了。
延伸
從這個例子中妓羊,可以得知胯究,project.pbxproj文件就是存放xcode的工程基本配置的地方,關于本工程的基本配置變更時躁绸,都會體現(xiàn)在這里裕循;而iOS新增的權(quán)限配置,是在entitlements文件中規(guī)定的净刮,而entitlements文件的路徑剥哑,也是在project.pbxproj文件中指定了(鍵為:CODE_SIGN_ENTITLEMENTS)。
所以淹父,以此我們可以在某些特殊情況下株婴,直接查看工程文件就可以臨時查看和修改工程的配置信息,從而達到裝逼的效果暑认,哦不對督暂,是解決一些燃眉之急的效果~