环信集成纯视频聊天功能
2020-06-12 本文已影响0人
的的可可
条件
1:iOS_IM_SDK_V3.6.8
2:Xcode(11.5)
首先去环境注册app获取到appkey,然后集成SDkK:环信DSK集成.
然后去下载环信的demo:环信Demo下载.
下载下来大概是这个鬼样子
点进去。如果刚是pod集成(推荐),除了箭头所指的文件夹,其他都用不上;
打开箭头所指文件里面的工程
然后把下图中红框的部分拖入自己工程。
拖入自己工程
在然后将下图内容copy到自己的pch文件中
截屏2020-06-12下午9.29.37.png
注意:如果你的pch中还有其他头文件,copy的这个最好写在最前面。
然后点开你的AppDelegate.m在
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中这样写
//AppKey替换成你的在环信上注册的appKey
EMOptions *options = [EMOptions optionsWithAppkey:@"AppKey"];
// apnsCertName是证书名称,可以先传nil,等后期配置apns推送时在传入证书名称,后面介绍推送,这里可以不写
options.apnsCertName = @"nil";
EMError *error = [[EMClient sharedClient] initializeSDKWithOptions:options];
if (!error) {
PHlog(@"环信初始化成功");
}
//环信注册和登录,这里就写在了AppDelegate.m中,实际根据个人项目情况写在合适的地方
[[EMClient sharedClient] registerWithUsername:self.userModel.mobile password:@"sslz120" completion:^(NSString *aUsername, EMError *aError) {
if (!aError) {
NSLog(@"注册成功");
// 传入在应用(appkey)下注册的IM用户user1,密码123,用于登录环信服务器
[[EMClient sharedClient] loginWithUsername:"user1" password:@"123" completion:^(NSString *aUsername, EMError *aError) {
if (!aError) {
NSLog(@"登录成功");
[DemoCallManager sharedManager];//DemoCallManager类能收到,发起视频通知的关键
} else {
NSLog(@"登录失败的原因---%@", aError.errorDescription);
}
}];
最后在你需要发起视频的地方发起通知
//对方的环信账号user2
[[NSNotificationCenter defaultCenter] postNotificationName:CALL_MAKE1V1 object:@{CALL_CHATTER:"user2", CALL_TYPE:@(EMCallTypeVideo)}];
这样就能发起视频了。当然,这里由于还没有集成推送,所以只有对方在线的时候才能接收到你发起的视频。
然后如果不想使用环信原生的视频界面,就可以修改EM1v1CallViewController里面的内容,自定义你的视频界面。
我集成后,发现一个小问题,就是当我发起视频后,然后挂断,对面能正常挂断,但是我一直处于拨打界面。
所以我在DemoCallManager里面的方法
- (void)callDidEnd:(EMCallSession *)aSession
reason:(EMCallEndReason)aReason
error:(EMError *)aError
中返回挂断原因的位置家了dismiss的语句
UIWindow *window = [[UIApplication sharedApplication] keyWindow];
UIViewController *rootViewController = window.rootViewController;
[rootViewController dismissViewControllerAnimated:YES completion:nil];
不知道这样有什么弊端,希望有大佬指正。