Update Android SDK to v3.1.5

This commit is contained in:
JoshLi 2018-07-31 17:08:44 +08:00
parent 1d0d972737
commit 0677094086
9 changed files with 420 additions and 328 deletions

View File

@ -1,14 +1,13 @@
import { Component } from '@angular/core'; import { Component } from "@angular/core";
import { NavController } from 'ionic-angular'; import { NavController } from "ionic-angular";
import { JPush } from '@jiguang-ionic/jpush'; import { JPush } from "@jiguang-ionic/jpush";
import { Device } from '@ionic-native/device'; import { Device } from "@ionic-native/device";
@Component({ @Component({
selector: 'page-home', selector: "page-home",
templateUrl: 'home.html' templateUrl: "home.html"
}) })
export class HomePage { export class HomePage {
public registrationId: string; public registrationId: string;
devicePlatform: string; devicePlatform: string;
@ -17,139 +16,161 @@ export class HomePage {
tagResultHandler = function(result) { tagResultHandler = function(result) {
var sequence: number = result.sequence; var sequence: number = result.sequence;
var tags: Array<string> = result.tags == null ? [] : result.tags; var tags: Array<string> = result.tags == null ? [] : result.tags;
alert('Success!' + '\nSequence: ' + sequence + '\nTags: ' + tags.toString()); alert(
"Success!" + "\nSequence: " + sequence + "\nTags: " + tags.toString()
);
}; };
aliasResultHandler = function(result) { aliasResultHandler = function(result) {
var sequence: number = result.sequence; var sequence: number = result.sequence;
var alias: string = result.alias; var alias: string = result.alias;
alert('Success!' + '\nSequence: ' + sequence + '\nAlias: ' + alias); alert("Success!" + "\nSequence: " + sequence + "\nAlias: " + alias);
}; };
errorHandler = function(err) { errorHandler = function(err) {
var sequence: number = err.sequence; var sequence: number = err.sequence;
var code = err.code; var code = err.code;
alert('Error!' + '\nSequence: ' + sequence + '\nCode: ' + code); alert("Error!" + "\nSequence: " + sequence + "\nCode: " + code);
}; };
constructor(public navCtrl: NavController, public jpush: JPush, device: Device) { constructor(
public navCtrl: NavController,
public jpush: JPush,
device: Device
) {
this.devicePlatform = device.platform; this.devicePlatform = device.platform;
document.addEventListener('jpush.openNotification', (event: any) => { document.addEventListener(
alert('jpush.openNotification' + JSON.stringify(event)); "jpush.receiveNotification",
this.jpush.setBadge(0); (event: any) => {
this.jpush.setApplicationIconBadgeNumber(0); var content;
}) if (this.devicePlatform == "Android") {
content = event.alert;
document.addEventListener('jpush.receiveNotification', (event: any) => { } else {
var content;
if (this.devicePlatform == 'Android') {
content = event.alert;
} else {
content = event.aps.alert;
}
alert('Receive notification: ' + JSON.stringify(event));
this.jpush.setBadge(0);
this.jpush.setApplicationIconBadgeNumber(0);
}, false);
document.addEventListener('jpush.openNotification', (event: any) => {
var content;
if (this.devicePlatform == 'Android') {
content = event.alert;
} else { // iOS
if (event.aps == undefined) { // 本地通知
content = event.content;
} else { // APNS
content = event.aps.alert; content = event.aps.alert;
} }
} alert("Receive notification: " + JSON.stringify(event));
alert('open notification: ' + JSON.stringify(event)); },
}, false); false
);
document.addEventListener('jpush.receiveLocalNotification', (event: any) => { document.addEventListener(
// iOS(*,9) Only , iOS(10,*) 将在 jpush.openNotification 和 jpush.receiveNotification 中触发。 "jpush.openNotification",
var content; (event: any) => {
if (this.devicePlatform == 'Android') { var content;
} else { if (this.devicePlatform == "Android") {
content = event.content; content = event.alert;
} } else {
alert('receive local notification: ' + JSON.stringify(event)); // iOS
}, false); if (event.aps == undefined) {
// 本地通知
content = event.content;
} else {
// APNS
content = event.aps.alert;
}
}
alert("open notification: " + JSON.stringify(event));
},
false
);
document.addEventListener(
"jpush.receiveLocalNotification",
(event: any) => {
// iOS(*,9) Only , iOS(10,*) 将在 jpush.openNotification 和 jpush.receiveNotification 中触发。
var content;
if (this.devicePlatform == "Android") {
} else {
content = event.content;
}
alert("receive local notification: " + JSON.stringify(event));
},
false
);
} }
getRegistrationID() { getRegistrationID() {
this.jpush.getRegistrationID() this.jpush.getRegistrationID().then(rId => {
.then(rId => { this.registrationId = rId;
this.registrationId = rId; });
});
} }
setTags() { setTags() {
this.jpush.setTags({ sequence: this.sequence++, tags: ['Tag1', 'Tag2']}) this.jpush
.setTags({ sequence: this.sequence++, tags: ["Tag1", "Tag2"] })
.then(this.tagResultHandler) .then(this.tagResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
addTags() { addTags() {
this.jpush.addTags({ sequence: this.sequence++, tags: ['Tag3', 'Tag4']}) this.jpush
.addTags({ sequence: this.sequence++, tags: ["Tag3", "Tag4"] })
.then(this.tagResultHandler) .then(this.tagResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
checkTagBindState() { checkTagBindState() {
this.jpush.checkTagBindState({ sequence: this.sequence++, tag: 'Tag1' }) this.jpush
.checkTagBindState({ sequence: this.sequence++, tag: "Tag1" })
.then(result => { .then(result => {
var sequence = result.sequence; var sequence = result.sequence;
var tag = result.tag; var tag = result.tag;
var isBind = result.isBind; var isBind = result.isBind;
alert('Sequence: ' + sequence + '\nTag: ' + tag + '\nIsBind: ' + isBind); alert(
}).catch(this.errorHandler); "Sequence: " + sequence + "\nTag: " + tag + "\nIsBind: " + isBind
);
})
.catch(this.errorHandler);
} }
deleteTags() { deleteTags() {
this.jpush.deleteTags({ sequence: this.sequence++, tags: ['Tag4']}) this.jpush
.deleteTags({ sequence: this.sequence++, tags: ["Tag4"] })
.then(this.tagResultHandler) .then(this.tagResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
getAllTags() { getAllTags() {
this.jpush.getAllTags({ sequence: this.sequence++ }) this.jpush
.getAllTags({ sequence: this.sequence++ })
.then(this.tagResultHandler) .then(this.tagResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
cleanTags() { cleanTags() {
this.jpush.cleanTags({ sequence: this.sequence++ }) this.jpush
.cleanTags({ sequence: this.sequence++ })
.then(this.tagResultHandler) .then(this.tagResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
setAlias() { setAlias() {
this.jpush.setAlias({ sequence: this.sequence++, alias: 'TestAlias' }) this.jpush
.setAlias({ sequence: this.sequence++, alias: "TestAlias" })
.then(this.aliasResultHandler) .then(this.aliasResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
getAlias() { getAlias() {
this.jpush.getAlias({ sequence: this.sequence++ }) this.jpush
.getAlias({ sequence: this.sequence++ })
.then(this.aliasResultHandler) .then(this.aliasResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
deleteAlias() { deleteAlias() {
this.jpush.deleteAlias({ sequence: this.sequence++ }) this.jpush
.deleteAlias({ sequence: this.sequence++ })
.then(this.aliasResultHandler) .then(this.aliasResultHandler)
.catch(this.errorHandler); .catch(this.errorHandler);
} }
addLocalNotification() { addLocalNotification() {
if (this.devicePlatform == 'Android') { if (this.devicePlatform == "Android") {
this.jpush.addLocalNotification(0, 'Hello JPush', 'JPush', 1, 5000); this.jpush.addLocalNotification(0, "Hello JPush", "JPush", 1, 5000);
} else { } else {
this.jpush.addLocalNotificationForIOS(5, 'Hello JPush', 1, 'localNoti1'); this.jpush.addLocalNotificationForIOS(5, "Hello JPush", 1, "localNoti1");
} }
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "jpush-phonegap-plugin", "name": "jpush-phonegap-plugin",
"version": "3.4.1", "version": "3.4.2",
"description": "JPush for cordova plugin", "description": "JPush for cordova plugin",
"cordova": { "cordova": {
"id": "jpush-phonegap-plugin", "id": "jpush-phonegap-plugin",

View File

@ -2,7 +2,7 @@
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
id="jpush-phonegap-plugin" id="jpush-phonegap-plugin"
version="3.4.1"> version="3.4.2">
<name>JPush</name> <name>JPush</name>
<description>JPush for cordova plugin</description> <description>JPush for cordova plugin</description>
@ -202,7 +202,7 @@
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" /> <meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
</config-file> </config-file>
<lib-file src="src/android/libs/jpush-android-3.1.1.jar" /> <lib-file src="src/android/libs/jpush-android-3.1.5.jar" />
<source-file src="src/android/JPushReceiver.java" target-dir="app/src/main/java/cn/jiguang/cordova/push" /> <source-file src="src/android/JPushReceiver.java" target-dir="app/src/main/java/cn/jiguang/cordova/push" />
<source-file src="src/android/JPushPlugin.java" target-dir="app/src/main/java/cn/jiguang/cordova/push" /> <source-file src="src/android/JPushPlugin.java" target-dir="app/src/main/java/cn/jiguang/cordova/push" />

View File

@ -14,7 +14,6 @@ import java.util.Set;
import cn.jpush.android.api.JPushMessage; import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.service.JPushMessageReceiver; import cn.jpush.android.service.JPushMessageReceiver;
public class JPushEventReceiver extends JPushMessageReceiver { public class JPushEventReceiver extends JPushMessageReceiver {
private static final String TAG = JPushEventReceiver.class.getSimpleName(); private static final String TAG = JPushEventReceiver.class.getSimpleName();

View File

@ -64,33 +64,29 @@ public class JPushPlugin extends CordovaPlugin {
public void initialize(CordovaInterface cordova, CordovaWebView webView) { public void initialize(CordovaInterface cordova, CordovaWebView webView) {
super.initialize(cordova, webView); super.initialize(cordova, webView);
mContext = cordova.getActivity().getApplicationContext(); mContext = cordova.getActivity().getApplicationContext();
JPushInterface.init(mContext); JPushInterface.init(mContext);
cordovaActivity = cordova.getActivity(); cordovaActivity = cordova.getActivity();
//如果同时缓存了打开事件 openNotificationAlert 消息事件 notificationAlert只向 UI 发打开事件 // 如果同时缓存了打开事件 openNotificationAlert 消息事件 notificationAlert只向 UI 发打开事件
//这样做是为了和 iOS 统一 // 这样做是为了和 iOS 统一
if (openNotificationAlert != null) { if (openNotificationAlert != null) {
notificationAlert = null; notificationAlert = null;
transmitNotificationOpen(openNotificationTitle, openNotificationAlert, transmitNotificationOpen(openNotificationTitle, openNotificationAlert, openNotificationExtras);
openNotificationExtras);
} }
if (notificationAlert != null) { if (notificationAlert != null) {
transmitNotificationReceive(notificationTitle, notificationAlert, transmitNotificationReceive(notificationTitle, notificationAlert, notificationExtras);
notificationExtras);
} }
} }
public void onResume(boolean multitasking) { public void onResume(boolean multitasking) {
if (openNotificationAlert != null) { if (openNotificationAlert != null) {
notificationAlert = null; notificationAlert = null;
transmitNotificationOpen(openNotificationTitle, openNotificationAlert, transmitNotificationOpen(openNotificationTitle, openNotificationAlert, openNotificationExtras);
openNotificationExtras);
} }
if (notificationAlert != null) { if (notificationAlert != null) {
transmitNotificationReceive(notificationTitle, notificationAlert, transmitNotificationReceive(notificationTitle, notificationAlert, notificationExtras);
notificationExtras);
} }
} }
@ -238,14 +234,13 @@ public class JPushPlugin extends CordovaPlugin {
} }
@Override @Override
public boolean execute(final String action, final JSONArray data, public boolean execute(final String action, final JSONArray data, final CallbackContext callbackContext)
final CallbackContext callbackContext) throws JSONException { throws JSONException {
cordova.getThreadPool().execute(new Runnable() { cordova.getThreadPool().execute(new Runnable() {
@Override @Override
public void run() { public void run() {
try { try {
Method method = JPushPlugin.class.getDeclaredMethod(action, Method method = JPushPlugin.class.getDeclaredMethod(action, JSONArray.class, CallbackContext.class);
JSONArray.class, CallbackContext.class);
method.invoke(JPushPlugin.this, data, callbackContext); method.invoke(JPushPlugin.this, data, callbackContext);
} catch (Exception e) { } catch (Exception e) {
Log.e(TAG, e.toString()); Log.e(TAG, e.toString());
@ -308,8 +303,7 @@ public class JPushPlugin extends CordovaPlugin {
callbackContext.error("error reading num json"); callbackContext.error("error reading num json");
} }
if (num != -1) { if (num != -1) {
JPushInterface.setLatestNotificationNumber( JPushInterface.setLatestNotificationNumber(mContext, num);
mContext, num);
} else { } else {
callbackContext.error("error num"); callbackContext.error("error num");
} }
@ -533,11 +527,10 @@ public class JPushPlugin extends CordovaPlugin {
} }
/** /**
* 自定义通知行为声音震动呼吸灯等 * 自定义通知行为声音震动呼吸灯等
*/ */
void setBasicPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) { void setBasicPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) {
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder( BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(this.cordova.getActivity());
this.cordova.getActivity());
builder.developerArg0 = "Basic builder 1"; builder.developerArg0 = "Basic builder 1";
JPushInterface.setPushNotificationBuilder(1, builder); JPushInterface.setPushNotificationBuilder(1, builder);
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
@ -549,14 +542,12 @@ public class JPushPlugin extends CordovaPlugin {
} }
/** /**
* 自定义推送通知栏样式需要自己实现具体代码 * 自定义推送通知栏样式需要自己实现具体代码 http://docs.jiguang.cn/client/android_tutorials/#_11
* http://docs.jiguang.cn/client/android_tutorials/#_11
*/ */
void setCustomPushNotificationBuilder(JSONArray data, void setCustomPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) {
CallbackContext callbackContext) {
// CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder( // CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(
// this.cordova.getActivity(), R.layout.test_notification_layout, // this.cordova.getActivity(), R.layout.test_notification_layout,
// R.id.icon, R.id.title, R.id.text); // R.id.icon, R.id.title, R.id.text);
// JPushInterface.setPushNotificationBuilder(2, builder); // JPushInterface.setPushNotificationBuilder(2, builder);
// JPushInterface.setDefaultPushNotificationBuilder(builder); // JPushInterface.setDefaultPushNotificationBuilder(builder);
} }
@ -614,8 +605,7 @@ public class JPushPlugin extends CordovaPlugin {
} }
/** /**
* 设置通知静默时间 * 设置通知静默时间 http://docs.jpush.io/client/android_api/#api_5
* https://docs.jiguang.cn/jpush/client/Android/android_api/
*/ */
void setSilenceTime(JSONArray data, CallbackContext callbackContext) { void setSilenceTime(JSONArray data, CallbackContext callbackContext) {
try { try {
@ -631,8 +621,7 @@ public class JPushPlugin extends CordovaPlugin {
callbackContext.error("结束时间数值错误"); callbackContext.error("结束时间数值错误");
return; return;
} }
JPushInterface.setSilenceTime(this.cordova.getActivity(), startHour, startMinute, JPushInterface.setSilenceTime(this.cordova.getActivity(), startHour, startMinute, endHour, endMinute);
endHour, endMinute);
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); e.printStackTrace();
callbackContext.error("error: reading json data."); callbackContext.error("error: reading json data.");
@ -666,8 +655,7 @@ public class JPushPlugin extends CordovaPlugin {
data.put("resultCode", code); data.put("resultCode", code);
data.put("tags", tags); data.put("tags", tags);
data.put("alias", alias); data.put("alias", alias);
final String jsEvent = String.format( final String jsEvent = String.format("cordova.fireDocumentEvent('jpush.setTagsWithAlias',%s)",
"cordova.fireDocumentEvent('jpush.setTagsWithAlias',%s)",
data.toString()); data.toString());
cordova.getActivity().runOnUiThread(new Runnable() { cordova.getActivity().runOnUiThread(new Runnable() {
@Override @Override
@ -693,8 +681,8 @@ public class JPushPlugin extends CordovaPlugin {
try { try {
appOpsClazz = Class.forName(AppOpsManager.class.getName()); appOpsClazz = Class.forName(AppOpsManager.class.getName());
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow", Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow", Integer.TYPE, Integer.TYPE,
Integer.TYPE, Integer.TYPE, String.class); String.class);
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId); Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
int value = opValue.getInt(Integer.class); int value = opValue.getInt(Integer.class);
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg); Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);

View File

@ -13,13 +13,8 @@ import cn.jpush.android.api.JPushInterface;
public class JPushReceiver extends BroadcastReceiver { public class JPushReceiver extends BroadcastReceiver {
private static final List<String> IGNORED_EXTRAS_KEYS = private static final List<String> IGNORED_EXTRAS_KEYS = Arrays.asList("cn.jpush.android.TITLE",
Arrays.asList( "cn.jpush.android.MESSAGE", "cn.jpush.android.APPKEY", "cn.jpush.android.NOTIFICATION_CONTENT_TITLE");
"cn.jpush.android.TITLE",
"cn.jpush.android.MESSAGE",
"cn.jpush.android.APPKEY",
"cn.jpush.android.NOTIFICATION_CONTENT_TITLE"
);
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
@ -54,8 +49,7 @@ public class JPushReceiver extends BroadcastReceiver {
JPushPlugin.transmitNotificationOpen(title, alert, extras); JPushPlugin.transmitNotificationOpen(title, alert, extras);
Intent launch = context.getPackageManager().getLaunchIntentForPackage( Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
context.getPackageName());
if (launch != null) { if (launch != null) {
launch.addCategory(Intent.CATEGORY_LAUNCHER); launch.addCategory(Intent.CATEGORY_LAUNCHER);
launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);

Binary file not shown.

View File

@ -1,157 +1,211 @@
var JPushPlugin = function () {} var JPushPlugin = function() {};
// private plugin function // private plugin function
JPushPlugin.prototype.receiveMessage = {} JPushPlugin.prototype.receiveMessage = {};
JPushPlugin.prototype.openNotification = {} JPushPlugin.prototype.openNotification = {};
JPushPlugin.prototype.receiveNotification = {} JPushPlugin.prototype.receiveNotification = {};
JPushPlugin.prototype.isPlatformIOS = function () { JPushPlugin.prototype.isPlatformIOS = function() {
return (device.platform === 'iPhone' || return (
device.platform === 'iPad' || device.platform === "iPhone" ||
device.platform === 'iPod touch' || device.platform === "iPad" ||
device.platform === 'iOS') device.platform === "iPod touch" ||
} device.platform === "iOS"
);
};
JPushPlugin.prototype.errorCallback = function (msg) { JPushPlugin.prototype.errorCallback = function(msg) {
console.log('JPush Callback Error: ' + msg) console.log("JPush Callback Error: " + msg);
} };
JPushPlugin.prototype.callNative = function (name, args, successCallback, errorCallback) { JPushPlugin.prototype.callNative = function(
name,
args,
successCallback,
errorCallback
) {
if (errorCallback) { if (errorCallback) {
cordova.exec(successCallback, errorCallback, 'JPushPlugin', name, args) cordova.exec(successCallback, errorCallback, "JPushPlugin", name, args);
} else { } else {
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args) cordova.exec(
successCallback,
this.errorCallback,
"JPushPlugin",
name,
args
);
} }
} };
// Common methods // Common methods
JPushPlugin.prototype.init = function () { JPushPlugin.prototype.init = function() {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('initial', [], null) this.callNative("initial", [], null);
} else { } else {
this.callNative('init', [], null) this.callNative("init", [], null);
} }
} };
JPushPlugin.prototype.setDebugMode = function (mode) { JPushPlugin.prototype.setDebugMode = function(mode) {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('setDebugMode', [mode], null) this.callNative("setDebugMode", [mode], null);
} else { } else {
if (mode === true) { if (mode === true) {
this.setDebugModeFromIos() this.setDebugModeFromIos();
} else { } else {
this.setLogOFF() this.setLogOFF();
} }
} }
} };
JPushPlugin.prototype.getRegistrationID = function (successCallback) { JPushPlugin.prototype.getRegistrationID = function(successCallback) {
this.callNative('getRegistrationID', [], successCallback) this.callNative("getRegistrationID", [], successCallback);
} };
JPushPlugin.prototype.stopPush = function () { JPushPlugin.prototype.stopPush = function() {
this.callNative('stopPush', [], null) this.callNative("stopPush", [], null);
} };
JPushPlugin.prototype.resumePush = function () { JPushPlugin.prototype.resumePush = function() {
this.callNative('resumePush', [], null) this.callNative("resumePush", [], null);
} };
JPushPlugin.prototype.isPushStopped = function (successCallback) { JPushPlugin.prototype.isPushStopped = function(successCallback) {
this.callNative('isPushStopped', [], successCallback) this.callNative("isPushStopped", [], successCallback);
} };
JPushPlugin.prototype.clearLocalNotifications = function () { JPushPlugin.prototype.clearLocalNotifications = function() {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('clearLocalNotifications', [], null) this.callNative("clearLocalNotifications", [], null);
} else { } else {
this.clearAllLocalNotifications() this.clearAllLocalNotifications();
} }
} };
/** /**
* 设置标签 * 设置标签
* 注意该接口是覆盖逻辑而不是增量逻辑即新的调用会覆盖之前的设置 * 注意该接口是覆盖逻辑而不是增量逻辑即新的调用会覆盖之前的设置
* *
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] } * @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
*/ */
JPushPlugin.prototype.setTags = function (params, successCallback, errorCallback) { JPushPlugin.prototype.setTags = function(
this.callNative('setTags', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("setTags", [params], successCallback, errorCallback);
};
/** /**
* 新增标签 * 新增标签
* *
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] } * @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
*/ */
JPushPlugin.prototype.addTags = function (params, successCallback, errorCallback) { JPushPlugin.prototype.addTags = function(
this.callNative('addTags', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("addTags", [params], successCallback, errorCallback);
};
/** /**
* 删除指定标签 * 删除指定标签
* *
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] } * @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
*/ */
JPushPlugin.prototype.deleteTags = function (params, successCallback, errorCallback) { JPushPlugin.prototype.deleteTags = function(
this.callNative('deleteTags', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("deleteTags", [params], successCallback, errorCallback);
};
/** /**
* 清除所有标签 * 清除所有标签
* *
* @param params = { 'sequence': number } * @param params = { 'sequence': number }
*/ */
JPushPlugin.prototype.cleanTags = function (params, successCallback, errorCallback) { JPushPlugin.prototype.cleanTags = function(
this.callNative('cleanTags', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("cleanTags", [params], successCallback, errorCallback);
};
/** /**
* 查询所有标签 * 查询所有标签
* *
* @param params = { 'sequence': number } * @param params = { 'sequence': number }
*/ */
JPushPlugin.prototype.getAllTags = function (params, successCallback, errorCallback) { JPushPlugin.prototype.getAllTags = function(
this.callNative('getAllTags', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("getAllTags", [params], successCallback, errorCallback);
};
/** /**
* 查询指定标签与当前用户的绑定状态 * 查询指定标签与当前用户的绑定状态
* *
* @param params = { 'sequence': number, 'tag': string } * @param params = { 'sequence': number, 'tag': string }
*/ */
JPushPlugin.prototype.checkTagBindState = function (params, successCallback, errorCallback) { JPushPlugin.prototype.checkTagBindState = function(
this.callNative('checkTagBindState', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative(
"checkTagBindState",
[params],
successCallback,
errorCallback
);
};
/** /**
* 设置别名 * 设置别名
* 注意该接口是覆盖逻辑而不是增量逻辑即新的调用会覆盖之前的设置 * 注意该接口是覆盖逻辑而不是增量逻辑即新的调用会覆盖之前的设置
* *
* @param params = { 'sequence': number, 'alias': string } * @param params = { 'sequence': number, 'alias': string }
*/ */
JPushPlugin.prototype.setAlias = function (params, successCallback, errorCallback) { JPushPlugin.prototype.setAlias = function(
this.callNative('setAlias', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("setAlias", [params], successCallback, errorCallback);
};
/** /**
* 删除别名 * 删除别名
* *
* @param params = { 'sequence': number } * @param params = { 'sequence': number }
*/ */
JPushPlugin.prototype.deleteAlias = function (params, successCallback, errorCallback) { JPushPlugin.prototype.deleteAlias = function(
this.callNative('deleteAlias', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("deleteAlias", [params], successCallback, errorCallback);
};
/** /**
* 查询当前绑定的别名 * 查询当前绑定的别名
* *
* @param params = { 'sequence': number } * @param params = { 'sequence': number }
*/ */
JPushPlugin.prototype.getAlias = function (params, successCallback, errorCallback) { JPushPlugin.prototype.getAlias = function(
this.callNative('getAlias', [params], successCallback, errorCallback) params,
} successCallback,
errorCallback
) {
this.callNative("getAlias", [params], successCallback, errorCallback);
};
// 判断系统设置中是否对本应用启用通知。 // 判断系统设置中是否对本应用启用通知。
// iOS: 返回值如果大于 0代表通知开启0: 通知关闭。 // iOS: 返回值如果大于 0代表通知开启0: 通知关闭。
@ -161,224 +215,260 @@ JPushPlugin.prototype.getAlias = function (params, successCallback, errorCallbac
// UIRemoteNotificationTypeAlert = 1 << 2, // UIRemoteNotificationTypeAlert = 1 << 2,
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3, // UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
// Android: 返回值 1 代表通知启用0: 通知关闭。 // Android: 返回值 1 代表通知启用0: 通知关闭。
JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) { JPushPlugin.prototype.getUserNotificationSettings = function(successCallback) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('getUserNotificationSettings', [], successCallback) this.callNative("getUserNotificationSettings", [], successCallback);
} else if (device.platform === 'Android') { } else if (device.platform === "Android") {
this.callNative('areNotificationEnabled', [], successCallback) this.callNative("areNotificationEnabled", [], successCallback);
} }
} };
// iOS methods // iOS methods
JPushPlugin.prototype.startJPushSDK = function () { JPushPlugin.prototype.startJPushSDK = function() {
this.callNative('startJPushSDK', [], null) this.callNative("startJPushSDK", [], null);
} };
JPushPlugin.prototype.setBadge = function (value) { JPushPlugin.prototype.setBadge = function(value) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('setBadge', [value], null) this.callNative("setBadge", [value], null);
} }
} };
JPushPlugin.prototype.resetBadge = function () { JPushPlugin.prototype.resetBadge = function() {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('resetBadge', [], null) this.callNative("resetBadge", [], null);
} }
} };
JPushPlugin.prototype.setDebugModeFromIos = function () { JPushPlugin.prototype.setDebugModeFromIos = function() {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('setDebugModeFromIos', [], null) this.callNative("setDebugModeFromIos", [], null);
} }
} };
JPushPlugin.prototype.setLogOFF = function () { JPushPlugin.prototype.setLogOFF = function() {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('setLogOFF', [], null) this.callNative("setLogOFF", [], null);
} }
} };
JPushPlugin.prototype.setCrashLogON = function () { JPushPlugin.prototype.setCrashLogON = function() {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('crashLogON', [], null) this.callNative("crashLogON", [], null);
} }
} };
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content, JPushPlugin.prototype.addLocalNotificationForIOS = function(
badge, notificationID, extras) { delayTime,
content,
badge,
notificationID,
extras
) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('setLocalNotification', [delayTime, content, badge, notificationID, extras], null) this.callNative(
"setLocalNotification",
[delayTime, content, badge, notificationID, extras],
null
);
} }
} };
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function (identifierKey) { JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function(
identifierKey
) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('deleteLocalNotificationWithIdentifierKey', [identifierKey], null) this.callNative(
"deleteLocalNotificationWithIdentifierKey",
[identifierKey],
null
);
} }
} };
JPushPlugin.prototype.clearAllLocalNotifications = function () { JPushPlugin.prototype.clearAllLocalNotifications = function() {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('clearAllLocalNotifications', [], null) this.callNative("clearAllLocalNotifications", [], null);
} }
} };
JPushPlugin.prototype.setLocation = function (latitude, longitude) { JPushPlugin.prototype.setLocation = function(latitude, longitude) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('setLocation', [latitude, longitude], null) this.callNative("setLocation", [latitude, longitude], null);
} }
} };
JPushPlugin.prototype.startLogPageView = function (pageName) { JPushPlugin.prototype.startLogPageView = function(pageName) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('startLogPageView', [pageName], null) this.callNative("startLogPageView", [pageName], null);
} }
} };
JPushPlugin.prototype.stopLogPageView = function (pageName) { JPushPlugin.prototype.stopLogPageView = function(pageName) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('stopLogPageView', [pageName], null) this.callNative("stopLogPageView", [pageName], null);
} }
} };
JPushPlugin.prototype.beginLogPageView = function (pageName, duration) { JPushPlugin.prototype.beginLogPageView = function(pageName, duration) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('beginLogPageView', [pageName, duration], null) this.callNative("beginLogPageView", [pageName, duration], null);
} }
} };
JPushPlugin.prototype.setApplicationIconBadgeNumber = function (badge) { JPushPlugin.prototype.setApplicationIconBadgeNumber = function(badge) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('setApplicationIconBadgeNumber', [badge], null) this.callNative("setApplicationIconBadgeNumber", [badge], null);
} }
} };
JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) { JPushPlugin.prototype.getApplicationIconBadgeNumber = function(callback) {
if (this.isPlatformIOS()) { if (this.isPlatformIOS()) {
this.callNative('getApplicationIconBadgeNumber', [], callback) this.callNative("getApplicationIconBadgeNumber", [], callback);
} }
} };
JPushPlugin.prototype.addDismissActions = function (actions, categoryId) { JPushPlugin.prototype.addDismissActions = function(actions, categoryId) {
this.callNative('addDismissActions', [actions, categoryId]) this.callNative("addDismissActions", [actions, categoryId]);
} };
JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) { JPushPlugin.prototype.addNotificationActions = function(actions, categoryId) {
this.callNative('addNotificationActions', [actions, categoryId]) this.callNative("addNotificationActions", [actions, categoryId]);
} };
// Android methods // Android methods
JPushPlugin.prototype.getConnectionState = function (successCallback) { JPushPlugin.prototype.getConnectionState = function(successCallback) {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('getConnectionState', [], successCallback) this.callNative("getConnectionState", [], successCallback);
} }
} };
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () { JPushPlugin.prototype.setBasicPushNotificationBuilder = function() {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('setBasicPushNotificationBuilder', [], null) this.callNative("setBasicPushNotificationBuilder", [], null);
} }
} };
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () { JPushPlugin.prototype.setCustomPushNotificationBuilder = function() {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('setCustomPushNotificationBuilder', [], null) this.callNative("setCustomPushNotificationBuilder", [], null);
} }
} };
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function (data) { JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function(data) {
if (device.platform === 'Android') { if (device.platform === "Android") {
data = JSON.stringify(data) data = JSON.stringify(data);
var event = JSON.parse(data) var event = JSON.parse(data);
cordova.fireDocumentEvent('jpush.receiveRegistrationId', event) cordova.fireDocumentEvent("jpush.receiveRegistrationId", event);
} }
} };
JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) { JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) {
data = JSON.stringify(data) data = JSON.stringify(data);
this.receiveMessage = JSON.parse(data) this.receiveMessage = JSON.parse(data);
cordova.fireDocumentEvent('jpush.receiveMessage', this.receiveMessage) cordova.fireDocumentEvent("jpush.receiveMessage", this.receiveMessage);
} };
JPushPlugin.prototype.openNotificationInAndroidCallback = function (data) { JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) {
data = JSON.stringify(data) data = JSON.stringify(data);
this.openNotification = JSON.parse(data) this.openNotification = JSON.parse(data);
cordova.fireDocumentEvent('jpush.openNotification', this.openNotification) cordova.fireDocumentEvent("jpush.openNotification", this.openNotification);
} };
JPushPlugin.prototype.receiveNotificationInAndroidCallback = function (data) { JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data) {
data = JSON.stringify(data) data = JSON.stringify(data);
this.receiveNotification = JSON.parse(data) this.receiveNotification = JSON.parse(data);
cordova.fireDocumentEvent('jpush.receiveNotification', this.receiveNotification) cordova.fireDocumentEvent(
} "jpush.receiveNotification",
this.receiveNotification
);
};
JPushPlugin.prototype.clearAllNotification = function () { JPushPlugin.prototype.clearAllNotification = function() {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('clearAllNotification', [], null) this.callNative("clearAllNotification", [], null);
} }
} };
JPushPlugin.prototype.clearNotificationById = function (id) { JPushPlugin.prototype.clearNotificationById = function(id) {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('clearNotificationById', [id], null) this.callNative("clearNotificationById", [id], null);
} }
} };
JPushPlugin.prototype.setLatestNotificationNum = function (num) { JPushPlugin.prototype.setLatestNotificationNum = function(num) {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('setLatestNotificationNum', [num], null) this.callNative("setLatestNotificationNum", [num], null);
} }
} };
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title, JPushPlugin.prototype.addLocalNotification = function(
notificationID, broadcastTime, extras) { builderId,
if (device.platform === 'Android') { content,
this.callNative('addLocalNotification', title,
[builderId, content, title, notificationID, broadcastTime, extras], null) notificationID,
broadcastTime,
extras
) {
if (device.platform === "Android") {
this.callNative(
"addLocalNotification",
[builderId, content, title, notificationID, broadcastTime, extras],
null
);
} }
} };
JPushPlugin.prototype.removeLocalNotification = function (notificationID) { JPushPlugin.prototype.removeLocalNotification = function(notificationID) {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('removeLocalNotification', [notificationID], null) this.callNative("removeLocalNotification", [notificationID], null);
} }
} };
JPushPlugin.prototype.reportNotificationOpened = function (msgID) { JPushPlugin.prototype.reportNotificationOpened = function(msgID) {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('reportNotificationOpened', [msgID], null) this.callNative("reportNotificationOpened", [msgID], null);
} }
} };
/** /**
* 用于在 Android 6.0 及以上系统申请一些权限 * 用于在 Android 6.0 及以上系统申请一些权限
* 具体可看https://docs.jiguang.cn/jpush/client/Android/android_api/#android-60 * 具体可看http://docs.jpush.io/client/android_api/#android-60
*/ */
JPushPlugin.prototype.requestPermission = function () { JPushPlugin.prototype.requestPermission = function() {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('requestPermission', [], null) this.callNative("requestPermission", [], null);
} }
} };
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) { JPushPlugin.prototype.setSilenceTime = function(
if (device.platform === 'Android') { startHour,
this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null) startMinute,
endHour,
endMinute
) {
if (device.platform === "Android") {
this.callNative(
"setSilenceTime",
[startHour, startMinute, endHour, endMinute],
null
);
} }
} };
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) { JPushPlugin.prototype.setPushTime = function(weekdays, startHour, endHour) {
if (device.platform === 'Android') { if (device.platform === "Android") {
this.callNative('setPushTime', [weekdays, startHour, endHour], null) this.callNative("setPushTime", [weekdays, startHour, endHour], null);
} }
} };
if (!window.plugins) { if (!window.plugins) {
window.plugins = {} window.plugins = {};
} }
if (!window.plugins.jPushPlugin) { if (!window.plugins.jPushPlugin) {
window.plugins.jPushPlugin = new JPushPlugin() window.plugins.jPushPlugin = new JPushPlugin();
} }
module.exports = new JPushPlugin() module.exports = new JPushPlugin();