初始化

更新时间: 2024/03/15 18:26:23

在使用圈组 UIKit 功能前,必须先对其进行初始化,无需对 NIM SDK 单独初始化。

圈组 UIKit 核心类 QChatKitClient,提供初始化、登录、获取当前账号信息等能力。

前提条件

实现流程

  1. 圈组 UIKit 的初始化,最简单的实现方式为:在应用启动时,调用 QChatKitClient.init 方法。

初始化必须在应用的生命周期内进行,且只可进行一次。初始化传入登录参数,只能完成 IM 相关登录,圈组功能需要进行手动登录,功能方可使用

  • 方法原型

    javaQChatKitClient.init(Context context,LoginInfo info,SDKOptions options)
    
  • 参数说明

    参数
    类型
    说明
    context Context 应用上下文
    info LoginInfo 需要传入 IM 账号(即accid) 和 token,同时可设置登录鉴权模式
    options SDKOptions SDK 的配置信息。
    其中 App Key 必须传入如果您的应用主要服务于海外用户,需要配置私有化服务器地址中的 LBS 和 link 域名相关信息,具体参见配置 LBS 和 Link 域名
  • 示例代码

    javapublic class QChatApplication extends MultiDexApplication {
        
        @Override
        public void onCreate() {
            SDKOptions options = new SDKOptions();
            options.appKey = "App Key";
            QChatKitClient.init(this,null,options);
        }
    
    }
    
  1. 登录圈组 UIKit 的初始化之后,进行 IM 和圈组登录。登录逻辑可以放在您的登录页面或者启动页面中进行。保证圈组和 IM 功能或者页面加载之前完成登录。
  • 方法原型

    javaQChatKitClient.loginIMWithQChat(LoginInfo info,LoginCallback<QChatLoginResult> callback)
    
  • 参数说明

    参数
    类型
    说明
    info LoginInfo 需要传入 IM 账号(即accid) 和 token,同时可设置登录鉴权模式
    callback LoginCallback<QChatLoginResult> 登录结果异步回调,如果成功会回调相关的登录信息
  • 示例代码

    在您的自己的登录页面,或者是首页 Activity 完成登录后,才能使用 IM 和圈组功能。

    javaLoginInfo loginInfo =
            LoginInfo.LoginInfoBuilder.loginInfoDefault(account, token)
                .withAppKey(appKey)
                .build();
    
    QChatKitClient.loginIMWithQChat(
            loginInfo,
            new LoginCallback<QChatLoginResult>() {
              @Override
              public void onError(int errorCode, @NonNull String errorMsg) {
                // 登录异常
              }
    
              @Override
              public void onSuccess(@Nullable QChatLoginResult data) {
                // 登录成功
              }
            });
    

最佳实践

用户首次打开应用,需要接受应用的隐私协议,以保证业务隐私合规。因此建议在用户接受隐私协议之后再进行初始化。

参考流程如下:

  1. 在 Application 中进行初始化和隐私协议判断。

    javapublic class QChatApplication extends MultiDexApplication {
    
        @Override
        public void onCreate() {
        
            //获取用户是否同意隐私协议,getPrivacyStatus()需要自己实现,在用户同意的时候本地保存,然后这里进行读取。
            bool agreePrivacy = getPrivacyStatus();
            SDKOptions options = new SDKOptions();
            //填入App Key
            options.appKey = "App Key";
            
            if(agreePrivacy){
              QChatKitClient.init(this,loginInfo,options);
            }else {
              //采用config方式,仅仅是配置,不影响性能
              QChatKitClient.config(this,loginInfo,options);
            }
        
        }
        
    }
    
    
  2. 如果用户没有同意隐私协议,则自行实现相关页面跳转逻辑和目标页面,例如跳转到隐私协议授权页面PrivacyActivity

    javapublic class PrivacyActivity extends Activity {
    
          private void agreePrivacy(){
          //当用户同意隐私协议,则调用初始化接口
            QChatKitClient.initSDK();
            
          }
    }
    

    上述示例代码中PrivacyActivityagreePrivacy()仅为示例名称,相应的逻辑需要开发者自行实现。

后续步骤

为保障通信安全,如果您在调试环境中的使用的是云信控制台生成的 IM 账号(测试用),请确保在后续的正式生产环境中,将其替换为通过 IM 服务端 API 生成的正式 IM 账号。

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 实现流程
  • 最佳实践
  • 后续步骤