hrxiang 4 years ago
parent 3bcc338945
commit c8a895e925
  1. 12
      android/build.gradle
  2. 13
      android/src/main/java/io/openim/flutter_openim_sdk/manager/MessageManager.java
  3. 7
      android/src/main/java/io/openim/flutter_openim_sdk/util/CommonUtil.java
  4. 2
      lib/src/enum/message_type.dart
  5. 2
      lib/src/listener/advanced_msg_listener.dart
  6. 13
      lib/src/manager/im_manager.dart
  7. 35
      lib/src/manager/im_message_manager.dart
  8. 52
      lib/src/models/message.dart

@ -7,8 +7,8 @@ buildscript {
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
// maven { url 'http://47.112.160.66:8081/repository/maven-releases'} maven { url 'http://47.112.160.66:8081/repository/maven-releases'}
maven { url 'http://127.0.0.1:8081/repository/maven-releases' } // maven { url 'http://127.0.0.1:8081/repository/maven-releases' }
google() google()
mavenCentral() mavenCentral()
} }
@ -24,8 +24,8 @@ rootProject.allprojects {
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/google' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' } maven { url 'http://maven.aliyun.com/nexus/content/repositories/gradle-plugin' }
// maven { url 'http://47.112.160.66:8081/repository/maven-releases'} maven { url 'http://47.112.160.66:8081/repository/maven-releases'}
maven { url 'http://127.0.0.1:8081/repository/maven-releases' } // maven { url 'http://127.0.0.1:8081/repository/maven-releases' }
google() google()
mavenCentral() mavenCentral()
} }
@ -45,6 +45,6 @@ android {
} }
} }
dependencies { dependencies {
implementation 'io.openim:client:0.0.7@aar' // implementation 'io.openim:client:0.0.7@aar'
// implementation 'io.openim:client-sdk:1.0.0@aar'//graoupId:artifactId:version@aar implementation 'io.openim:client-sdk:0.0.2@aar'//graoupId:artifactId:version@aar
} }

@ -54,7 +54,7 @@ public class MessageManager {
} }
public void deleteMessages(MethodCall methodCall, MethodChannel.Result result) { public void deleteMessages(MethodCall methodCall, MethodChannel.Result result) {
// Open_im_sdk.deleteMessages(new BaseImpl(result), CommonUtil.getSDKJsonParam(methodCall)); // Open_im_sdk.deleteMessages(new BaseListener(result), CommonUtil.getSDKJsonParam(methodCall));
} }
public void insertSingleMessageToLocalStorage(MethodCall methodCall, MethodChannel.Result result) { public void insertSingleMessageToLocalStorage(MethodCall methodCall, MethodChannel.Result result) {
@ -65,7 +65,7 @@ public class MessageManager {
} }
public void findMessages(MethodCall methodCall, MethodChannel.Result result) { public void findMessages(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.findMessages(new BaseListener(result), CommonUtil.getFindMessageIds(methodCall)); Open_im_sdk.findMessages(new BaseListener(result), CommonUtil.getMessageIdList(methodCall));
} }
public void markSingleMessageHasRead(MethodCall methodCall, MethodChannel.Result result) { public void markSingleMessageHasRead(MethodCall methodCall, MethodChannel.Result result) {
@ -77,7 +77,14 @@ public class MessageManager {
} }
public void markC2CMessageAsRead(MethodCall methodCall, MethodChannel.Result result) { public void markC2CMessageAsRead(MethodCall methodCall, MethodChannel.Result result) {
// Open_im_sdk.markC2CMessageAsRead(new BaseImpl(result), CommonUtil.getSingleMessageUserid(methodCall)); Open_im_sdk.markC2CMessageAsRead(new BaseListener(result),
CommonUtil.getSingleMessageUserid(methodCall),
CommonUtil.getMessageIdList(methodCall));
}
public void typingStatusUpdate(MethodCall methodCall, MethodChannel.Result result) {
Open_im_sdk.typingStatusUpdate(CommonUtil.getSingleMessageUserid(methodCall),
CommonUtil.getSingleMessageTyping(methodCall));
} }
public void createTextMessage(MethodCall methodCall, MethodChannel.Result result) { public void createTextMessage(MethodCall methodCall, MethodChannel.Result result) {

@ -199,7 +199,11 @@ public class CommonUtil {
return getParamValue(methodCall, KEY_SINGLE_MESSAGE_SENDER); return getParamValue(methodCall, KEY_SINGLE_MESSAGE_SENDER);
} }
public static String getFindMessageIds(MethodCall methodCall) { public static String getSingleMessageTyping(MethodCall methodCall) {
return getParamValue(methodCall, KEY_SINGLE_MESSAGE_TYPING);
}
public static String getMessageIdList(MethodCall methodCall) {
return getSDKJsonParam(methodCall, KEY_FIND_MESSAGE_IDS); return getSDKJsonParam(methodCall, KEY_FIND_MESSAGE_IDS);
} }
@ -288,6 +292,7 @@ public class CommonUtil {
final static String KEY_SINGLE_MESSAGE_CONTENT = "message"; final static String KEY_SINGLE_MESSAGE_CONTENT = "message";
final static String KEY_SINGLE_MESSAGE_USERID = "userID"; final static String KEY_SINGLE_MESSAGE_USERID = "userID";
final static String KEY_SINGLE_MESSAGE_SENDER = "sender"; final static String KEY_SINGLE_MESSAGE_SENDER = "sender";
final static String KEY_SINGLE_MESSAGE_TYPING = "typing";
//group chat //group chat
final static String KEY_GROUP_MESSAGE_GROUPID = "groupID"; final static String KEY_GROUP_MESSAGE_GROUPID = "groupID";
// find message // find message

@ -9,7 +9,7 @@ class MessageType {
static const merger = 107; static const merger = 107;
static const revoke = 111; static const revoke = 111;
static const has_read_receipt = 112; static const has_read_receipt = 112;
static const typing = 112; static const typing = 113;
/// ///
static const accept_friend = 201; static const accept_friend = 201;

@ -9,7 +9,7 @@ class AdvancedMsgListener {
void onRecvNewMessage(Message msg) {} void onRecvNewMessage(Message msg) {}
void onRecvC2CReadReceipt(Message msg) {} void onRecvC2CReadReceipt(HaveReadInfo info) {}
void onRecvMessageRevoked(String msgId) {} void onRecvMessageRevoked(String msgId) {}
} }

@ -1,4 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_openim_sdk/flutter_openim_sdk.dart'; import 'package:flutter_openim_sdk/flutter_openim_sdk.dart';
@ -138,11 +139,11 @@ class IMManager {
} else if (call.method == ListenerType.advancedMsgListener) { } else if (call.method == ListenerType.advancedMsgListener) {
var type = call.arguments['type']; var type = call.arguments['type'];
var id = call.arguments['data']['id']; var id = call.arguments['data']['id'];
var value = call.arguments['data']['message'];
log('====================type:$type $value');
switch (type) { switch (type) {
case 'onRecvNewMessage': case 'onRecvNewMessage':
var msg = Message.fromJson( var msg = Message.fromJson(_formatJson(value));
_formatJson(call.arguments['data']['message']));
for (var listener in messageManager.advancedMsgListeners) { for (var listener in messageManager.advancedMsgListeners) {
if (listener.id == id) { if (listener.id == id) {
listener.onRecvNewMessage(msg); listener.onRecvNewMessage(msg);
@ -150,17 +151,17 @@ class IMManager {
} }
break; break;
case 'onRecvMessageRevoked': case 'onRecvMessageRevoked':
var msgId = call.arguments['data']['message'];
for (var listener in messageManager.advancedMsgListeners) { for (var listener in messageManager.advancedMsgListeners) {
if (listener.id == id) { if (listener.id == id) {
listener.onRecvMessageRevoked(msgId); listener.onRecvMessageRevoked(value);
} }
} }
break; break;
case 'onRecvC2CReadReceipt': case 'onRecvC2CReadReceipt':
var info = HaveReadInfo.fromJson(_formatJson(value));
for (var listener in messageManager.advancedMsgListeners) { for (var listener in messageManager.advancedMsgListeners) {
if (listener.id == id) { if (listener.id == id) {
listener.onRecvC2CReadReceipt(Message()); listener.onRecvC2CReadReceipt(info);
} }
} }
break; break;

@ -36,7 +36,7 @@ class MessageManager {
} }
/// send a message to user or to group /// send a message to user or to group
/// /// userID: receiver's user ID
Future<dynamic> sendMessage({ Future<dynamic> sendMessage({
required Message message, required Message message,
String? userID, String? userID,
@ -55,6 +55,7 @@ class MessageManager {
} }
/// find all history message /// find all history message
/// userID: the user id of the chat partner
Future<List<Message>> getHistoryMessageList({ Future<List<Message>> getHistoryMessageList({
String? userID, String? userID,
String? groupID, String? groupID,
@ -93,6 +94,8 @@ class MessageManager {
} }
/// ///
/// @params userID: receiver's user ID
/// @params sender: current user ID
Future insertSingleMessageToLocalStorage({ Future insertSingleMessageToLocalStorage({
String? userID, String? userID,
Message? message, Message? message,
@ -117,6 +120,7 @@ class MessageManager {
} }
/// ///
/// @params userID: receiver's userID
Future<dynamic> markSingleMessageHasRead({required String userID}) { Future<dynamic> markSingleMessageHasRead({required String userID}) {
return _channel.invokeMethod( return _channel.invokeMethod(
'markSingleMessageHasRead', _buildParam({'userID': userID})); 'markSingleMessageHasRead', _buildParam({'userID': userID}));
@ -128,6 +132,35 @@ class MessageManager {
'markGroupMessageHasRead', _buildParam({'groupID': groupID})); 'markGroupMessageHasRead', _buildParam({'groupID': groupID}));
} }
///
/// @params userID: receiver's user ID
Future markC2CMessageAsRead({
required String userID,
required List<String> messageIDList,
}) {
return _channel.invokeMethod(
'markC2CMessageAsRead',
_buildParam({
"messageIDList": messageIDList,
"userID": userID,
}));
}
///
/// @params userID: receiver's user ID
/// @params status: default no
Future typingStatusUpdate({
required String userID,
bool typing = false,
}) {
return _channel.invokeMethod(
'typingStatusUpdate',
_buildParam({
"typing": typing ? 'yes' : 'no',
"userID": userID,
}));
}
/// ///
Future<Message> createTextMessage({required String text}) { Future<Message> createTextMessage({required String text}) {
return _channel return _channel

@ -368,43 +368,41 @@ class AtElem {
} }
} }
class RevokeMessage { class HaveReadInfo {
String? serverMsgID; String? uid;
String? sendID; List<String>? msgIDList;
String? senderNickname; int? readTime;
String? recvID; int? msgFrom;
String? groupID;
int? contentType; int? contentType;
int? sendTime; int? sessionType;
RevokeMessage( HaveReadInfo(
{this.serverMsgID, {this.uid,
this.sendID, this.msgIDList,
this.senderNickname, this.readTime,
this.recvID, this.msgFrom,
this.groupID,
this.contentType, this.contentType,
this.sendTime}); this.sessionType});
RevokeMessage.fromJson(Map<String, dynamic> json) { HaveReadInfo.fromJson(Map<String, dynamic> json) {
serverMsgID = json['serverMsgID']; uid = json['uid'];
sendID = json['sendID']; if (json['msgIDList'] is List) {
senderNickname = json['senderNickname']; msgIDList = (json['msgIDList'] as List).map((e) => '$e').toList();
recvID = json['recvID']; }
groupID = json['groupID']; readTime = json['readTime'];
msgFrom = json['msgFrom'];
contentType = json['contentType']; contentType = json['contentType'];
sendTime = json['sendTime']; sessionType = json['sessionType'];
} }
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>(); final Map<String, dynamic> data = new Map<String, dynamic>();
data['serverMsgID'] = this.serverMsgID; data['uid'] = this.uid;
data['sendID'] = this.sendID; data['msgIDList'] = this.msgIDList;
data['senderNickname'] = this.senderNickname; data['readTime'] = this.readTime;
data['recvID'] = this.recvID; data['msgFrom'] = this.msgFrom;
data['groupID'] = this.groupID;
data['contentType'] = this.contentType; data['contentType'] = this.contentType;
data['sendTime'] = this.sendTime; data['sessionType'] = this.sessionType;
return data; return data;
} }
} }

Loading…
Cancel
Save