如何正确的初始化

初始化的正确姿势
发布时间: 2015-07-21 16:53

回答:

一 核心类说明

 a. 使用 IMKit SDK, 核心类为 RongIM。

 b. 使用 IMLib SDK, 核心类为 RongIMClient

调用任何 API 方法(包括初始化)时,请务必确保通过对应的核心类进行调用,否则会导致异常。

二 初始化时机

 a. 在应用 **主进程** 中,初始化一次即可。

 b. 快速集成时,推荐在 Application 的 onCreate() 复写方法中初始化 SDK。

 c. 鉴于大部分正式应用,根据工信部要求,会有用户隐私协议页面,您也可以在用户接受隐私协议后再初始化。

三 示例代码

下面代码示范了如果在用户接受隐私协议后再初始化 SDK,以使用 IMKit SDK 为例。

如果您使用的是 IMlib SDK, 请将示例代码中的 RongIM 替换为 RongIMClient.

/**
 * 应用启动时,判断用户是否已接受隐私协议,如果已接受,正常初始化;否则跳转到隐私授权页面请求用户授权。
 */
 public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        //伪代码,从 sp 里读取用户是否已接受隐私协议
        boolean isPrivacyAccepted = getPrivacyStateFromSp();
        //用户已接受隐私协议,进行初始化
        if (isPrivacyAccepted) {
            String appKey = "融云开发者后台创建的应用的 AppKey";
            //第一个参数必须传应用上下文
            RongIM.init(this.getApplicationContext(), appKey);
        } else {
            //用户未接受隐私协议,跳转到隐私授权页面。
            goToPrivacyActivity();
        }
        ...
    }}
    
/**
 * 该类为隐私授权页面,示范如何在用户接受隐私协议后进行 IM 初始化。
 */
 public class PrivacyActivity extends Activity implements View.OnClickListener {
    ...
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.accept_privacy:
                //伪代码,保存到 sp
                savePrivacyStateToSp();

                String appKey = "融云开发者后台创建的应用的 AppKey";
                //第一个参数必须传应用上下文
                RongIM.init(this.getApplicationContext(), appKey);
                break;
            default:
                ...
        }
    }}