tencent cloud

文档反馈

最后更新时间:2024-01-31 15:36:14

    功能描述

    初始化 IM SDK 后,您需要调用 SDK 登录接口,验证帐号身份,获得帐号的功能使用权限。登录 IM SDK 成功后,才能正常使用消息、会话等功能。
    注意:
    只有获取会话的接口可以在调用登录接口后立即调用。其他各项功能的接口,必须在 SDK 登录成功后才能调用。因此在使用其他功能之前,请务必登录且确保登录成功,否则可能导致功能异常或不可用!

    登录

    首次登录一个 IM 帐号时,不需要先注册这个帐号。在登录成功后,IM 自动完成这个帐号的注册。 您可以调用 Login(Details) 接口进行登录。
    Login 接口的关键参数如下:
    参数
    含义
    说明
    user_id
    登录用户唯一标识
    建议只包含大小写英文字母(a-z、A-Z)、数字(0-9)、下划线(_)和连词符(-)。长度不超过 32 字节。
    user_sig
    登录票据
    由您的业务服务器进行计算以保证安全。计算方法请参考 UserSig 后台 API
    callback
    异步回调
    您需要在以下场景调用 Login 接口:
    App 启动后首次使用 IM SDK 的功能。
    登录时票据过期:Login 接口的回调会返回 ERR_USER_SIG_EXPIRED(6206)ERR_SVR_ACCOUNT_USERSIG_EXPIRED(70001) 错误码,此时请您生成新的 user_sig 重新登录。
    在线时票据过期:用户在线期间也可能收到 UserSigExpiredCallback(Details) 回调,此时需要您生成新的 user_sig 并重新登录。
    在线时被踢下线:用户在线情况下被踢,IM SDK 会通过 KickedOfflineCallback(Details) 回调通知给您,此时可以在 UI 提示用户,并调用 Login 重新登录。
    以下场景无需调用 Login 接口:
    用户的网络断开并重新连接后,不需要调用 Login 函数,IM SDK 会自动上线。
    当一个登录过程在进行时,不需要进行重复登录。
    注意:
    1. 调用 IM SDK 接口成功登录后,将会开始计算 DAU,请根据业务场景合理调用登录接口,避免出现 DAU 过高的情况。 2. 在一个 App 中,IM SDK 不支持多个帐号同时在线,如果同时登录多个帐号,只有最后登录的帐号在线。
    示例代码如下:
    public static void Login() {
    if (userid == "" || user_sig == "")
    {
    return;
    }
    TIMResult res = TencentIMSDK.Login(userid, user_sig, (int code, string desc, string json_param, string user_data)=>{
    // 处理登陆回调逻辑
    });

    获取登录用户

    在登录成功后,通过调用GetLoginUserID(Details) 获取登录用户 UserID。 如果登录失败,获取的登录用户 UserID 为空。
    示例代码如下:
    public static void GetLoginUserID()
    {
    StringBuilder userId = new StringBuilder(128);
    
    TIMResult res = TencentIMSDK.GetLoginUserID(userId);
    
    Debug.Log(userId.ToString());
    }

    获取登录状态

    通过调用GetLoginStatus(Details) 获取登录状态,如果用户已经处于已登录和登录中状态,请勿再频繁调用登录接口登录。IM SDK 支持的登录状态,如下表所示:
    登录状态
    含义
    kTIMLoginStatus_Logined
    已登录
    kTIMLoginStatus_Logining
    登录中
    kTIMLoginStatus_Logouting
    登出中
    kTIMLoginStatus_UnLogined
    未登录
    示例代码如下:
    public static void GetLoginStatus()
    {
    TIMLoginStatus res = TencentIMSDK.GetLoginStatus();
    }

    多端登录与互踢

    您可以在腾讯云控制台配置 IM SDK 的多端登录策略。 多端登录策略有多种可选,例如“移动或桌面平台可有1种平台在线+Web可同时在线”、“不同平台均可同时在线“。 相关配置请参考:登录设置
    您可以在腾讯云控制台配置 IM SDK 的同平台可登录实例数配置,即相同平台的设备可支持几个同时在线。 此功能仅限旗舰版使用。目前 Web 端可同时在线个数最多为 10 个。Android、iPhone、iPad、Windows、Mac(Flutter以实际编译结果为准) 平台可同时在线设备个数最多为 3 个。 相关配置请参考:登录设置
    调用 Login(Details) 接口时,如果同一个帐号的多端登录策略超出限制,新登录的实例会把之前已登录的实例踢下线。 被踢下线的一方,会收到 KickedOfflineCallback(Details) 回调。

    登出

    普通情况下,如果您的应用生命周期跟 IM SDK 生命周期一致,退出应用前可以不登出,直接退出即可。 但有些特殊场景,例如您只在进入特定界面后才使用 IM SDK,退出界面后不再使用,此时可以调用Logout(Details) 接口登出 SDK。登出成功后,不会再收到其他人发送的新消息。注意这种情况下,登出成功后还需要调 Uninit(Details) 对 SDK 进行反初始化。
    示例代码如下:
    public static void Logout()
    {
    TIMResult res = TencentIMSDK.Logout((int code, string desc, string json_param, string user_data)=>{
    // 处理登出回调逻辑
    });
    }

    帐号切换

    如果您希望在应用中实现帐号切换的需求,只需要每次切换帐号时调用 Login(Details) 即可。
    例如已经登录了 alice,现在要切换到 bob,只需要直接 Login bob 即可。Login bob 前无需显式调用 logout alice,IM SDK 内部会自动处理。
    

    常见问题

    

    1. 在调用登录等其他接口时,发生错误,返回错误码是 6013 和错误描述是 "not initialized" 的信息。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持