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