parent
ad85baa20a
commit
0fff34327d
@ -1,3 +1,26 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
package="com.jiguang.jpush">
|
package="com.jiguang.jpush">
|
||||||
|
<application>
|
||||||
|
<receiver
|
||||||
|
android:name="com.jiguang.jpush.JPushPlugin$JPushReceiver"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="false">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="cn.jpush.android.intent.REGISTRATION" />
|
||||||
|
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
|
||||||
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
|
||||||
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
|
||||||
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_CLICK_ACTION" />
|
||||||
|
<action android:name="cn.jpush.android.intent.CONNECTION" />
|
||||||
|
<category android:name="${applicationId}" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
|
||||||
|
<receiver android:name="com.jiguang.jpush.JPushEventReceiver">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||||
|
<category android:name="${applicationId}" />
|
||||||
|
</intent-filter>
|
||||||
|
</receiver>
|
||||||
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
@ -0,0 +1,115 @@
|
|||||||
|
package com.jiguang.jpush;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import cn.jpush.android.api.JPushMessage;
|
||||||
|
import cn.jpush.android.service.JPushMessageReceiver;
|
||||||
|
import io.flutter.plugin.common.MethodChannel.Result;
|
||||||
|
|
||||||
|
public class JPushEventReceiver extends JPushMessageReceiver {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||||
|
super.onTagOperatorResult(context, jPushMessage);
|
||||||
|
|
||||||
|
JSONObject resultJson = new JSONObject();
|
||||||
|
|
||||||
|
int sequence = jPushMessage.getSequence();
|
||||||
|
try {
|
||||||
|
resultJson.put("sequence", sequence);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
Result callback = JPushPlugin.instance.callbackMap.get(sequence);//instance.eventCallbackMap.get(sequence);
|
||||||
|
|
||||||
|
if (callback == null) {
|
||||||
|
Log.i("JPushPlugin", "Unexpected error, callback is null!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jPushMessage.getErrorCode() == 0) { // success
|
||||||
|
Set<String> tags = jPushMessage.getTags();
|
||||||
|
List<String> tagList = new ArrayList<>(tags);
|
||||||
|
Map<String, Object> res = new HashMap<>();
|
||||||
|
res.put("tags", tagList);
|
||||||
|
callback.success(res);
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
resultJson.put("code", jPushMessage.getErrorCode());
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.instance.callbackMap.remove(sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||||
|
super.onCheckTagOperatorResult(context, jPushMessage);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int sequence = jPushMessage.getSequence();
|
||||||
|
|
||||||
|
|
||||||
|
Result callback = JPushPlugin.instance.callbackMap.get(sequence);
|
||||||
|
|
||||||
|
if (callback == null) {
|
||||||
|
Log.i("JPushPlugin", "Unexpected error, callback is null!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jPushMessage.getErrorCode() == 0) {
|
||||||
|
Set<String> tags = jPushMessage.getTags();
|
||||||
|
List<String> tagList = new ArrayList<>(tags);
|
||||||
|
Map<String, Object> res = new HashMap<>();
|
||||||
|
res.put("tags", tagList);
|
||||||
|
callback.success(res);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.instance.callbackMap.remove(sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||||
|
super.onAliasOperatorResult(context, jPushMessage);
|
||||||
|
|
||||||
|
int sequence = jPushMessage.getSequence();
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
callback.error(Integer.toString(jPushMessage.getErrorCode()), "", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.instance.callbackMap.remove(sequence);
|
||||||
|
}
|
||||||
|
}
|
@ -1,25 +1,292 @@
|
|||||||
package com.jiguang.jpush;
|
package com.jiguang.jpush;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import io.flutter.plugin.common.MethodCall;
|
import io.flutter.plugin.common.MethodCall;
|
||||||
import io.flutter.plugin.common.MethodChannel;
|
import io.flutter.plugin.common.MethodChannel;
|
||||||
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
|
import io.flutter.plugin.common.MethodChannel.MethodCallHandler;
|
||||||
import io.flutter.plugin.common.MethodChannel.Result;
|
import io.flutter.plugin.common.MethodChannel.Result;
|
||||||
import io.flutter.plugin.common.PluginRegistry.Registrar;
|
import io.flutter.plugin.common.PluginRegistry.Registrar;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import cn.jpush.android.api.JPushInterface;
|
||||||
|
|
||||||
/** JPushPlugin */
|
/** JPushPlugin */
|
||||||
public class JPushPlugin implements MethodCallHandler {
|
public class JPushPlugin implements MethodCallHandler {
|
||||||
/** Plugin registration. */
|
/** Plugin registration. */
|
||||||
public static void registerWith(Registrar registrar) {
|
public static void registerWith(Registrar registrar) {
|
||||||
final MethodChannel channel = new MethodChannel(registrar.messenger(), "jpush");
|
final MethodChannel channel = new MethodChannel(registrar.messenger(), "jpush");
|
||||||
channel.setMethodCallHandler(new JPushPlugin());
|
channel.setMethodCallHandler(new JPushPlugin(registrar, channel));
|
||||||
}
|
Log.d("JPushPlugin", "11111 registerWith");
|
||||||
|
}
|
||||||
@Override
|
|
||||||
public void onMethodCall(MethodCall call, Result result) {
|
public static JPushPlugin instance;
|
||||||
if (call.method.equals("getPlatformVersion")) {
|
private static Map<String, Object> launchOpenNotification;
|
||||||
result.success("Android " + android.os.Build.VERSION.RELEASE);
|
|
||||||
} else {
|
private final Registrar registrar;
|
||||||
result.notImplemented();
|
private final MethodChannel channel;
|
||||||
}
|
public final Map<Integer, Result> callbackMap;
|
||||||
}
|
private int sequence;
|
||||||
|
|
||||||
|
private JPushPlugin(Registrar registrar, MethodChannel channel) {
|
||||||
|
Log.d("huangmin", "hahahahah initial");
|
||||||
|
this.registrar = registrar;
|
||||||
|
this.channel = channel;
|
||||||
|
this.callbackMap = new HashMap<>();
|
||||||
|
this.sequence = 0;
|
||||||
|
instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMethodCall(MethodCall call, Result result) {
|
||||||
|
if (call.method.equals("getPlatformVersion")) {
|
||||||
|
result.success("Android " + android.os.Build.VERSION.RELEASE);
|
||||||
|
} else if (call.method.equals("setup")) {
|
||||||
|
setup(call, result);
|
||||||
|
} else if (call.method.equals("setTags")) {
|
||||||
|
setTags(call, result);
|
||||||
|
} else if (call.method.equals("cleanTags")) {
|
||||||
|
cleanTags(call, result);
|
||||||
|
} else if (call.method.equals("addTags")) {
|
||||||
|
addTags(call, result);
|
||||||
|
} else if (call.method.equals("deleteTags")) {
|
||||||
|
deleteTags(call, result);
|
||||||
|
} else if (call.method.equals("getAllTags")) {
|
||||||
|
getAllTags(call, result);
|
||||||
|
} else if (call.method.equals("setAlias")) {
|
||||||
|
setAlias(call, result);
|
||||||
|
} else if (call.method.equals("deleteAlias")) {
|
||||||
|
deleteAlias(call, result);;
|
||||||
|
} else if (call.method.equals("stopPush")) {
|
||||||
|
stopPush(call, result);
|
||||||
|
} else if (call.method.equals("resumePush")) {
|
||||||
|
resumePush(call, result);
|
||||||
|
} else if (call.method.equals("clearAllNotifications")) {
|
||||||
|
clearAllNotifications(call, result);
|
||||||
|
} else if (call.method.equals("getLaunchAppNotification")) {
|
||||||
|
getLaunchAppNotification(call, result);
|
||||||
|
} else if (call.method.equals("getRegistrationID")) {
|
||||||
|
getRegistrationID(call, result);
|
||||||
|
} else {
|
||||||
|
result.notImplemented();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setup(MethodCall call, Result result) {
|
||||||
|
JPushInterface.setDebugMode(true); // 设置开启日志,发布时请关闭日志
|
||||||
|
JPushInterface.init(registrar.context()); // 初始化 JPush
|
||||||
|
Log.d("huangmin123456","fdsfadf");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTags(MethodCall call, Result result) {
|
||||||
|
List<String>tagList = call.arguments();
|
||||||
|
Set<String> tags = new HashSet<>(tagList);
|
||||||
|
sequence += 1;
|
||||||
|
callbackMap.put(sequence, result);
|
||||||
|
JPushInterface.setTags(registrar.context(), sequence, tags);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void cleanTags(MethodCall call, Result result) {
|
||||||
|
|
||||||
|
|
||||||
|
sequence += 1;
|
||||||
|
callbackMap.put(sequence, result);
|
||||||
|
JPushInterface.cleanTags(registrar.context(), sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addTags(MethodCall call, Result result) {
|
||||||
|
List<String>tagList = call.arguments();
|
||||||
|
Set<String> tags = new HashSet<>(tagList);
|
||||||
|
sequence += 1;
|
||||||
|
callbackMap.put(sequence, result);
|
||||||
|
JPushInterface.addTags(registrar.context(), sequence, tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteTags(MethodCall call, Result result) {
|
||||||
|
List<String>tagList = call.arguments();
|
||||||
|
Set<String> tags = new HashSet<>(tagList);
|
||||||
|
sequence += 1;
|
||||||
|
callbackMap.put(sequence, result);
|
||||||
|
JPushInterface.deleteTags(registrar.context(), sequence, tags);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getAllTags(MethodCall call, Result result) {
|
||||||
|
sequence += 1;
|
||||||
|
callbackMap.put(sequence, result);
|
||||||
|
JPushInterface.getAllTags(registrar.context(), sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAlias(MethodCall call, Result result) {
|
||||||
|
String alias= call.arguments();
|
||||||
|
sequence += 1;
|
||||||
|
callbackMap.put(sequence, result);
|
||||||
|
JPushInterface.setAlias(registrar.context(), sequence, alias);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void deleteAlias(MethodCall call, Result result) {
|
||||||
|
String alias= call.arguments();
|
||||||
|
sequence += 1;
|
||||||
|
callbackMap.put(sequence, result);
|
||||||
|
JPushInterface.deleteAlias(registrar.context(), sequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public void stopPush(MethodCall call, Result result) {
|
||||||
|
JPushInterface.stopPush(registrar.context());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resumePush(MethodCall call, Result result) {
|
||||||
|
JPushInterface.resumePush(registrar.context());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void clearAllNotifications(MethodCall call, Result result) {
|
||||||
|
JPushInterface.clearAllNotifications(registrar.context());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getLaunchAppNotification(MethodCall call, Result result) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void getRegistrationID(MethodCall call, Result result) {
|
||||||
|
|
||||||
|
String rid = JPushInterface.getRegistrationID(registrar.context());
|
||||||
|
result.success(rid);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 接收自定义消息,通知,通知点击事件等事件的广播
|
||||||
|
* 文档链接:http://docs.jiguang.cn/client/android_api/
|
||||||
|
*/
|
||||||
|
public static class JPushReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
|
private static final List<String> IGNORED_EXTRAS_KEYS = Arrays.asList("cn.jpush.android.TITLE",
|
||||||
|
"cn.jpush.android.MESSAGE", "cn.jpush.android.APPKEY", "cn.jpush.android.NOTIFICATION_CONTENT_TITLE");
|
||||||
|
|
||||||
|
public JPushReceiver() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
Log.d("JPushReceive", "11111 onreceive board cast");
|
||||||
|
String action = intent.getAction();
|
||||||
|
if (action.equals(JPushInterface.ACTION_REGISTRATION_ID)) {
|
||||||
|
String rId = intent.getStringExtra(JPushInterface.EXTRA_REGISTRATION_ID);
|
||||||
|
JPushPlugin.transmitReceiveRegistrationId(rId);
|
||||||
|
} else if (action.equals(JPushInterface.ACTION_MESSAGE_RECEIVED)) {
|
||||||
|
handlingMessageReceive(intent);
|
||||||
|
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_RECEIVED)) {
|
||||||
|
handlingNotificationReceive(context, intent);
|
||||||
|
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_OPENED)) {
|
||||||
|
handlingNotificationOpen(context, intent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handlingMessageReceive(Intent intent) {
|
||||||
|
String msg = intent.getStringExtra(JPushInterface.EXTRA_MESSAGE);
|
||||||
|
Map<String, Object> extras = getNotificationExtras(intent);
|
||||||
|
JPushPlugin.transmitMessageReceive(msg, extras);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handlingNotificationOpen(Context context, Intent intent) {
|
||||||
|
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||||
|
String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
|
||||||
|
Map<String, Object> extras = getNotificationExtras(intent);
|
||||||
|
JPushPlugin.transmitNotificationOpen(title, alert, extras);
|
||||||
|
|
||||||
|
Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
|
||||||
|
if (launch != null) {
|
||||||
|
launch.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||||
|
launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||||
|
context.startActivity(launch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handlingNotificationReceive(Context context, Intent intent) {
|
||||||
|
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||||
|
String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
|
||||||
|
Map<String, Object> extras = getNotificationExtras(intent);
|
||||||
|
JPushPlugin.transmitNotificationReceive(title, alert, extras);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<String, Object> getNotificationExtras(Intent intent) {
|
||||||
|
Map<String, Object> extrasMap = new HashMap<String, Object>();
|
||||||
|
for (String key : intent.getExtras().keySet()) {
|
||||||
|
if (!IGNORED_EXTRAS_KEYS.contains(key)) {
|
||||||
|
if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
|
||||||
|
extrasMap.put(key, intent.getIntExtra(key, 0));
|
||||||
|
} else {
|
||||||
|
extrasMap.put(key, intent.getStringExtra(key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return extrasMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void transmitMessageReceive(String message, Map<String, Object> extras) {
|
||||||
|
if (instance == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Log.d("JPushPlugin", "onReceiveMessage native");
|
||||||
|
Map<String, Object> msg= new HashMap<>();
|
||||||
|
msg.put("message", message);
|
||||||
|
msg.put("extras", extras);
|
||||||
|
|
||||||
|
JPushPlugin.instance.channel.invokeMethod("onReceiveMessage", msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void transmitNotificationOpen(String title, String alert, Map<String, Object> extras) {
|
||||||
|
if (instance == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Log.d("JPushPlugin", "onOpenNotification native");
|
||||||
|
Map<String, Object> notification= new HashMap<>();
|
||||||
|
notification.put("title", title);
|
||||||
|
notification.put("alert", alert);
|
||||||
|
notification.put("extras", extras);
|
||||||
|
JPushPlugin.instance.channel.invokeMethod("onOpenNotification", notification);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void transmitNotificationReceive(String title, String alert, Map<String, Object> extras) {
|
||||||
|
if (instance == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Log.d("JPushPlugin", "onReceiveNotification native");
|
||||||
|
|
||||||
|
Map<String, Object> notification= new HashMap<>();
|
||||||
|
notification.put("title", title);
|
||||||
|
notification.put("alert", alert);
|
||||||
|
notification.put("extras", extras);
|
||||||
|
JPushPlugin.instance.channel.invokeMethod("onReceiveNotification", notification);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void transmitReceiveRegistrationId(String rId) {
|
||||||
|
if (instance == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Log.d("JPushPlugin", "transmitReceiveRegistrationId");
|
||||||
|
JPushPlugin.instance.channel.invokeMethod("ReceiveRegistrationId", "success congratulation!");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in new issue