問題:
前幾天提交的新包審核被拒。原因是iOS 14系統(tǒng),新增的本地網(wǎng)絡(luò)權(quán)限。
具體如下(圖片是盜用):
解決方案:
-
添加對應(yīng)的描述文案
在項(xiàng)目對應(yīng)的info.plist文件中添加權(quán)限為NSLocalNetworkUsageDescription的描述:
image.png -
列舉具體使用的服務(wù)列表
有些開發(fā)者已經(jīng)遇到這個(gè)坑點(diǎn)了杯拐。只添加權(quán)限描述并不會通過審核。
需要在info.plist文件中添加服務(wù)列表:
image.png
Xcode12可能不一樣世蔗,因?yàn)槲易约翰⑽瓷壎吮疲陨厦娴闹皇俏易约旱捻?xiàng)目配置。
下面是我盜的Xcode12的圖:
解決坑點(diǎn):
哪里用到了這個(gè)服務(wù)污淋,怎么列舉服務(wù)列表顶滩?
很多開發(fā)表示,我自己并未使用這個(gè)什么網(wǎng)絡(luò)服務(wù)寸爆,這個(gè)提示莫名其妙礁鲁。
根據(jù)我這邊的項(xiàng)目情況猜測,這個(gè)權(quán)限應(yīng)該是機(jī)器掃描到的而昨。因?yàn)槲业捻?xiàng)目里只是存在對應(yīng)的代碼救氯,但是并沒有去使用。
要列舉服務(wù)列表歌憨,就需要去項(xiàng)目里搜索對應(yīng)的代碼。
可以在Xcode里搜索關(guān)鍵詞:._tcp 或 ._udp
也可以通過檢查項(xiàng)目里哪些地方使用到了: NSNetService (這個(gè)類一般都是用來創(chuàng)建服務(wù)的)墩衙,著重去看一下务嫡。
下面是我項(xiàng)目里用到的地方:
如果引入的地方是靜態(tài)庫怎么辦?怎么搜索漆改?
我這邊項(xiàng)目還好心铃,用到的地方正好是通過pod源碼引入的。如果不幸你用到的是.a庫挫剑,那就只能通過命令行來搜索了去扣。
具體方式可以如下:
grep -r _tcp .
或者
find . -type f | grep -e ".a" -e ".framework" | xargs grep -s _tcp
更新
最近在刪除項(xiàng)目里無用的代碼,發(fā)現(xiàn)刪除了上面說的那個(gè)庫后仍然出現(xiàn)了本地網(wǎng)絡(luò)權(quán)限彈窗樊破。最終定位到愉棱,是因?yàn)槭褂昧伺f版本的高德SDK導(dǎo)致的。更新高德SDK即可哲戚。
通過這個(gè)印證了上面的說法有錯(cuò)誤奔滑。這個(gè)權(quán)限不是被機(jī)器掃到的。雖然上面的解決方式是正確的顺少。但是服務(wù)列表里的內(nèi)容寫的其實(shí)不對朋其,只能說是用不太正確的方式僥幸解決了問題王浴。