初始化和登录

更新时间: 2024/07/26 13:39:23

在使用 IM UIKit(V10)功能前,您需要先对其进行初始化,但不需要对 NIM SDK 单独初始化。

IM UIKit 的核心类为 IMKitClient,提供初始化、登录、获取当前账号信息等能力。

前提条件

根据本文操作前,请确保您已完成了以下工作:

  • 已完成 导入组件

  • 注册网易云信 IM 账号,获取 account_id 和 Token。

  • 如果需要实现 地理位置消息 功能(基于高德地图),还需确保已在 AndroidManifest.xml 为您的应用配置:

    单击查看高德地图 API Key 和 定位服务(APSService)配置方式。
    xml<!-- 高德地图定位 -->
    //在您的 applicaion 节点中配置 apiKey 和 APSService
    <application android:name=".IMApplication">
        <meta-data
            android:name="com.amap.api.v2.apikey"
            android:value="apikey" /> // 传入您的高德地图 API Key
        <service android:name="com.amap.api.location.APSService" />
    </application>
    

    高德地图 API Key 的具体获取方式,请访问 高德开放平台文档

注意事项

由于 IM UIKit 的初始化与登录是通过底层调用 NIM SDK 接口来实现的,因此重复调用 IM UIKit 和 NIM SDK 的初始化与登录接口会相互覆盖传入的信息(包括 推送配置信息)。

所以若您同时集成 IM UIKit 和 NIM SDK,只需要调用一次初始化与登录接口即可。

初始化(简化方式)

IM UIKit 的初始化,最简单的实现方式为:在应用启动时或者页面加载时,都可以调用 IMKitClient.init 方法。

初始化必须在应用的生命周期内或者 Activity 中都可以进行,且只可进行一次。

  • 方法原型

    javaIMKitClient.init(Context context,SDKOptions options)
    
  • 参数说明

    参数
    类型
    说明
    context Context 应用上下文
    options SDKOptions SDK 的配置信息。
    其中 App Key 必须传入如果您的应用主要服务于 海外用户,需要配置私有化服务器地址中的 LBS 和 link 域名相关信息,具体参考 配置 LBS 和 Link 域名
  • 示例代码

    javapublic class IMApplication extends MultiDexApplication {
    
        private static final String TAG = "IMApplication";
    
        @Override
        public void onCreate() {
            SDKOptions options = new SDKOptions();
            options.appKey = "App Key";
            IMKitClient.init(this,options);
            //如果使用地图消息组件 locationkit,则需要初始化该组件
                // 地图组件初始化
                LocationConfig locationConfig = new LocationConfig();
                // 高德地图 web API KEY,用于位置消息生成图片(高德提供服务,需要您自己创建 web 服务)
                // 位置消息展示方案,参考高德静态地图文档,文档地图如下
                locationConfig.aMapWebServerKey = "web api key";
                LocationKitClient.init(this, locationConfig);
    
        }
    
    }
    

登录

初始化完成之后,进行网易云信 IM 登录,登录成功之后所有功能即可使用 IM UIKit 的初始化,最简单的实现方式为:在应用启动时或者页面加载时,都可以调用 IMKitClient.init 方法。

  • 方法原型

    javaIMKitClient.login(String account, String token, V2NIMLoginOption option,FetchCallback<Void> callback)
    
  • 参数说明

    参数
    类型
    说明
    account String IM 账号 ID
    token String IM 账号鉴权 token,token 的获取请参考登录 IM
    options V2NIMLoginOption 登录的配置信息
  • 示例代码

    java    public class MainActivity extends Activity {
    
        private static final String TAG = "IMApplication";
    
        @Override
        public void onCreate() {
    
            String acctount = "";//账号 ID
            String token = ""; //token
            IMKitClient.login(account,token,null,new FetchCallback<Void>() {
            @Override
            public void onError(int errorCode, @NonNull String errorMsg) {
                // 登录失败
            }
    
            @Override
            public void onSuccess(@Nullable Void data) {
                // 登录成功
            }
            });
    
        }
    
    }
    

初始化最佳实践

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

参考流程如下:

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

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

    javapublic class PrivacyActivity extends Activity {
    
          private void agreePrivacy(){
          //当用户同意隐私协议,则调用初始化接口
             SDKOptions options = new SDKOptions();
            //填入 App Key
            options.appKey = "App Key";
            IMKitClient.init(this,options);
    
          }
    }
    

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

后续步骤

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

此文档是否对你有帮助?
有帮助
去反馈
  • 前提条件
  • 注意事项
  • 初始化(简化方式)
  • 登录
  • 初始化最佳实践
  • 后续步骤