Skip to content

支持创建视频消息,新增清空聊天记录api,修复bug #152

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions android/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>android__</name>
<comment>Project android__ created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>
13 changes: 13 additions & 0 deletions android/.settings/org.eclipse.buildship.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
java.home=/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
jvm.arguments=
offline.mode=false
override.workspace.settings=true
show.console.view=true
show.executions.view=true
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
import java.util.List;
import java.util.Map;

import cn.jmessage.support.google.gson.Gson;
import cn.jmessage.support.google.gson.GsonBuilder;
import cn.jmessage.support.google.gson.JsonObject;
import cn.jmessage.support.google.gson.JsonParser;
import cn.jpush.im.android.api.ContactManager;
import cn.jpush.im.android.api.JMessageClient;
import cn.jpush.im.android.api.callback.CreateGroupCallback;
Expand Down Expand Up @@ -190,6 +194,8 @@ public void onMethodCall(MethodCall call, Result result) {
getMessageById(call, result);
} else if (call.method.equals("deleteMessageById")) {
deleteMessageById(call, result);
} else if (call.method.equals("deleteAllMessage")) {
deleteAllMessage(call, result);
} else if (call.method.equals("sendInvitationRequest")) {
sendInvitationRequest(call, result);
} else if (call.method.equals("acceptInvitation")) {
Expand Down Expand Up @@ -252,6 +258,8 @@ public void onMethodCall(MethodCall call, Result result) {
downloadVoiceFile(call, result);
} else if (call.method.equals("downloadFile")) {
downloadFile(call, result);
} else if (call.method.equals("downloadVideoFile")) {
downloadVideoFile(call, result);
} else if (call.method.equals("createConversation")) {
createConversation(call, result);
} else if (call.method.equals("deleteConversation")) {
Expand Down Expand Up @@ -312,8 +320,8 @@ public void onMethodCall(MethodCall call, Result result) {
setMessageHaveRead(call, result);
} else if (call.method.equals("sendVideoMessage")) {
sendVideoMessage(call, result);
} else if(call.method.equals("getMessageHaveReadStatus")){
getMessageHaveReadStatus(call,result);
} else if (call.method.equals("getMessageHaveReadStatus")) {
getMessageHaveReadStatus(call, result);
} else {
result.notImplemented();
}
Expand Down Expand Up @@ -691,9 +699,10 @@ public void gotResult(int status, String desc, Bitmap bitmap) {
private void setConversationExtras(MethodCall call, Result result) {
HashMap<String, Object> map = call.arguments();
Conversation conversation;
JSONObject extra = null;
String extra = null;

try {
Gson gson = new Gson();
JSONObject params = new JSONObject(map);
conversation = JMessageUtils.getConversation(params);

Expand All @@ -703,15 +712,16 @@ private void setConversationExtras(MethodCall call, Result result) {
}

if (params.has("extras")) {
extra = params.getJSONObject("extras");
extra = gson.toJson(map.get("extras"));
}
} catch (JSONException e) {
e.printStackTrace();
handleResult(ERR_CODE_PARAMETER, ERR_MSG_PARAMETER, result);
return;
}

String extraStr = extra == null ? "" : extra.toString();
String extraStr = extra == null ? "" : extra;
Log.d(TAG, "setConversationExtras: " + extraStr);
conversation.updateConversationExtra(extraStr);
handleResult(toJson(conversation), 0, null, result);
}
Expand Down Expand Up @@ -771,6 +781,34 @@ private void createMessage(MethodCall call, Result result) {
String address = params.getString("address");
content = new LocationContent(latitude, longitude, scale, address);
break;
case "video":
String thumbImagePath = "", thumbFormat = "", videoPath, videoFileName = "";
videoPath = params.getString("videoPath");
if (params.has("thumbFormat")) {
thumbFormat = params.getString("thumbFormat");
}
if (params.has("thumbImagePath")) {
thumbImagePath = params.getString("thumbImagePath");
}
if (params.has("duration")) {
duration = params.getInt("duration");
} else {
mediaPlayer = MediaPlayer.create(mContext, Uri.parse(videoPath));
duration = mediaPlayer.getDuration() / 1000;
mediaPlayer.release();
}
if (params.has("videoFileName")) {
videoFileName = params.getString("videoFileName");
}

File videoFile = getFile(videoPath);

Bitmap bitmap = null;
if (!TextUtils.isEmpty(thumbImagePath)) {
bitmap = BitmapFactory.decodeFile(thumbImagePath);
}
content = new VideoContent(bitmap, thumbFormat, videoFile, videoFileName, duration);
break;
default:
content = new CustomContent();
break;
Expand Down Expand Up @@ -1511,6 +1549,33 @@ private void deleteMessageById(MethodCall call, Result result) {
}
}

private void deleteAllMessage(MethodCall call, Result result) {
HashMap<String, Object> map = call.arguments();
Conversation conversation;
try {
JSONObject params = new JSONObject(map);
conversation = JMessageUtils.getConversation(params);
if (conversation == null) {
handleResult(ERR_CODE_CONVERSATION, "Can't get conversation", result);
return;
}
} catch (JSONException e) {
e.printStackTrace();
handleResult(ERR_CODE_PARAMETER, ERR_MSG_PARAMETER, result);
return;
}
boolean success = conversation.deleteAllMessage();

if (success) {
result.success(null);
} else {
HashMap error = new HashMap();
error.put("code", ERR_CODE_MESSAGE);
error.put("description", "no success");
result.error(ERR_CODE_MESSAGE + "", ERR_MSG_MESSAGE, "");
}
}

private void sendInvitationRequest(MethodCall call, final Result result) {
HashMap<String, Object> map = call.arguments();
String username, appKey, reason;
Expand Down Expand Up @@ -2288,26 +2353,32 @@ private void downloadThumbImage(MethodCall call, final Result result) {
return;
}

if (msg.getContentType() != ContentType.image) {
handleResult(ERR_CODE_MESSAGE, "Message type isn't image", result);
if (msg.getContentType() != ContentType.image && msg.getContentType() != ContentType.video) {
handleResult(ERR_CODE_MESSAGE, "Message type isn't image/video", result);
return;
}

ImageContent content = (ImageContent) msg.getContent();
content.downloadThumbnailImage(msg, new DownloadCompletionCallback() {
DownloadCompletionCallback cb = new DownloadCompletionCallback() {
@Override
public void onComplete(int status, String desc, File file) {
if (status == 0) {
HashMap res = new HashMap();
res.put("messageId", msg.getId());
res.put("filePath", file.getAbsolutePath());
handleResult(res, status, desc, result);

} else {
handleResult(status, desc, result);
}
}
});
};
if (msg.getContentType() == ContentType.image) {
ImageContent content = (ImageContent) msg.getContent();
content.downloadThumbnailImage(msg, cb);
} else {
VideoContent content = (VideoContent) msg.getContent();
content.downloadThumbImage(msg, cb);
}


}

private void downloadOriginalImage(MethodCall call, final Result result) {
Expand Down Expand Up @@ -2390,7 +2461,6 @@ public void onComplete(int status, String desc, File file) {
private void downloadFile(MethodCall call, final Result result) {
HashMap<String, Object> map = call.arguments();
final Message msg;

try {
JSONObject params = new JSONObject(map);
msg = JMessageUtils.getMessage(params);
Expand Down Expand Up @@ -2426,6 +2496,44 @@ public void onComplete(int status, String desc, File file) {
});
}

private void downloadVideoFile(MethodCall call, final Result result) {
HashMap<String, Object> map = call.arguments();
final Message msg;
try {
JSONObject params = new JSONObject(map);
msg = JMessageUtils.getMessage(params);
if (msg == null) {
handleResult(ERR_CODE_MESSAGE, ERR_MSG_MESSAGE, result);
return;
}
} catch (JSONException e) {
e.printStackTrace();
handleResult(ERR_CODE_PARAMETER, ERR_MSG_PARAMETER, result);
return;
}

if (msg.getContentType() != ContentType.video) {
handleResult(ERR_CODE_MESSAGE, "Message type isn't video", result);
return;
}

VideoContent content = (VideoContent) msg.getContent();
content.downloadVideoFile(msg, new DownloadCompletionCallback() {
@Override
public void onComplete(int status, String desc, File file) {
if (status == 0) {
HashMap res = new HashMap();
res.put("messageId", msg.getId());
res.put("filePath", file.getAbsolutePath());
handleResult(res, status, desc, result);

} else {
handleResult(status, desc, result);
}
}
});
}

private void createConversation(MethodCall call, Result result) {
HashMap<String, Object> map = call.arguments();
try {
Expand Down
16 changes: 10 additions & 6 deletions android/src/main/java/com/jiguang/jmessageflutter/JsonUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import java.util.List;
import java.util.Map;

import cn.jmessage.support.google.gson.Gson;
import cn.jmessage.support.google.gson.JsonElement;
import cn.jmessage.support.google.gson.JsonObject;
import cn.jmessage.support.google.gson.JsonParser;
Expand Down Expand Up @@ -437,13 +438,16 @@ static HashMap toJson(Conversation conversation) {
}

if (!TextUtils.isEmpty(conversation.getExtra())) {
HashMap extrasMap = new HashMap<String, Object>();
// HashMap extrasMap = new HashMap<String, Object>();
String extras = conversation.getExtra();
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(extras).getAsJsonObject();
for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
extrasMap.put(entry.getKey(), entry.getValue().toString());
}
// JsonParser parser = new JsonParser();
// JsonObject jsonObject = parser.parse(extras).getAsJsonObject();
// gson to map
Gson gson = new Gson();
HashMap extrasMap = gson.fromJson(extras, HashMap.class);
// for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
// extrasMap.put(entry.getKey(), entry.getValue());
// }
json.put("extras", extrasMap);
} else {
json.put("extras", new HashMap());
Expand Down
2 changes: 1 addition & 1 deletion example/.flutter-plugins-dependencies
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"image_picker","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\image_picker-0.7.5+2\\\\","dependencies":[]},{"name":"jmessage_flutter","path":"D:\\\\Workspace\\\\flutter\\\\jmessage-flutter-plugin\\\\","dependencies":[]},{"name":"modal_progress_hud_nsn","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\modal_progress_hud_nsn-0.1.0-nullsafety-1\\\\","dependencies":[]},{"name":"video_thumbnail","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\video_thumbnail-0.3.3\\\\","dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\flutter_plugin_android_lifecycle-2.0.1\\\\","dependencies":[]},{"name":"image_picker","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\image_picker-0.7.5+2\\\\","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"jmessage_flutter","path":"D:\\\\Workspace\\\\flutter\\\\jmessage-flutter-plugin\\\\","dependencies":[]},{"name":"modal_progress_hud_nsn","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\modal_progress_hud_nsn-0.1.0-nullsafety-1\\\\","dependencies":[]},{"name":"video_thumbnail","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\video_thumbnail-0.3.3\\\\","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[{"name":"image_picker_for_web","path":"D:\\\\Workspace\\\\android\\\\flutter\\\\.pub-cache\\\\hosted\\\\pub.flutter-io.cn\\\\image_picker_for_web-2.0.0\\\\","dependencies":[]}]},"dependencyGraph":[{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle","image_picker_for_web"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"jmessage_flutter","dependencies":[]},{"name":"modal_progress_hud_nsn","dependencies":[]},{"name":"video_thumbnail","dependencies":[]}],"date_created":"2021-06-01 11:58:00.043626","version":"2.2.0"}
{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"image_picker","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.7.5+4/","dependencies":[]},{"name":"jmessage_flutter","path":"/Users/jethro/Documents/vip/zhs-app/plugins/jmessage-flutter-plugin/","dependencies":[]},{"name":"modal_progress_hud_nsn","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/modal_progress_hud_nsn-0.1.0-nullsafety-1/","dependencies":[]},{"name":"video_thumbnail","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/video_thumbnail-0.3.3/","dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/flutter_plugin_android_lifecycle-2.0.5/","dependencies":[]},{"name":"image_picker","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker-0.7.5+4/","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"jmessage_flutter","path":"/Users/jethro/Documents/vip/zhs-app/plugins/jmessage-flutter-plugin/","dependencies":[]},{"name":"modal_progress_hud_nsn","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/modal_progress_hud_nsn-0.1.0-nullsafety-1/","dependencies":[]},{"name":"video_thumbnail","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/video_thumbnail-0.3.3/","dependencies":[]}],"macos":[],"linux":[],"windows":[],"web":[{"name":"image_picker_for_web","path":"/Users/Shared/flutter/.pub-cache/hosted/pub.flutter-io.cn/image_picker_for_web-2.1.4/","dependencies":[]}]},"dependencyGraph":[{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["flutter_plugin_android_lifecycle","image_picker_for_web"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"jmessage_flutter","dependencies":[]},{"name":"modal_progress_hud_nsn","dependencies":[]},{"name":"video_thumbnail","dependencies":[]}],"date_created":"2021-12-01 16:32:45.794089","version":"2.5.3"}
17 changes: 17 additions & 0 deletions example/android/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>android_</name>
<comment>Project android_ created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
</projectDescription>
13 changes: 13 additions & 0 deletions example/android/.settings/org.eclipse.buildship.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
arguments=
auto.sync=false
build.scans.enabled=false
connection.gradle.distribution=GRADLE_DISTRIBUTION(VERSION(7.0-rc-1))
connection.project.dir=
eclipse.preferences.version=1
gradle.user.home=
java.home=/Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
jvm.arguments=
offline.mode=false
override.workspace.settings=true
show.console.view=true
show.executions.view=true
2 changes: 1 addition & 1 deletion example/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ android {

manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "你自己应用的 AppKey", //极光 上注册的包名对应的 Appkey.
JPUSH_APPKEY : "6f571d35cfcedc7f3150ce0b", //极光 上注册的包名对应的 Appkey.
JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
]
}
Expand Down
2 changes: 1 addition & 1 deletion example/ios/Flutter/AppFrameworkInfo.plist
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@
<key>CFBundleVersion</key>
<string>1.0</string>
<key>MinimumOSVersion</key>
<string>8.0</string>
<string>9.0</string>
</dict>
</plist>
10 changes: 5 additions & 5 deletions example/ios/Flutter/Flutter.podspec
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
#
# NOTE: This podspec is NOT to be published. It is only used as a local source!
# This is a generated file; do not edit or check into version control.
#

Pod::Spec.new do |s|
s.name = 'Flutter'
s.version = '1.0.0'
s.summary = 'High-performance, high-fidelity mobile apps.'
s.description = <<-DESC
Flutter provides an easy and productive way to build and deploy high-performance mobile apps for Android and iOS.
DESC
s.homepage = 'https://flutter.io'
s.license = { :type => 'MIT' }
s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
s.source = { :git => 'https://github.com/flutter/engine', :tag => s.version.to_s }
s.ios.deployment_target = '8.0'
s.vendored_frameworks = 'Flutter.framework'
s.ios.deployment_target = '9.0'
# Framework linking is handled by Flutter tooling, not CocoaPods.
# Add a placeholder to satisfy `s.dependency 'Flutter'` plugin podspecs.
s.vendored_frameworks = 'path/to/nothing'
end
7 changes: 3 additions & 4 deletions example/ios/Flutter/flutter_export_environment.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
#!/bin/sh
# This is a generated file; do not edit or check into version control.
export "FLUTTER_ROOT=D:\Workspace\android\flutter"
export "FLUTTER_APPLICATION_PATH=D:\Workspace\flutter\jmessage-flutter-plugin\example"
export "FLUTTER_ROOT=/Users/Shared/flutter"
export "FLUTTER_APPLICATION_PATH=/Users/jethro/Documents/vip/zhs-app/plugins/jmessage-flutter-plugin/example"
export "COCOAPODS_PARALLEL_CODE_SIGN=true"
export "FLUTTER_TARGET=lib\main.dart"
export "FLUTTER_TARGET=lib/main.dart"
export "FLUTTER_BUILD_DIR=build"
export "SYMROOT=${SOURCE_ROOT}/../build\ios"
export "FLUTTER_BUILD_NAME=1.0.0"
export "FLUTTER_BUILD_NUMBER=1"
export "DART_OBFUSCATION=false"
Expand Down
Loading