网易云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<LoginInfo> callback =
                new RequestCallback<LoginInfo>() {
                    @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);
        }
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
KakaopayAmt": "", "IsBlue": "", "BlueResultNo": "", "BlueAmt": "", "IsAsiana": "", "AsianaResultNo": "", "AsianaAmt": "", "IsSmilecard": "", 腾讯云IM提供了适用于 Vue.js 的即时通讯 SDK,可以方便地在 Vue.js 项目中 "SmilecardResultNo": "", "SmilecardAmt": "", "IsHanaskcard": "", "Hanaskcard使用。使用前需要先引入 SDK,并且需要在腾讯云 IM 控制台上创建应用并获取 SDKAppIDResultNo": "", "HanaskcardAmt": "", "IsHanaone": "", "HanaoneResultNo": "", 和密钥信息。 以下是使用腾讯云 IM SDK 在 Vue.js 中实现简单的即时通讯功能的示 "HanaoneAmt": "", "IsLotte": "", "LotteResultNo": "", "LotteAmt":例代码: ```html <template> <div> <div v-for="msg in msgList" :key="msg.time "", "IsHyundaione": "", "HyundaioneResultNo": "", "HyundaioneAmt": "", ""> <p>{{ msg.sender }}: {{ msg.content }}</p> <small>{{ msg.time }}</small> </div> IsNonghyupone": "", "NonghyuponeResultNo": "", "NonghyuponeAmt": "", <input v-model="inputMsg" @keydown.enter="sendMsg" /> </div> </template> <script> import TIM from ' "IsSamsungone": "", "SamsungoneResultNo": "", "SamsungoneAmt": "", "IsWoorionetim-js-sdk' export default { data() { return { tim: null, userID: 'user1', convID": "", "WoorioneResultNo": "", "WoorioneAmt": "", "IsShinhancardone": "", : 'conv1', inputMsg: '', msgList: [] } }, mounted() { this.initIM() "ShinhancardoneResultNo": "", "ShinhancardoneAmt": "", "IsHyundaicardone }, methods: { initIM() { this.tim = TIM.create({ SDKAppID: 'xxx', // 替换为": "", "HyundaicardoneResultNo": "", "HyundaicardoneAmt": "", "IsSamsun自己的 SDKAppID userID: this.userID, userSig: 'xxx' // 替换为自己的密钥ghappyone": "", "SamsunghappyoneResultNo": "", "SamsunghappyoneAmt": "", 信息 }) this.tim.on(TIM.EVENT.MESSAGE_RECEIVED, this.handleMsgReceived) this.tim.login() }, sendMsg() "IsNonghyupcardone": "", "NonghyupcardoneResultNo": "", "Nonghyupcard { const msg = this.tim.createTextMessage({ to: this.convID, payload: { text: this.inputMsg } }) this.tim.sendMessage(msg) this.msgList.push({ sender: this.userID, content: this.inputMsg, oneAmt": "", "IsHappymoneycardone": "", "HappymoneycardoneResultNo": "", " time: new Date().toLocaleString() }) this.inputMsg = '' }, handleMsgReceived(event) { const msgHappymoneycardoneAmt": "", "IsCulturesurvivalone": "", "CulturesurvivaloneResult = event.data[0] this.msgList.push({ sender: msg.from, content: msg.payload.text, time: newNo": "", "CulturesurvivaloneAmt": "", "IsDongaone": "", "DongaoneResultNo Date(msg.time * 1000).toLocaleString() }) } } } </script> ``` 这个示例中,": "", "DongaoneAmt": "", "IsGmarketone": "", "GmarketoneResultNo": "", 我们使用了 tim-js-sdk 库来操作腾讯云 IM,通过创建 TIM 实例来进行登录、发送消息、接收消息 "GmarketoneAmt": "", "IsEtcCardone": "", "EtcCardoneResultNo": "", "EtcCardoneAmt": "", "IsBlueone": "", "BlueoneResultNo": "", "BlueoneAmt": "", 等操作。在模板中,我们使用 v-for 指令来展示消息列表,并通过 v-model 指令来实现输入框的双向绑定,通过 @keydown.enter 事件监听来发送消息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值