特此声明 需要去 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);
}
} 布局
android:id="@+id/conversation"
android:name="io.rong.imkit.fragment.ConversationFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />
在清单文件里面进行注册
android:host="io.rong.fast"
android:pathPrefix="/conversation/"
android:scheme="rong" />
6.在调用的Activity里面 调用的地方(监听)进行会话调用 /** * 启动单聊 * context - 应用上下文。 * targetUserId - 要与之聊天的用户 Id。 * title - 聊天的标题,如果传入空值,则默认显示与之聊天的用户名称。 */
if (RongIM.getInstance() != null) {
RongIM.getInstance().startPrivateChat(MainActivity.this, “2462″, “hello”);
}