diff --git a/README.md b/README.md
index 59b553b..a561920 100644
--- a/README.md
+++ b/README.md
@@ -62,10 +62,22 @@ Android 的推送通过长连接的方式实现,只有在连接保持的情况
或者自己实现应用保活,网上有很多相关文章(不推荐)。
> 为什么 QQ、微信之类的应用退出后还能够收到通知?因为这些大厂应用,手机厂商默认都会加入自启动白名单中,也不会在应用退出后杀死它们的相关服务。
-如果你多加留意,就会发现非大厂的应用如果你一段时间不用都是收不到推送的。
+> 如果你多加留意,就会发现非大厂的应用如果你一段时间不用都是收不到推送的。
### iOS
+
+#### 打包时遇到 i386 打包失败怎么办?
+
+```
+cordova platform update ios
+```
+
+#### ionic 2 如何调用 API?
+
+[issue 179](https://github.com/jpush/jpush-phonegap-plugin/issues/179)
+
#### PushConfig.plist 文件中的字段都是什么意思?
+
- Appkey:应用标识。
- Channel:渠道标识。
- IsProduction:是否生产环境。
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/plugin.xml b/plugin.xml
index 917adde..2629871 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -37,8 +37,8 @@
-
-
+
+
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/src/ios/lib/JPUSHService.h b/src/ios/lib/JPUSHService.h
index 9925460..2af2e76 100644
--- a/src/ios/lib/JPUSHService.h
+++ b/src/ios/lib/JPUSHService.h
@@ -9,7 +9,7 @@
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
*/
-#define JPUSH_VERSION_NUMBER 3.0.1
+#define JPUSH_VERSION_NUMBER 3.0.2
#import
diff --git a/src/ios/lib/jcore-ios-1.1.0.a b/src/ios/lib/jcore-ios-1.1.1.a
similarity index 90%
rename from src/ios/lib/jcore-ios-1.1.0.a
rename to src/ios/lib/jcore-ios-1.1.1.a
index dd63d2b..b6ceca2 100644
Binary files a/src/ios/lib/jcore-ios-1.1.0.a and b/src/ios/lib/jcore-ios-1.1.1.a differ
diff --git a/src/ios/lib/jpush-ios-3.0.1.a b/src/ios/lib/jpush-ios-3.0.2.a
similarity index 99%
rename from src/ios/lib/jpush-ios-3.0.1.a
rename to src/ios/lib/jpush-ios-3.0.2.a
index 182dca7..95e4fa0 100644
Binary files a/src/ios/lib/jpush-ios-3.0.1.a and b/src/ios/lib/jpush-ios-3.0.2.a differ
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)
}
}