IOS 環信3.0升級到最新版本SDK填坑

weixin_34413065發表於2019-01-07

❤️一、說說當時情況,因為專案上線也比較緊急,然後匆忙拿別人已經簡化了的專案整合單聊頁面。專案是可以執行起來,環信即時通訊也沒有問題,環信整合版本是✅3.0✅版本,然後,當、當、當就提審了,但是後面卻隱藏了個大問題。

❤️二、提審之後,發現蘋果稽核小組那邊登入不上去,而且是兩次拒絕了,都是在環信登入那裡出問題,直接登入失敗。然後就開始扒帖子,看到這句話,然後一頓mmp。


7100326-922cb51d637feb25.png
image.png

❤️三、然後去諮詢環信客服是否支援IPV6,下面是結果。不得不吐槽一下,妹的,環信還上市了,上市了,然而還得工單方式提問題,兩三個小時不回一句話,說要升級VIP才能建QQ群回答問題,TMD就是變著法坑錢。


7100326-2966343879f13015.png
image.png

❤️以前整合環境:手動整合的環信3.0
1、下載環信最新官方SDK檔案,正式開始升級環信
[環信官網地址]https://www.easemob.com/download/im

7100326-c6970d8d9e1a2768.png
image.png

❤️因為使用沒有實時語音的,所以整合Lite版本就行。
7100326-f51928962c672f81.png
image.png

2、環信檔案


7100326-76f127ecc6a2da27.png
image.png

❤️老版本檔案目錄


7100326-f0178836552111db.png
image.png

3、新版本SDK檔案替換老版本SDK檔案


7100326-b664a1d0c737ad7b.png
image.png

4、cmd+b 編譯一下,報錯,引用檔案變化所致。


7100326-a3edc6bfbcbc6a3e.png
image.png

5、更換標頭檔案,cmd+b

//將標頭檔案更換一下
//#import "EMSDK.h"
#import <HyphenateLite/HyphenateLite.h>

6、提示檔案找不到,直接將報錯的地方改為下面程式碼


7100326-454ce2d38f51af7e.png
image.png
//現在引入路徑都變為HyphenateLite下面,所以提示not found都換到HyphenateLite下面
#import <HyphenateLite/EMMessage.h>

7、報錯,註釋掉,環信歷史訊息獲取,先註釋


7100326-0e9c51209755aa65.png
image.png

8、報錯,成功列舉有改變,Fix一下,cmd+b 編譯一下,不出意外,就編譯成功!但是提交稽核,卻通不過


7100326-0f4ea574c4313340.png
image.png

9、提交稽核錯誤資訊,就是蘋果不允許將模擬器框架x86和i386包含進去


7100326-ed4a12d414ae034e.png
image.png

10、將下面程式碼新增到 Targets > Build Phases > Run Script (❤️沒有就直接新增)

//這段程式碼是指令碼語言,因此顏色就是這樣的,
//有可能會造成不起作用
//不起作用可以試著刪除,重新新增Run Script

APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"

# This script loops through the frameworks embedded in the application and
# removes unused architectures.
find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK
do
FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)
FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"
echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"

EXTRACTED_ARCHS=()

for ARCH in $ARCHS
do
echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"
lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
done

echo "Merging extracted architectures: ${ARCHS}"
lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
rm "${EXTRACTED_ARCHS[@]}"

echo "Replacing original executable with thinned version"
rm "$FRAMEWORK_EXECUTABLE_PATH"
mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

done

11、最後還有一步,那就是 Run script only when installing 勾上。 Run script only when installing,大概意思是在特定環境下才跑指令碼。
(1)、說說不勾的情況:不勾選的的時候,App提交是可以通過,但是模擬器和真機都直接報錯,說是Xcode 10 升級編譯系統問題,但是沒有深究。
(2)、勾選的情況:在提交上傳App是通過的,並且在本地執行也不會有錯誤出現。並不是很理解,找個時間再看看這個問題。


7100326-7eb5db446249d350.png
image.png

12、✅升級結束,專案還有一點,就是環信歷史資訊得看看。

[國外大牛參考文件]https://www.cnblogs.com/zhaofj/p/6305988.html
[上傳失敗參考文件]http://ikennd.ac/blog/2015/02/stripping-unwanted-architectures-from-dynamic-libraries-in-xcode/

相關文章