集成环信遇到问题

1. 静态库问题
静态库问题一般为导入重复或者导入不全。
其中不包含实时语音的 SDK 需要导入库有:

CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.dylib
libz.dylib
libstdc++.6.0.9.dylib
libsqlite3.dylib

包含实时语音的 SDK 导入库有:

CoreMedia.framework
AudioToolbox.framework
AVFoundation.framework
MobileCoreServices.framework
ImageIO.framework
libc++.dylib
libz.dylib
libstdc++.6.0.9.dylib
libsqlite3.dylib
libiconv.dylib

值得注意的是SDK 不支持bitcode。
2. 导入FixFopen.c报错
因为添加 chatview 聊天界面时缺少依赖库。


3. pch 文件报错问题
文件中代码头尾分别加上#ifdef __OBJC__与#endif即可。
4. 缺少Hyphenate.framework问题
General 中Embedded Binaries 中添加Hyphenate.framework
5. 在AppDelegate中执行[EaseMob sharedInstance]崩溃
在other link flags添加“-ObjC”选项(注意:O和C大写

6. 跳转EaseMessageViewController发送表情崩溃错误
EaseMessageViewControllerviewDidLoad方法中的最后边加入这段代码再运行EaseEmotionManager *manager=[[EaseEmotionManageralloc] initWithType:EMEmotionDefaultemotionRow:3emotionCol:7emotions:[EaseEmojiallEmoji]]; [self.faceViewsetEmotionManagers:@[manager]];
7. 信后台设置证书后,同时在代码里将证书名称设置一致,但是还是收不到推送消息
在配置文件里,将Background Modes打开,勾选“Remote notifications”,后就能正常收到推送消息。
8. 第一次登陆获取不到聊天记录
[[EaseMob sharedInstance].chatManager setIsAutoLoginEnabled:YES];
[[EaseMob sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];//该行代码一定要放在setIsAutoLoginEnabled,否则会造成加载不到聊天记录的bug。
9. Hyphenate/EMSDK.h’ file no found
换下引用#import <HyphenateLite/HyphenateLite.h>或者#import <Hyphenate/Hyphenate.h>如果此方法不行, 可以试试选中你的项目中的Pods -> EaseUI->Build Phases->Link Binary With Libraries ,Add Other ,找到工程里面,Pods里面的Hyphenate文件夹下面的Hyphenate.framework 点击open,重新编译就好了。
10. 集成动态库上传AppStore出现问题, 打包上线时报错
由于 iOS编译的特殊性,为了方便开发者使用,环信将 i386 x86_64 armv7 arm64 几个平台都合并到了一起,所以使用动态库上传appstore时需要将i386 x86_64两个平台删除后,才能正常提交审核在SDK当前路径下执行以下命令删除i386 x86_64两个平台
实时音视频版本Hyphenate.framework

lipo Hyphenate.framework/Hyphenate -thin armv7 -output Hyphenate_armv7
lipo Hyphenate.framework/Hyphenate -thin arm64 -output Hyphenate_arm64
lipo -create Hyphenate_armv7 Hyphenate_arm64 -output Hyphenate
mv Hyphenate Hyphenate.framework/

不包含实时音视频版本HyphenateLite.framework

lipo HyphenateLite.framework/HyphenateLite -thin armv7 -output HyphenateLite_armv7
lipo HyphenateLite.framework/HyphenateLite -thin arm64 -output HyphenateLite_arm64
lipo -create HyphenateLite_armv7 HyphenateLite_arm64 -output HyphenateLite
mv HyphenateLite HyphenateLite.framework/

运行完毕后得到的Hyphenate.framework就是最后的结果,拖进工程,编译打包上架。注意 : 最后得到的包必须真机编译运行,并且工程要设置编译二进制文件General->Embedded Bunaries.
11. 消息提示的小红点问题。在UITabBarController的子类中设置了IChatManagerDelegate,但是setupUnreadMessageCount不回调
原因:在AppDelegate中没有写

-(void)applicationWillResignActive:(UIApplication *)application {
[[EaseMob sharedInstance] applicationWillResignActive:application];
 }
-(void)applicationDidEnterBackground:(UIApplication *)application {
 [[EaseMob sharedInstance] applicationDidEnterBackground:application];
}
 -(void)applicationWillEnterForeground:(UIApplication *)application {
[[EaseMob sharedInstance] applicationWillEnterForeground:application];
}
-(void)applicationDidBecomeActive:(UIApplication *)application {
[[EaseMob sharedInstance] applicationDidBecomeActive:application];
}
 -(void)applicationWillTerminate:(UIApplication *)application {
[[EaseMob sharedInstance] applicationWillTerminate:application];
}

将以上几个方法在AppDelegate中写上后,就能正常回调

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容