前提条件 集成极光IM
一、发送消息
发送消息必须先登录
注册账号
/**
* 极光注册账号
*
* @param phone
* @param pwd
*/
private void iMRegister(String phone, String pwd) {
JMessageClient.register(phone, pwd, new BasicCallback() {
@Override
public void gotResult(int i, String s) {
if (0 == i) {//成功
Toast.makeText(ChatActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
} else {//失败
Toast.makeText(ChatActivity.this, "注册失败", Toast.LENGTH_SHORT).show();
}
}
});
}
登录
JMessageClient.login(phone, pwd, new BasicCallback() {
@Override
public void gotResult(int i, String s) {
if (0 == i) {//成功
Toast.makeText(ChatActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
} else {//失败
Toast.makeText(ChatActivity.this, "登录失败", Toast.LENGTH_SHORT).show();
}
}
});
发送消息
private void sendMessage(String phone, String content) {
Message message = JMessageClient.createSingleTextMessage(phone, "app_key", content);
if (message == null) {
return;
} else {
//设置发送完成回调
message.setOnSendCompleteCallback(new BasicCallback() {
@Override
public void gotResult(int i, String s) {
if (i == 0) {
//发送成功回调
} else {
//发送失败
}
}
});
JMessageClient.sendMessage(message);
}
}
二、接受消息
在当前接受消息的activity或fragment注册绑定
JMessageClient.registerEventReceiver(this);
解绑防止内存泄漏
@Override
protected void onDestroy() {
super.onDestroy();
//解绑极光接受消息
JMessageClient.unRegisterEventReceiver(this);
}
接收消息
/**
* 主线程接收在线消息
**/
public void onEventMainThread(MessageEvent event) {
//获取事件发生的会话对象
Message newMessage = event.getMessage();//获取此次离线期间会话收到的新消息列表
String s = newMessage.getContent().toJson();
try {
JSONObject object = new JSONObject(s);
String text = object.getString("text");
//text是发送的内容
} catch (JSONException e) {
e.printStackTrace();
}
}
/**
* 接收离线消息。
* 类似MessageEvent事件的接收,上层在需要的地方增加OfflineMessageEvent事件的接收
* 即可实现离线消息的接收。
**/
public void onEventMainThread(OfflineMessageEvent event) {
//获取事件发生的会话对象
Conversation conversation = event.getConversation();
List<Message> newMessageList = event.getOfflineMessageList();//获取此次离线期间会话收到的新消息列表
//获取事件发生的会话对象
for (int i = 0; i < newMessageList.size(); i++) {
String s = newMessageList.get(i).getContent().toJson();
try {
JSONObject object = new JSONObject(s);
String text = object.getString("text");
//text是发送的内容
} catch (JSONException e) {
e.printStackTrace();
}
}
}
完