Skip to content
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

修复了android端 flutter channel 返回结果时必须在UIThread的问题 #39

Open
wants to merge 1 commit 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
70 changes: 50 additions & 20 deletions android/src/main/java/com/jiguang/jpush/JPushEventReceiver.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.jiguang.jpush;

import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;

import org.json.JSONException;
Expand All @@ -17,9 +19,10 @@
import io.flutter.plugin.common.MethodChannel.Result;

public class JPushEventReceiver extends JPushMessageReceiver {
private Handler handler = new Handler(Looper.getMainLooper());

@Override
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
public void onTagOperatorResult(Context context, final JPushMessage jPushMessage) {
super.onTagOperatorResult(context, jPushMessage);

JSONObject resultJson = new JSONObject();
Expand All @@ -31,7 +34,7 @@ public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
e.printStackTrace();
}

Result callback = JPushPlugin.instance.callbackMap.get(sequence);//instance.eventCallbackMap.get(sequence);
final Result callback = JPushPlugin.instance.callbackMap.get(sequence);//instance.eventCallbackMap.get(sequence);

if (callback == null) {
Log.i("JPushPlugin", "Unexpected error, callback is null!");
Expand All @@ -41,33 +44,42 @@ public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
if (jPushMessage.getErrorCode() == 0) { // success
Set<String> tags = jPushMessage.getTags();
List<String> tagList = new ArrayList<>(tags);
Map<String, Object> res = new HashMap<>();
final Map<String, Object> res = new HashMap<>();
res.put("tags", tagList);
callback.success(res);
handler.post(new Runnable() {
@Override
public void run() {
callback.success(res);
}
});
} else {
try {
resultJson.put("code", jPushMessage.getErrorCode());
} catch (JSONException e) {
e.printStackTrace();
}
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
handler.post(new Runnable() {
@Override
public void run() {
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
}
}
);
}

JPushPlugin.instance.callbackMap.remove(sequence);
}



@Override
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
public void onCheckTagOperatorResult(Context context, final JPushMessage jPushMessage) {
super.onCheckTagOperatorResult(context, jPushMessage);



int sequence = jPushMessage.getSequence();


Result callback = JPushPlugin.instance.callbackMap.get(sequence);
final Result callback = JPushPlugin.instance.callbackMap.get(sequence);

if (callback == null) {
Log.i("JPushPlugin", "Unexpected error, callback is null!");
Expand All @@ -77,37 +89,55 @@ public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage)
if (jPushMessage.getErrorCode() == 0) {
Set<String> tags = jPushMessage.getTags();
List<String> tagList = new ArrayList<>(tags);
Map<String, Object> res = new HashMap<>();
final Map<String, Object> res = new HashMap<>();
res.put("tags", tagList);
callback.success(res);
handler.post(new Runnable() {
@Override
public void run() {
callback.success(res);
}
});
} else {

callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
handler.post(new Runnable() {
@Override
public void run() {
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
}
});
}

JPushPlugin.instance.callbackMap.remove(sequence);
}

@Override
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
public void onAliasOperatorResult(Context context, final JPushMessage jPushMessage) {
super.onAliasOperatorResult(context, jPushMessage);

int sequence = jPushMessage.getSequence();

Result callback = JPushPlugin.instance.callbackMap.get(sequence);
final Result callback = JPushPlugin.instance.callbackMap.get(sequence);

if (callback == null) {
Log.i("JPushPlugin", "Unexpected error, callback is null!");
return;
}

if (jPushMessage.getErrorCode() == 0) { // success
Map<String, Object> res = new HashMap<>();
res.put("alias", (jPushMessage.getAlias() == null)? "" : jPushMessage.getAlias());
callback.success(res);

final Map<String, Object> res = new HashMap<>();
res.put("alias", (jPushMessage.getAlias() == null) ? "" : jPushMessage.getAlias());
handler.post(new Runnable() {
@Override
public void run() {
callback.success(res);
}
});
} else {
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
handler.post(new Runnable() {
@Override
public void run() {
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
}
});
}

JPushPlugin.instance.callbackMap.remove(sequence);
Expand Down
Loading