网易云IM(即时通讯) 登录指南(Android)

网易云IM(即时通讯) 登录指南(Android)

直接上干货 IM登录走起(简单没有多余操作)

大概流程

1.每一个用户必须有一个唯一的ID。
2.这个用户id需要在网易云服务器上注册一下(服务端进行操作)。
3.注册完网易云服务器会返回一个token给我们的服务器,服务器返在返回给你,就是你的登录密码,用户名就是你的id。(可以自定义)
4.直接登录,看返回状态。
5…网易云限制每一个手机号只能免费注册一个用户id。
6.手机号申请的key最多免费注册100用户,超出就不会登录成功。
这是我简单封装的一个登录、注销、主动登录工具类,

@SuppressWarnings("unchecked")
public class NimLoginManager {
    static String TAG = "LoginManger-----";
    static boolean loginFlag = false;
    public static LoginInfo loginInfo() {
        BCPreferences preferences = BCPreferences.getInstance();
        // 从本地读取上次登录成功时保存的用户登录信息
        if (TextUtils.isEmpty(preferences.getUserId())
                || TextUtils.isEmpty(preferences.getToken())) {
            LogUtil.i("IM登录UserId:"+preferences.getUserId()+"IM登录token:"+preferences.getToken());

            return null;
        }
        String id =  preferences.getUserId();
        String token = preferences.getToken();
        //缓存id
        DemoCache.setAccount(id);

        LogUtil.i("IM登录UserId:"+id+"IM登录token:"+token);

        return new LoginInfo(id, token);
    }

    /*登录*/
    public static boolean doLogin(String account, String pwd) {
      //这里传入的是你得当前账号id,和服务
        LoginInfo info = new LoginInfo(account, pwd);
        RequestCallback callback =
                new RequestCallback() {
                    @Override
                    public void onSuccess(LoginInfo param) {
                        LogUtil.i("onSuccess-登录成功 用户:"+param.getAccount()+"--token:"+param.getToken());
                         loginFlag = true;
                         DataCacheManager.buildDataCache();
                         LogUtil.i(NIMClient.getStatus()+"---状态");
                    }
                    @Override
                    public void onFailed(int code) {
                        //  302	token 错误或者账号不存在都会导致 302 错误码。
                        //   408	1、连接建立成功,SDK 发出登录请求后网易云通信服务器一直
                        //    415	网络断开或者与网易云通信服务器建立连接失败	NET_BROKEN
                        //   416	请求过频错误,
                        //    417	一般由一端登录导致自动登录失败导致。
                        //    1000	登录成功之前,调用本地数据库相关接口(手动登录的情况下数据库未打开)	UNLOGIN
                        LogUtil.i( "onFailed-登录失败" + code);
                        loginFlag = true;
                    }
                    @Override
                    public void onException(Throwable exception) {
                        LogUtil.i("onException-异常问题" + exception.getMessage());
                        loginFlag = true;
                    }
                    // 可以在此保存LoginInfo到本地,下次启动APP做自动登录用
                };
        NIMClient.getService(AuthService.class).login(info).setCallback(callback);
        return loginFlag;
    }

    /*登出*/
    public static void loginOut() {
        NIMClient.getService(AuthService.class).logout();
    }
    /***
     * 主动调用 避免IM掉线或者自动登录不成功,这里可以主动调用
     * */
    public static void login(){
        String userId = BCPreferences.getInstance().getUserId();
        String token = BCPreferences.getInstance().getToken();
        if(userId!=null && token!=null){
            doLogin(userId, token);
        }
    }
}

你可能感兴趣的:(网易云IM(即时通讯) 登录指南(Android))