1、其他第三方的问题
pod 'NIMKit',
这个Pod会自带UI框架和IM框架,其中还包括
至此,网易项目就可以了,想要调用,直接在Swift头问价加载:
我的项目里用到了:SwiftyJSON、ObjectMapper、Alamofire等其他第三方,这类第三方因为在pods文件倒入时,不能添加use_frameworks!会报错,所以需要手动导入。
直接在GitHub下载需要的第三方(以Alamofire为例):
2、IM初始化
Swiftt:AppDelegate初始化: NIMSDK.shared().register(withAppID: “”, cerName:nil)
登录: NIMSDK.shared().loginManager.login(“”, token:“”) { (error)in
if error !=nil{
//网易云登录失败
}
}
3、IM播放语音的功能
因为我们要保存网易IM时的语音URL,直接就调用了网易的播放语音功能:
a、需继承:NIMMediaManagerDelegate
b、添加代理:NIMSDK .shared().mediaManager.add(self)
c、播放:NIMSDK.shared().mediaManager.play(filePath)//filePath为网易加密的语音文件url,所以这里得下载到本地,这里就不放置下载代码了~
停止:NIMSDK.shared().mediaManager.stopPlay()
d、语音播放的几个回掉:
func playAudio(_filePath:String, didBeganWithError error:Error?) {
print("开始了",error)
}
func playAudio(_filePath:String, didCompletedWithError error:Error?) {
print("播完了",error)
}
如果需要还可去NIMMediaManagerDelegate里找需要的方法。
4、网易IM与Swift代码的衔接
实际项目里,我们自定义了发送消息的权限,但因为Swift与OC的调用不方便,造成了我们实际自己操作的时候,这两个类用OC去封装实现了。
这里我们在NIMSessionViewController类里增加了:@property (nonatomic, strong) NSString *USER_ID;这个属性,但是我是用Swift调用的,点语法直接传值的时候会传不过来,得自己再写Set/Get方法。
5、聊天室更改用户昵称
NIMMessageChatroomExtension *nNIMMessageChatroomExtension = [[NIMMessageChatroomExtension alloc]init];
nNIMMessageChatroomExtension.roomNickname=@"***";
nNIMMessageChatroomExtension.roomAvatar = @"https://www.baidu.com/img/bd_logo1.png";
self.messageForMenu.messageExt= nNIMMessageChatroomExtension;
自己要拦截消息,再重写willSendMessage时,消息sendMessage等将发送不出去,所以请别重写这个方法。想要拦截请在NIMSessionViewController里拦截,回掉。
如果有什么问题可随时私聊。谢谢🙏。