今天提交項(xiàng)目,被拒關(guān)于環(huán)信sdk使用私有api的問(wèn)題

一大早的給我驚喜,上線被拒的悲催,apple給的提示信息com.apple.springboard.lockcomplete

看到的第一眼感覺是檢測(cè)鎖屏私有api的使用,不過(guò)項(xiàng)目里面自己確實(shí)沒(méi)有使用過(guò)類似的api,第一個(gè)想到的應(yīng)該是第三方庫(kù)和sdk,打開終端cd到你的項(xiàng)目根目錄執(zhí)行如下的語(yǔ)句

grep -R 'com.apple.springboard.lockcomplete' *

亦或者執(zhí)行這個(gè)也是可以的

find . | grep -v .svn | grep ".a" | grep -v ".app" | xargs grep com.apple.springboard.lockcomplete

會(huì)把相關(guān)使用私有api的類或者第三方檢測(cè)出來(lái)。
我的想檢測(cè)出如圖


效果圖

原來(lái)是環(huán)信的sdk出現(xiàn)的問(wèn)題,我們?nèi)サ焦倬W(wǎng)就可以看到,我的sdk該升級(jí)了,因?yàn)閍pple把相關(guān)api變成了私有,sdk自然也就需要升級(jí),但是環(huán)信的技術(shù)為什么會(huì)使用如此蛋疼的api造成的麻煩就不知道了,好了現(xiàn)在就可以下載新的sdk替換掉舊的sdk即可。

但是還有問(wèn)題就是appstore上傳的時(shí)候是不允許使用i386 x86_64兩種文件的,我們需要進(jìn)行把i386 x86_64刪除,如圖所示


效果圖

把刪除后的sdk放進(jìn)項(xiàng)目即可。這個(gè)階段已完成,不過(guò)好戲在后面。

注意

你會(huì)看到各種頭文件引用錯(cuò)誤,靜下心不要擔(dān)心,你看到這些有文件都是找不到,很簡(jiǎn)單我們把頭文件替換一下就OK了,使用尖括號(hào),如下,

import <Hyphenate/EMCallSession.h>

等你替換完編譯沒(méi)有報(bào)錯(cuò),高興啊,終于可以通過(guò)了,直接真機(jī)測(cè)試,悲催了,直接崩潰,心有涼了也一下,不過(guò)還是要看看什么錯(cuò)誤也好解決。

Library not loaded: @rpath/Hyphenate.framework/Hyphenate
Referenced from: /var/containers/Bundle/Application/98B60753-EF76-4A53-B771-002F7F3D64D7/DigitalCampus.app/DigitalCampus
Reason: image not found

這就是包的錯(cuò)誤,是Hyphenate.framework找不到相關(guān)的資源文件,這是什么情況,查找相關(guān)信息終于不負(fù)有心人。找到答案完美解決。

解決辦法一:把導(dǎo)入的Framework的Status由Required改為Optional,如圖,編譯運(yùn)行正常。但是有后遺癥,sdk不能用,消息發(fā)送為空,好吧,我還以為項(xiàng)目問(wèn)題,各種排場(chǎng),各種參數(shù),都是對(duì)的,但是問(wèn)題就是依然存在,好吧,就暫時(shí)改回來(lái)的狀態(tài)。

如圖

解決辦法二:不需要修改Framework的Status,首先在Build Phases下添加 New Copy Files Phase;

如圖

然后,在如圖:


如圖

設(shè)置好后,編譯運(yùn)行通過(guò)。真機(jī)測(cè)試完美解決,消息可以順暢的發(fā)走了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容