zoukankan      html  css  js  c++  java
  • 环信框架使用

    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(@"登录失败"); } }]; }
  • 相关阅读:
    SpringBoot整合Flyway(数据库版本迁移工具)
    Java并发编程实战 05等待-通知机制和活跃性问题
    Java并发编程实战 04死锁了怎么办?
    Java并发编程实战 03互斥锁 解决原子性问题
    Java并发编程实战 02Java如何解决可见性和有序性问题
    Flutter学习笔记(40)--Timer实现短信验证码获取60s倒计时
    Flutter学习笔记(39)--BottomNavigationBar底部item超过3个只显示icon,不显示title
    Flutter学习笔记(38)--自定义控件之组合控件
    Flutter学习笔记(36)--常用内置动画
    Flutter学习笔记(37)--动画曲线Curves 效果
  • 原文地址:https://www.cnblogs.com/Zp3sss/p/9086619.html
Copyright © 2011-2022 走看看