融云之单聊集成
博客专区 > dahuig 的博客 > 博客详情
融云之单聊集成
dahuig 发表于2年前
融云之单聊集成
  • 发表于 2年前
  • 阅读 60
  • 收藏 1
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 本人因项目需求,自学融云集成单聊功能,以下是我写的融云集成步骤,分享给大家参考,为以后的开发地带来方便,在此大辉祝大家工作顺心!(如有复制请先联系本人,待同意后复制!欢迎转载)

特此声明 需要去 IMKit 工程里面 AndroidManifest.xml(清单文件)里面填写获取到的 融云AppKey值(这样可以聊天 发照片 语音 不能定位,定位需要自己写) [如有错误,请大家指正]

1.下载sdk IMKit 下载
2.将下载的sdk放入studio File-->Project struucture -->Module 依赖添加工程 3.在继承Application 中初始化 4.连接服务器(需要用到的Activity里面)在API调试里面获取token "NVqYP4aRusKqCD05dS7D1D5DvTAYKzdFvNaBCVbVbd8sfqh0YfEbFmVg1CnkkgkOnhR5PeoOv96HTeICP6532A==" 5.配置会话列表(创建ConversationActivity ) 6.在调用的Activity里面 调用的地方(监听)进行会话调用

//初始化
	public class App extends Application {

@Override
public void onCreate() {

    super.onCreate();

    /**
     * OnCreate 会被多个进程重入,这段保护代码,确保只有您需要使用 RongIM 的进程和 Push 进程执行了 init。
     * io.rong.push 为融云 push 进程名称,不可修改。
     */
    if (getApplicationInfo().packageName.equals(getCurProcessName(getApplicationContext())) ||
            "io.rong.push".equals(getCurProcessName(getApplicationContext()))) {

        /**
         * IMKit SDK调用第一步 初始化
         */
        RongIM.init(this);
    }
}

/**
 * 获得当前进程的名字
 *
 * @param context
 * @return 进程号
 */
public static String getCurProcessName(Context context) {

    int pid = android.os.Process.myPid();

    ActivityManager activityManager = (ActivityManager) context
            .getSystemService(Context.ACTIVITY_SERVICE);

    for (ActivityManager.RunningAppProcessInfo appProcess : activityManager
            .getRunningAppProcesses()) {

        if (appProcess.pid == pid) {
            return appProcess.processName;
        }
    }
    return null;
}

}

关于初始化的注意事项

4.连接服务器(需要用到的Activity里面)

/**
  • 建立与融云服务器的连接
  • @param token */ private void connect(String token) {
if (getApplicationInfo().packageName.equals(App.getCurProcessName(getApplicationContext()))) {

    /**
     * IMKit SDK调用第二步,建立与服务器的连接
     */
    RongIM.connect(token, new RongIMClient.ConnectCallback() {

        /**
         * Token 错误,在线上环境下主要是因为 Token 已经过期,您需要向 App Server 重新请求一个新的 Token
         */
        @Override
        public void onTokenIncorrect() {

            Log.d("LoginActivity", "--onTokenIncorrect");
        }

        /**
         * 连接融云成功
         * @param userid 当前 token
         */
        @Override
        public void onSuccess(String userid) {

            Log.d("LoginActivity", "--onSuccess" + userid);
            startActivity(new Intent(LoginActivity.this, MainActivity.class));
            finish();
        }

        /**
         * 连接融云失败
         * @param errorCode 错误码,可到官网 查看错误码对应的注释
         */
        @Override
        public void onError(RongIMClient.ErrorCode errorCode) {

            Log.d("LoginActivity", "--onError" + errorCode);
        }
    });
}

}

5.配置会话列表:(创建ConversationActivity ) public class ConversationActivity extends FragmentActivity {

/**

  • 目标 Id */ private String mTargetId;
/**
 * 刚刚创建完讨论组后获得讨论组的id 为targetIds,需要根据 为targetIds 获取 targetId
 */
private String mTargetIds;

/**
 * 会话类型
 */
private Conversation.ConversationType mConversationType;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.conversation);
}

} 布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">

<fragment
    android:id="@+id/conversation"
    android:name="io.rong.imkit.fragment.ConversationFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</LinearLayout>

在清单文件里面进行注册 <!--会话界面--> <activity android:name="io.rong.fast.activity.ConversationActivity" android:screenOrientation="portrait" android:windowSoftInputMode="stateHidden|adjustResize">

 <intent-filter>
     <action android:name="android.intent.action.VIEW" />

     <category android:name="android.intent.category.DEFAULT" />

     <data
         android:host="io.rong.fast"
         android:pathPrefix="/conversation/"
         android:scheme="rong" />
 </intent-filter>

</activity>

6.在调用的Activity里面 调用的地方(监听)进行会话调用 /** * 启动单聊 * context - 应用上下文。 * targetUserId - 要与之聊天的用户 Id。 * title - 聊天的标题,如果传入空值,则默认显示与之聊天的用户名称。 */
if (RongIM.getInstance() != null) {
RongIM.getInstance().startPrivateChat(MainActivity.this, “2462″, “hello”);
}

共有 人打赏支持
粉丝 0
博文 1
码字总数 737
×
dahuig
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: