diff --git a/doc/Android_detail_api.md b/doc/Android_detail_api.md index 6bf5a5d..7cb03b6 100644 --- a/doc/Android_detail_api.md +++ b/doc/Android_detail_api.md @@ -3,7 +3,7 @@ - [接收通知时获得通知的内容](#接收通知时获得通知的内容) - [打开通知时获得通知的内容](#打开通知时获得通知的内容) - [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容) -- [获取集成日志](#获取集成日志) +- [获取集成日志(适用于 iOS)](#获取集成日志(适用于 iOS)) - [接收消息和点击通知事件](#接收消息和点击通知事件) - [统计分析](#统计分析) - [清除通知](#清除通知) @@ -39,7 +39,7 @@ - 附加字段: window.plugins.jPushPlugin.receiveMessage.extras.yourKey -## 获取集成日志 +## 获取集成日志(适用于 iOS) ### API - setDebugMode @@ -250,21 +250,20 @@ JPush SDK 提供了 2 个用于定制通知栏样式的构建类: ## 本地通知 ### API - addLocalNotification, removeLocalNotification, clearLocalNotifications - 本地通知 API 不依赖于网络,无网条件下依旧可以触发。 本地通知与网络推送的通知是相互独立的,不受保留最近通知条数上限的限制。 本地通知的定时时间是自发送时算起的,不受中间关机等操作的影响。 -三个接口的功能分别为:添加一个本地通知,删除一个本地通知,删除所有的本地通知。 +三个接口的功能分别为:添加一个本地通知,清除一个本地通知,清除所有的本地通知。 -#####接口定义 +#### 接口定义 window.plugins.jPushPlugin.addLocalNotification(builderId, content, title, notificaitonID, broadcastTime, extras) window.plugins.jPushPlugin.removeLocalNotification(notificationID) - window.plugins.jPushPlugin.clearLocalNotifications() + window.plugins.jPushPlugin.clearLocalNotifications() // 同时适用于 iOS #### 参数说明 diff --git a/doc/Common_detail_api.md b/doc/Common_detail_api.md index 115c607..b5e0a0e 100644 --- a/doc/Common_detail_api.md +++ b/doc/Common_detail_api.md @@ -1,4 +1,4 @@ -# 通用 API 说明 +# 通用 API 说明(同时适用于 Android 和 iOS 系统) - [停止与恢复推送服务](#停止与恢复推送服务) - [获取 RegistrationID](#获取-registrationid) @@ -45,7 +45,6 @@ window.plugins.jPushPlugin.stopPush() - ### API - resumePush 恢复推送服务。调用了此 API 后: @@ -72,7 +71,6 @@ + 平台检查推送服务是否注册。 - #### 接口定义 window.plugins.jPushPlugin.isPushStopped(callback) @@ -91,6 +89,20 @@ } }) +## 开启 Debug 模式 +### API - setDebugMode +用于开启 Debug 模式,显示更多的日志信息。 + +#### 接口定义 + + JPushPlugin.prototype.setDebugMode(isOpen) + +#### 参数说明 +- isOpen: true,开启 Debug 模式;false,关闭 Debug 模式,不显示错误信息之外的日志信息。 + +#### 代码示例 + + window.plugins.jPushPlugin.setDebugMode(true) ## 获取 RegistrationID @@ -266,7 +278,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。 } alert("open Notificaiton:" + alertContent) }, false) - + > ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意。 diff --git a/src/android/JPushPlugin.java b/src/android/JPushPlugin.java index b004b4f..c55e341 100644 --- a/src/android/JPushPlugin.java +++ b/src/android/JPushPlugin.java @@ -479,6 +479,7 @@ public class JPushPlugin extends CordovaPlugin { } catch (JSONException e) { e.printStackTrace(); callbackContext.error("error reading id json"); + return; } if (notificationId != -1) { JPushInterface.clearNotificationById(this.cordova.getActivity(), notificationId); @@ -617,7 +618,6 @@ public class JPushPlugin extends CordovaPlugin { Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId); int value = opValue.getInt(Integer.class); Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg); - return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED; } catch (InvocationTargetException e) { e.printStackTrace(); @@ -632,5 +632,4 @@ public class JPushPlugin extends CordovaPlugin { } return true; } - } diff --git a/www/JPushPlugin.js b/www/JPushPlugin.js index 7bea916..33cb3c8 100644 --- a/www/JPushPlugin.js +++ b/www/JPushPlugin.js @@ -7,51 +7,64 @@ JPushPlugin.prototype.openNotification = {} JPushPlugin.prototype.receiveNotification = {} JPushPlugin.prototype.isPlatformIOS = function () { - var isPlatformIOS = device.platform == 'iPhone' || + var isPlatformIOS = (device.platform == 'iPhone' || device.platform == 'iPad' || device.platform == 'iPod touch' || - device.platform == 'iOS' + device.platform == 'iOS') return isPlatformIOS } -JPushPlugin.prototype.error_callback = function (msg) { +JPushPlugin.prototype.errorCallback = function (msg) { console.log('Javascript Callback Error: ' + msg) } -JPushPlugin.prototype.call_native = function (name, args, callback) { - ret = cordova.exec(callback, this.error_callback, 'JPushPlugin', name, args) - return ret +JPushPlugin.prototype.callNative = function (name, args, successCallback) { + cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args) } -// public methods +// Common methods JPushPlugin.prototype.init = function () { if (this.isPlatformIOS()) { - this.call_native('initial', [], null) + this.callNative('initial', [], null) } else { - this.call_native('init', [], null) + this.callNative('init', [], null) } } -JPushPlugin.prototype.getRegistrationID = function (callback) { - this.call_native('getRegistrationID', [], callback) +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.call_native('stopPush', [], null) + this.callNative('stopPush', [], null) } JPushPlugin.prototype.resumePush = function () { - this.call_native('resumePush', [], null) + this.callNative('resumePush', [], null) } -JPushPlugin.prototype.isPushStopped = function (callback) { - this.call_native('isPushStopped', [], callback) +JPushPlugin.prototype.isPushStopped = function (successCallback) { + this.callNative('isPushStopped', [], successCallback) } -// iOS methods - -JPushPlugin.prototype.startJPushSDK = function () { - this.call_native('startJPushSDK', [] , null) +JPushPlugin.prototype.clearLocalNotifications = function () { + if (device.platform === 'Android') { + this.callNative('clearLocalNotifications', [], null) + } else { + this.clearAllLocalNotifications() + } } JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) { @@ -65,100 +78,15 @@ JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) { } var arrayTagWithAlias = [tags] arrayTagWithAlias.unshift(alias) - this.call_native('setTagsWithAlias', arrayTagWithAlias, null) + this.callNative('setTagsWithAlias', arrayTagWithAlias, null) } JPushPlugin.prototype.setTags = function (tags) { - this.call_native('setTags', tags, null) + this.callNative('setTags', tags, null) } JPushPlugin.prototype.setAlias = function (alias) { - this.call_native('setAlias', [alias], null) -} - -JPushPlugin.prototype.setBadge = function (value) { - if (this.isPlatformIOS()) { - this.call_native('setBadge', [value], null) - } -} - -JPushPlugin.prototype.resetBadge = function () { - if (this.isPlatformIOS()) { - this.call_native('resetBadge', [], null) - } -} - -JPushPlugin.prototype.setDebugModeFromIos = function () { - if (this.isPlatformIOS()) { - this.call_native('setDebugModeFromIos', [], null) - } -} - -JPushPlugin.prototype.setLogOFF = function () { - if (this.isPlatformIOS()) { - this.call_native('setLogOFF', [], null) - } -} - -JPushPlugin.prototype.setCrashLogON = function () { - if (this.isPlatformIOS()) { - this.call_native('crashLogON', [], null) - } -} - -JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content, - badge, notificationID, extras) { - if (this.isPlatformIOS()) { - this.call_native('setLocalNotification', [delayTime, content, badge, notificationID, extras], null) - } -} - -JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function (identifierKey) { - if (this.isPlatformIOS()) { - this.call_native('deleteLocalNotificationWithIdentifierKey', [identifierKey], null) - } -} - -JPushPlugin.prototype.clearAllLocalNotifications = function () { - if (this.isPlatformIOS()) { - this.call_native('clearAllLocalNotifications', [], null) - } -} - -JPushPlugin.prototype.setLocation = function (latitude, longitude) { - if (this.isPlatformIOS()) { - this.call_native('setLocation', [latitude, longitude], null) - } -} - -JPushPlugin.prototype.startLogPageView = function (pageName) { - if (this.isPlatformIOS()) { - this.call_native('startLogPageView', [pageName], null) - } -} - -JPushPlugin.prototype.stopLogPageView = function (pageName) { - if (this.isPlatformIOS()) { - this.call_native('stopLogPageView', [pageName], null) - } -} - -JPushPlugin.prototype.beginLogPageView = function (pageName, duration) { - if (this.isPlatformIOS()) { - this.call_native('beginLogPageView', [pageName, duration], null) - } -} - -JPushPlugin.prototype.setApplicationIconBadgeNumber = function (badge) { - if (this.isPlatformIOS()) { - this.call_native('setApplicationIconBadgeNumber', [badge], null) - } -} - -JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) { - if (this.isPlatformIOS()) { - this.call_native('getApplicationIconBadgeNumber', [], callback) - } + this.callNative('setAlias', [alias], null) } // 判断系统设置中是否对本应用启用通知。 @@ -169,38 +97,123 @@ JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) { // UIRemoteNotificationTypeAlert = 1 << 2, // UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3, // Android: 返回值 1 代表通知启用、0: 通知关闭。 -JPushPlugin.prototype.getUserNotificationSettings = function (callback) { +JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) { if (this.isPlatformIOS()) { - this.call_native('getUserNotificationSettings', [], callback) + this.callNative('getUserNotificationSettings', [], successCallback) } else if (device.platform == 'Android') { - this.call_native('areNotificationEnabled', [], callback) + 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.call_native('addDismissActions', [actions, categoryId]) + this.callNative('addDismissActions', [actions, categoryId]) } JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) { - this.call_native('addNotificationActions', [actions, categoryId]) + this.callNative('addNotificationActions', [actions, categoryId]) } // Android methods -JPushPlugin.prototype.setDebugMode = function (mode) { - if (device.platform == 'Android') { - this.call_native('setDebugMode', [mode], null) - } -} - JPushPlugin.prototype.setBasicPushNotificationBuilder = function () { if (device.platform == 'Android') { - this.call_native('setBasicPushNotificationBuilder', [], null) + this.callNative('setBasicPushNotificationBuilder', [], null) } } JPushPlugin.prototype.setCustomPushNotificationBuilder = function () { if (device.platform == 'Android') { - this.call_native('setCustomPushNotificationBuilder', [], null) + this.callNative('setCustomPushNotificationBuilder', [], null) } } @@ -226,51 +239,40 @@ JPushPlugin.prototype.receiveNotificationInAndroidCallback = function (data) { } JPushPlugin.prototype.clearAllNotification = function () { - if (device.platform == 'Android') { - this.call_native('clearAllNotification', [], null) + if (device.platform === 'Android') { + this.callNative('clearAllNotification', [], null) } } -JPushPlugin.prototype.clearNotificationById = function (notificationId) { - if (device.platform == 'Android') { - this.call_native('clearNotificationById', [notificationId], 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.call_native('setLatestNotificationNum', [num], null) - } -} - -JPushPlugin.prototype.setDebugMode = function (mode) { - if (device.platform == 'Android') { - this.call_native('setDebugMode', [mode], null) + this.callNative('setLatestNotificationNum', [num], null) } } JPushPlugin.prototype.addLocalNotification = function (builderId, content, title, notificationID, broadcastTime, extras) { if (device.platform == 'Android') { - this.call_native('addLocalNotification', [builderId, content, title, notificationID, broadcastTime, extras], null) + this.callNative('addLocalNotification', + [builderId, content, title, notificationID, broadcastTime, extras], null) } } JPushPlugin.prototype.removeLocalNotification = function (notificationID) { - if (device.platform == 'Android') { - this.call_native('removeLocalNotification', [notificationID], null) - } -} - -JPushPlugin.prototype.clearLocalNotifications = function () { - if (device.platform == 'Android') { - this.call_native('clearLocalNotifications', [], null) + if (device.platform === 'Android') { + this.callNative('removeLocalNotification', [notificationID], null) } } JPushPlugin.prototype.reportNotificationOpened = function (msgID) { - if (device.platform == 'Android') { - this.call_native('reportNotificationOpened', [msgID], null) + if (device.platform === 'Android') { + this.callNative('reportNotificationOpened', [msgID], null) } } @@ -280,7 +282,7 @@ JPushPlugin.prototype.reportNotificationOpened = function (msgID) { */ JPushPlugin.prototype.setStatisticsOpen = function (mode) { if (device.platform == 'Android') { - this.call_native('setStatisticsOpen', [mode], null) + this.callNative('setStatisticsOpen', [mode], null) } } @@ -290,19 +292,19 @@ JPushPlugin.prototype.setStatisticsOpen = function (mode) { */ JPushPlugin.prototype.requestPermission = function () { if (device.platform == 'Android') { - this.call_native('requestPermission', [], null) + this.callNative('requestPermission', [], null) } } JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) { if (device.platform == 'Android') { - this.call_native('setSilenceTime', [startHour, startMinute, endHour, endMinute], null) + this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null) } } JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) { if (device.platform == 'Android') { - this.call_native('setPushTime', [weekdays, startHour, endHour], null) + this.callNative('setPushTime', [weekdays, startHour, endHour], null) } }