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
发送表情崩溃错误在
EaseMessageViewController
的viewDidLoad
方法中的最后边加入这段代码再运行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中写上后,就能正常回调