1、配置对象
EMOptions对象环信的配置对象,其中appKey、推送证书名、自动登录功能等进行设置
2、登录模块
环信初始化: // 在application:didFinishLaunchingWithOptions:方法中初始化环信 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //AppKey:注册的AppKey,详细见下面注释。 //apnsCertName:推送证书名(不需要加后缀),详细见下面注释。 EMOptions *options = [EMOptions optionsWithAppkey:@"douser#istore"]; options.apnsCertName = @"istore_dev"; [[EMClient sharedClient] initializeSDKWithOptions:options]; return YES; } // 登录环信 EMError *error = [[EMClient sharedClient] loginWithUsername:@"8001" password:@"111111"]; if (!error) { NSLog(@"登录成功"); }
3、登录功能的代理模块
[[EMClient sharedClient] addDelegate:self delegateQueue:nil]; 设置登录模块的代理对象(遵循EMClientDelegate协议) 实现下面的4个方法可以监听登录状态 // 判断手机是否联网,网络变化时会调用该方法 - (void)connectionStateDidChange:(EMConnectionState)aConnectionState; // 自动登录完成后,调用该方法 - (void)autoLoginDidCompleteWithError:(EMError *)aError; // 账号在其他设备上登录后,调用该方法,自动退出登录,无需手动退出 - (void)userAccountDidLoginFromOtherDevice; // 账号被服务器禁用后,调用该方法。自动退出 - (void)userAccountDidRemoveFromServer;
4、自动登录与被动退出
当出现下面的情况时,EMOptions对象中的isAutoLogin参数为false。 1、用户调用了 SDK 的登出动作; 2、用户在别的设备上更改了密码,导致此设备上自动登录失败; 3、用户的账号被从服务器端删除; 4、用户从另一个设备登录,把当前设备上登录的用户踢出; 当出现下面的情况,被动退出 1、用户从另一个设备登录,把当前设备上登录的用户踢出; 2、用户的账号被从服务器端删除;
5、退出
// YES表示解除DeviceToken绑定,该手机将不会接受到消息推送。 EMError *error = [[EMClient sharedClient] logout:YES]; if (!error) { NSLog(@"退出成功"); }
6、代码写法
// 判断是否设置自动登录,false则登录环信
BOOL isAutoLogin = [EMClient sharedClient].options.isAutoLogin; if (!isAutoLogin) { [[EMClient sharedClient] loginWithUsername:@"admin" password:@"123456" completion:^(NSString *aUsername, EMError *aError) { if (!aError) { EMClient *c = [EMClient sharedClient]; [EMClient sharedClient].options.isAutoLogin = YES; // 开启自动登录 [[EMClient sharedClient] addDelegate:self delegateQueue:nil]; // 设置代理方法,队列为nil则在主线程中调用。 NSLog(@"登录成功"); }else{ NSLog(@"登录失败"); } }]; }