今天提交项目,被拒关于环信sdk使用私有api的问题

一大早的给我惊喜,上线被拒的悲催,apple给的提示信息com.apple.springboard.lockcomplete

看到的第一眼感觉是检测锁屏私有api的使用,不过项目里面自己确实没有使用过类似的api,第一个想到的应该是第三方库和sdk,打开终端cd到你的项目根目录执行如下的语句

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

亦或者执行这个也是可以的

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

会把相关使用私有api的类或者第三方检测出来。
我的想检测出如图


效果图

原来是环信的sdk出现的问题,我们去到官网就可以看到,我的sdk该升级了,因为apple把相关api变成了私有,sdk自然也就需要升级,但是环信的技术为什么会使用如此蛋疼的api造成的麻烦就不知道了,好了现在就可以下载新的sdk替换掉旧的sdk即可。

但是还有问题就是appstore上传的时候是不允许使用i386 x86_64两种文件的,我们需要进行把i386 x86_64删除,如图所示


今天提交项目,被拒关于环信sdk使用私有api的问题_第1张图片
效果图

把删除后的sdk放进项目即可。这个阶段已完成,不过好戏在后面。

注意

你会看到各种头文件引用错误,静下心不要担心,你看到这些有文件都是找不到,很简单我们把头文件替换一下就OK了,使用尖括号,如下,

import

等你替换完编译没有报错,高兴啊,终于可以通过了,直接真机测试,悲催了,直接崩溃,心有凉了也一下,不过还是要看看什么错误也好解决。

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

这就是包的错误,是Hyphenate.framework找不到相关的资源文件,这是什么情况,查找相关信息终于不负有心人。找到答案完美解决。

解决办法一:把导入的Framework的Status由Required改为Optional,如图,编译运行正常。但是有后遗症,sdk不能用,消息发送为空,好吧,我还以为项目问题,各种排场,各种参数,都是对的,但是问题就是依然存在,好吧,就暂时改回来的状态。

如图

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

如图

然后,在如图:


如图

设置好后,编译运行通过。真机测试完美解决,消息可以顺畅的发走了。

你可能感兴趣的:(今天提交项目,被拒关于环信sdk使用私有api的问题)