mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-04-19 00:03:45 +08:00
Compare commits
91 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d855a07271 | |||
| c1e70448b1 | |||
| a9f6adb7af | |||
| 847d94c080 | |||
| c959fdddeb | |||
| 4285170332 | |||
| 86f07c9729 | |||
| e3d8d69147 | |||
| 8970e44dc1 | |||
| 7f3682e2a8 | |||
| dd716aaca7 | |||
| f5394d6d01 | |||
| 2fc0bc9213 | |||
| 4bc2fe3dc1 | |||
| 3bf9dae294 | |||
| ca88f5878a | |||
| 8d9a7fa8b0 | |||
| dead85a931 | |||
| 95330b11ed | |||
| cba5ffbabb | |||
| d524d8db00 | |||
| e20a10588f | |||
| eefc2e13cb | |||
| e8417df550 | |||
| 89293001e8 | |||
| 78222b7123 | |||
| 1fb48e886f | |||
| 28a9c298c8 | |||
| c65c5a4057 | |||
| 6a47116b82 | |||
| 68b217d8a8 | |||
| 13b36b746c | |||
| b234861e44 | |||
| 2287ef10dd | |||
| 2a05ea1784 | |||
| 9d3d32d725 | |||
| 3c88e87b17 | |||
| b3b2af1520 | |||
| 6e8b5931fb | |||
| 23ed4817a4 | |||
| 9a1da318cc | |||
| 2fab3a9e60 | |||
| a032906b1f | |||
| d362ee788b | |||
| 50588d593c | |||
| ea06f04415 | |||
| e4d8752065 | |||
| 9765352969 | |||
| 0589ac82ea | |||
| ff1fa91d67 | |||
| 14f91aacf8 | |||
| 15c403a471 | |||
| 8b0b8cc26f | |||
| 78e2e9736e | |||
| a8daded81b | |||
| 18f69303ce | |||
| 390fbb9fda | |||
| 3a4ceb32ce | |||
| 20ab9319bc | |||
| ef33ad5a85 | |||
| c355cd2b9f | |||
| 2463368cc1 | |||
| 7279fdd0ce | |||
| 75cb7dfe97 | |||
| 3b25b73adf | |||
| 2b2189f6cb | |||
| a48915f115 | |||
| 1fe6d0da8c | |||
| 42790c71f3 | |||
| 7d868be664 | |||
| 7b65a1f469 | |||
| 20d93c0047 | |||
| b1a77669a2 | |||
| 1cf537dacb | |||
| 575fe40faf | |||
| 6734bf9160 | |||
| fbfe621aa3 | |||
| df6adddc75 | |||
| 974838d5de | |||
| 727af516e8 | |||
| 423304c5dc | |||
| 5d7181a659 | |||
| eb0595e5c0 | |||
| c2f1bc86bf | |||
| 30fbc6094f | |||
| d39dea2441 | |||
| abfcd3c93a | |||
| 399d159757 | |||
| b96e36d6aa | |||
| 78310e5c69 | |||
| fbad235605 |
+39
-1
@@ -1 +1,39 @@
|
|||||||
.DS_Store
|
# Created by https://www.gitignore.io/api/macos,apachecordova
|
||||||
|
|
||||||
|
### ApacheCordova ###
|
||||||
|
# Apache Cordova generated files and directories
|
||||||
|
bin/*
|
||||||
|
!/plugins
|
||||||
|
!/plugins/android.json
|
||||||
|
!/plugins/fetch.json
|
||||||
|
plugins/*
|
||||||
|
platforms/*
|
||||||
|
|
||||||
|
### macOS ###
|
||||||
|
*.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
# End of https://www.gitignore.io/api/macos,apachecordova
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
||||||
[]()
|
[]()
|
||||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||||
[](https://github.com/jpush/jpush-phonegap-plugin)
|
[](https://github.com/jpush/jpush-phonegap-plugin)
|
||||||
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
||||||
|
|
||||||
@@ -17,16 +17,23 @@
|
|||||||
|
|
||||||
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
||||||
|
|
||||||
cordova plugin add jpush-phonegap-plugin --variable API_KEY=your_jpush_appkey
|
```
|
||||||
|
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
|
||||||
|
```
|
||||||
|
|
||||||
- 或直接通过 url 安装:
|
- 或直接通过 url 安装:
|
||||||
|
|
||||||
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable API_KEY=your_jpush_appkey
|
```
|
||||||
|
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable APP_KEY=your_jpush_appkey
|
||||||
|
```
|
||||||
|
|
||||||
- 或下载到本地安装:
|
- 或下载到本地安装:
|
||||||
|
|
||||||
cordova plugin add Your_Plugin_Path --variable API_KEY=your_jpush_appkey
|
```
|
||||||
|
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
|
||||||
|
```
|
||||||
|
|
||||||
|
> 如果你的 Cordova 版本 >= v7.0.0,在安装插件和添加 platform 时,在命令行最后加上 --nofetch,否则极大可能会报错。
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
### API
|
### API
|
||||||
@@ -45,7 +52,7 @@
|
|||||||
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可访问[极光社区](http://community.jiguang.cn/)或 [Issues](https://github.com/jpush/jpush-phonegap-plugin/issues) 提问。
|
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可到 [Issues](https://github.com/jpush/jpush-phonegap-plugin/issues) 提问。
|
||||||
|
|
||||||
### Android
|
### Android
|
||||||
#### 在 Eclipse 中 import 工程之后出现:*Type CallbackContext cannot be resolved to a type*
|
#### 在 Eclipse 中 import 工程之后出现:*Type CallbackContext cannot be resolved to a type*
|
||||||
@@ -62,10 +69,22 @@ Android 的推送通过长连接的方式实现,只有在连接保持的情况
|
|||||||
或者自己实现应用保活,网上有很多相关文章(不推荐)。
|
或者自己实现应用保活,网上有很多相关文章(不推荐)。
|
||||||
|
|
||||||
> 为什么 QQ、微信之类的应用退出后还能够收到通知?因为这些大厂应用,手机厂商默认都会加入自启动白名单中,也不会在应用退出后杀死它们的相关服务。
|
> 为什么 QQ、微信之类的应用退出后还能够收到通知?因为这些大厂应用,手机厂商默认都会加入自启动白名单中,也不会在应用退出后杀死它们的相关服务。
|
||||||
如果你多加留意,就会发现非大厂的应用如果你一段时间不用都是收不到推送的。
|
> 如果你多加留意,就会发现非大厂的应用如果你一段时间不用都是收不到推送的。
|
||||||
|
|
||||||
### iOS
|
### iOS
|
||||||
|
|
||||||
|
#### 打包时遇到 i386 打包失败怎么办?
|
||||||
|
|
||||||
|
```
|
||||||
|
cordova platform update ios
|
||||||
|
```
|
||||||
|
|
||||||
|
#### ionic 2 如何调用 API?
|
||||||
|
|
||||||
|
[issue 179](https://github.com/jpush/jpush-phonegap-plugin/issues/179)
|
||||||
|
|
||||||
#### PushConfig.plist 文件中的字段都是什么意思?
|
#### PushConfig.plist 文件中的字段都是什么意思?
|
||||||
|
|
||||||
- Appkey:应用标识。
|
- Appkey:应用标识。
|
||||||
- Channel:渠道标识。
|
- Channel:渠道标识。
|
||||||
- IsProduction:是否生产环境。
|
- IsProduction:是否生产环境。
|
||||||
|
|||||||
+20
-10
@@ -1,9 +1,10 @@
|
|||||||
# Android API简介
|
# Android API 简介
|
||||||
|
|
||||||
|
- [注册成功事件](#注册成功事件)
|
||||||
- [接收通知时获得通知的内容](#接收通知时获得通知的内容)
|
- [接收通知时获得通知的内容](#接收通知时获得通知的内容)
|
||||||
- [打开通知时获得通知的内容](#打开通知时获得通知的内容)
|
- [打开通知时获得通知的内容](#打开通知时获得通知的内容)
|
||||||
- [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容)
|
- [收到自定义消息时获取消息的内容](#收到自定义消息时获取消息的内容)
|
||||||
- [获取集成日志](#获取集成日志)
|
- [获取集成日志(同时适用于 iOS)](#获取集成日志同时适用于-ios)
|
||||||
- [接收消息和点击通知事件](#接收消息和点击通知事件)
|
- [接收消息和点击通知事件](#接收消息和点击通知事件)
|
||||||
- [统计分析](#统计分析)
|
- [统计分析](#统计分析)
|
||||||
- [清除通知](#清除通知)
|
- [清除通知](#清除通知)
|
||||||
@@ -14,6 +15,18 @@
|
|||||||
- [本地通知](#本地通知)
|
- [本地通知](#本地通知)
|
||||||
- [富媒体页面 JavaScript 回调 API](#富媒体页面-javascript-回调-api)
|
- [富媒体页面 JavaScript 回调 API](#富媒体页面-javascript-回调-api)
|
||||||
|
|
||||||
|
## 注册成功事件
|
||||||
|
### jpush.receiveRegistrationId
|
||||||
|
集成了 JPush SDK 的应用程序在第一次成功注册到 JPush 服务器时,JPush 服务器会给客户端返回一个唯一的该设备的标识 - RegistrationID。
|
||||||
|
就会触发这个事件(注意只有第一次会触发该事件,之后如果想要取到 registrationId,可以直接调用 *getRegistrationID* 方法)。
|
||||||
|
|
||||||
|
#### 代码示例
|
||||||
|
```Javascript
|
||||||
|
document.addEventListener('jpush.receiveRegistrationId', function (event) {
|
||||||
|
console.log(event.registrationId)
|
||||||
|
}, false)
|
||||||
|
```
|
||||||
|
|
||||||
## 接收通知时获得通知的内容
|
## 接收通知时获得通知的内容
|
||||||
|
|
||||||
- 内容:
|
- 内容:
|
||||||
@@ -39,7 +52,7 @@
|
|||||||
- 附加字段:
|
- 附加字段:
|
||||||
window.plugins.jPushPlugin.receiveMessage.extras.yourKey
|
window.plugins.jPushPlugin.receiveMessage.extras.yourKey
|
||||||
|
|
||||||
## 获取集成日志
|
## 获取集成日志(同时适用于 iOS)
|
||||||
|
|
||||||
### API - setDebugMode
|
### API - setDebugMode
|
||||||
|
|
||||||
@@ -55,7 +68,6 @@
|
|||||||
- true 显示集成日志。
|
- true 显示集成日志。
|
||||||
- false 不显示集成日志。
|
- false 不显示集成日志。
|
||||||
|
|
||||||
|
|
||||||
## 接收消息和点击通知事件
|
## 接收消息和点击通知事件
|
||||||
### API - receiveMessageInAndroidCallback
|
### API - receiveMessageInAndroidCallback
|
||||||
|
|
||||||
@@ -82,7 +94,6 @@
|
|||||||
|
|
||||||
- data: js 字符串。
|
- data: js 字符串。
|
||||||
|
|
||||||
|
|
||||||
## 统计分析
|
## 统计分析
|
||||||
|
|
||||||
### API - onResume / onPause
|
### API - onResume / onPause
|
||||||
@@ -250,28 +261,27 @@ JPush SDK 提供了 2 个用于定制通知栏样式的构建类:
|
|||||||
|
|
||||||
## 本地通知
|
## 本地通知
|
||||||
### API - addLocalNotification, removeLocalNotification, clearLocalNotifications
|
### API - addLocalNotification, removeLocalNotification, clearLocalNotifications
|
||||||
|
|
||||||
本地通知 API 不依赖于网络,无网条件下依旧可以触发。
|
本地通知 API 不依赖于网络,无网条件下依旧可以触发。
|
||||||
|
|
||||||
本地通知与网络推送的通知是相互独立的,不受保留最近通知条数上限的限制。
|
本地通知与网络推送的通知是相互独立的,不受保留最近通知条数上限的限制。
|
||||||
|
|
||||||
本地通知的定时时间是自发送时算起的,不受中间关机等操作的影响。
|
本地通知的定时时间是自发送时算起的,不受中间关机等操作的影响。
|
||||||
|
|
||||||
三个接口的功能分别为:添加一个本地通知,删除一个本地通知,删除所有的本地通知。
|
三个接口的功能分别为:添加一个本地通知,清除一个本地通知,清除所有的本地通知。
|
||||||
|
|
||||||
#####接口定义
|
#### 接口定义
|
||||||
|
|
||||||
window.plugins.jPushPlugin.addLocalNotification(builderId, content, title,
|
window.plugins.jPushPlugin.addLocalNotification(builderId, content, title,
|
||||||
notificaitonID, broadcastTime, extras)
|
notificaitonID, broadcastTime, extras)
|
||||||
window.plugins.jPushPlugin.removeLocalNotification(notificationID)
|
window.plugins.jPushPlugin.removeLocalNotification(notificationID)
|
||||||
window.plugins.jPushPlugin.clearLocalNotifications()
|
window.plugins.jPushPlugin.clearLocalNotifications() // 同时适用于 iOS
|
||||||
|
|
||||||
#### 参数说明
|
#### 参数说明
|
||||||
|
|
||||||
- builderId: 设置本地通知样式。
|
- builderId: 设置本地通知样式。
|
||||||
- content: 设置本地通知的 content。
|
- content: 设置本地通知的 content。
|
||||||
- title: 设置本地通知的 title。
|
- title: 设置本地通知的 title。
|
||||||
- notificaitonID: 设置本地通知的 ID。
|
- notificaitonID: 设置本地通知的 ID(不要为 0)。
|
||||||
- broadcastTime: 设置本地通知触发时间,为距离当前时间的数值,单位是毫秒。
|
- broadcastTime: 设置本地通知触发时间,为距离当前时间的数值,单位是毫秒。
|
||||||
- extras: 设置额外的数据信息 extras 为 json 字符串。
|
- extras: 设置额外的数据信息 extras 为 json 字符串。
|
||||||
|
|
||||||
|
|||||||
+30
-18
@@ -1,4 +1,4 @@
|
|||||||
# 通用 API 说明
|
# 通用 API 说明(同时适用于 Android 和 iOS 系统)
|
||||||
|
|
||||||
- [停止与恢复推送服务](#停止与恢复推送服务)
|
- [停止与恢复推送服务](#停止与恢复推送服务)
|
||||||
- [获取 RegistrationID](#获取-registrationid)
|
- [获取 RegistrationID](#获取-registrationid)
|
||||||
@@ -45,7 +45,6 @@
|
|||||||
|
|
||||||
window.plugins.jPushPlugin.stopPush()
|
window.plugins.jPushPlugin.stopPush()
|
||||||
|
|
||||||
|
|
||||||
### API - resumePush
|
### API - resumePush
|
||||||
|
|
||||||
恢复推送服务。调用了此 API 后:
|
恢复推送服务。调用了此 API 后:
|
||||||
@@ -72,7 +71,6 @@
|
|||||||
|
|
||||||
+ 平台检查推送服务是否注册。
|
+ 平台检查推送服务是否注册。
|
||||||
|
|
||||||
|
|
||||||
#### 接口定义
|
#### 接口定义
|
||||||
|
|
||||||
window.plugins.jPushPlugin.isPushStopped(callback)
|
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
|
## 获取 RegistrationID
|
||||||
|
|
||||||
@@ -149,9 +161,11 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
|
|
||||||
#### 接口定义
|
#### 接口定义
|
||||||
|
|
||||||
JPushPlugin.prototype.setTagsWithAlias(tags, alias)
|
```js
|
||||||
JPushPlugin.prototype.setTags(tags)
|
JPushPlugin.prototype.setTagsWithAlias(tags, alias, successCallback, errorCallback)
|
||||||
JPushPlugin.prototype.setAlias(alias)
|
JPushPlugin.prototype.setTags(tags, successCallback, errorCallback)
|
||||||
|
JPushPlugin.prototype.setAlias(alias, successCallback, errorCallback)
|
||||||
|
```
|
||||||
|
|
||||||
#### 参数说明
|
#### 参数说明
|
||||||
* tags:
|
* tags:
|
||||||
@@ -169,17 +183,15 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
||||||
* 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
|
* 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
|
||||||
|
|
||||||
#### 返回值说明
|
#### 代码示例
|
||||||
|
|
||||||
函数本身无返回值,但需要注册 `jpush.setTagsWithAlias` 事件来监听设置结果:
|
```js
|
||||||
|
window.plugins.jPushPlugin.setTagsWithAlias([tag1, tag2], alias1, function () {
|
||||||
document.addEventListener("jpush.setTagsWithAlias", function(event) {
|
// success callback.
|
||||||
console.log("onTagsWithAlias")
|
}, function (errorMsg) {
|
||||||
var result = "result code:" + event.resultCode + " "
|
// errorMsg 格式为 'errorCode: error message'.
|
||||||
result += "tags:" + event.tags + " "
|
})
|
||||||
result += "alias:" + event.alias + " "
|
```
|
||||||
$("#tagAliasResult").html(result)
|
|
||||||
}, false)
|
|
||||||
|
|
||||||
#### 错误码定义
|
#### 错误码定义
|
||||||
|
|
||||||
@@ -211,7 +223,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
if(device.platform == "Android") {
|
if(device.platform == "Android") {
|
||||||
alertContent = event.alert
|
alertContent = event.alert
|
||||||
} else {
|
} else {
|
||||||
lertContent = event.aps.alert
|
alertContent = event.aps.alert
|
||||||
}
|
}
|
||||||
}, false)
|
}, false)
|
||||||
|
|
||||||
@@ -266,7 +278,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
}
|
}
|
||||||
alert("open Notificaiton:" + alertContent)
|
alert("open Notificaiton:" + alertContent)
|
||||||
}, false)
|
}, false)
|
||||||
|
|
||||||
|
|
||||||
> ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意。
|
> ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.receiveNotification,直接访问即可,字段示例,根据实际推送情况,可能略有差别,请注意。
|
||||||
|
|
||||||
|
|||||||
+28
-6
@@ -1,5 +1,6 @@
|
|||||||
# iOS API
|
# iOS API
|
||||||
|
|
||||||
|
- [延迟注册和启动推送通知服务](#延迟注册和启动推送通知服务)
|
||||||
- [开始与停止推送服务](#开始与停止推送服务)
|
- [开始与停止推送服务](#开始与停止推送服务)
|
||||||
- [获取 RegistrationID](#获取-registrationid)
|
- [获取 RegistrationID](#获取-registrationid)
|
||||||
- [别名与标签](#别名与标签)
|
- [别名与标签](#别名与标签)
|
||||||
@@ -19,6 +20,30 @@
|
|||||||
- [获取用户推送设置](#获取用户推送设置)
|
- [获取用户推送设置](#获取用户推送设置)
|
||||||
- [监听事件统一说明](#监听事件统一说明)
|
- [监听事件统一说明](#监听事件统一说明)
|
||||||
|
|
||||||
|
|
||||||
|
## 延迟注册和启动推送通知服务
|
||||||
|
|
||||||
|
本插件默认在 App 启动完成之后,立即「注册苹果通知服务」+「启动 JPush SDK」,其中:
|
||||||
|
|
||||||
|
- 「注册苹果通知服务」会弹出提示窗口向用户请求权限。
|
||||||
|
- 「启动 JPush SDK」是使用 JPush 各项 API 的必要条件。
|
||||||
|
|
||||||
|
开发者可以根据自己的需求,延迟注册和启动,需做以下操作:
|
||||||
|
|
||||||
|
1. 查找并配置 `PushConfig.plist` 文件中的 `Delay` 字段为 `YES`,表明会延迟使用,此时插件不再自动注册、启动通知。
|
||||||
|
2. 在需要注册并启动通知的地方调用 API - startJPushSDK。
|
||||||
|
|
||||||
|
### API - startJPushSDK
|
||||||
|
|
||||||
|
注册苹果通知服务,并启动 JPush SDK。
|
||||||
|
|
||||||
|
#### 接口定义
|
||||||
|
|
||||||
|
```
|
||||||
|
window.plugins.jPushPlugin.startJPushSDK()
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## 开始与停止推送服务
|
## 开始与停止推送服务
|
||||||
|
|
||||||
### API - init
|
### API - init
|
||||||
@@ -60,8 +85,6 @@ window.plugins.jPushPlugin.init()
|
|||||||
window.plugins.jPushPlugin.resumePush()
|
window.plugins.jPushPlugin.resumePush()
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### API - isPushStopped
|
### API - isPushStopped
|
||||||
|
|
||||||
iOS平台,检查推送服务是否停止。
|
iOS平台,检查推送服务是否停止。
|
||||||
@@ -379,7 +402,7 @@ JPush 封装 badge 功能,允许应用上传 badge 值至 JPush 服务器,
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
window.plugins.jPushPlugin.prototype.setBadge(value)
|
window.plugins.jPushPlugin.prototype.setBadge(value)
|
||||||
window.plugins.jPushPlugin.prototype.reSetBadge()
|
window.plugins.jPushPlugin.prototype.resetBadge()
|
||||||
```
|
```
|
||||||
|
|
||||||
resetBadge 相当于 setBadge(0)。
|
resetBadge 相当于 setBadge(0)。
|
||||||
@@ -396,7 +419,7 @@ value 取值范围:[0,99999]。
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
window.plugins.jPushPlugin.setBadge(5)
|
window.plugins.jPushPlugin.setBadge(5)
|
||||||
window.plugins.jPushPlugin.reSetBadge()
|
window.plugins.jPushPlugin.resetBadge()
|
||||||
```
|
```
|
||||||
|
|
||||||
### API - setApplicationIconBadgeNumber
|
### API - setApplicationIconBadgeNumber
|
||||||
@@ -411,7 +434,7 @@ window.plugins.jPushPlugin.prototype.setApplicationIconBadgeNumber(badge)
|
|||||||
|
|
||||||
#### 参数说明
|
#### 参数说明
|
||||||
|
|
||||||
- badge: 整形,例如 0,1,2(当 badge 为 0 时,角标被清除)。
|
- badge: 整型,例如 0,1,2(当 badge 为 0 时,角标被清除)。
|
||||||
|
|
||||||
#### 代码示例
|
#### 代码示例
|
||||||
|
|
||||||
@@ -855,4 +878,3 @@ window.plugins.jPushPlugin.prototype.getUserNotificationSettings(callback)
|
|||||||
##### jpush.receiveLocalNotification
|
##### jpush.receiveLocalNotification
|
||||||
|
|
||||||
> [iOS 10 before 收到本地通知](#ios-10-before-收到本地通知)
|
> [iOS 10 before 收到本地通知](#ios-10-before-收到本地通知)
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -116,7 +116,10 @@
|
|||||||
if (tag3 != "") {
|
if (tag3 != "") {
|
||||||
tags.push(tag3);
|
tags.push(tag3);
|
||||||
}
|
}
|
||||||
window.plugins.jPushPlugin.setTagsWithAlias(tags, alias);
|
window.plugins.jPushPlugin.setTagsWithAlias(tags, alias, function () {
|
||||||
|
// Success callback
|
||||||
|
console.log(tags + ' - ' + alias)
|
||||||
|
});
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
console.log(exception);
|
console.log(exception);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>aps-environment</key>
|
||||||
|
<string>development</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* Author: Derek Chia <snipking@gmail.com>
|
||||||
|
* common functions for cordova plugin after hook
|
||||||
|
*/
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
module.exports.addAPNSinEntitlements = (entitlementPath, isProduction) => {
|
||||||
|
if( fs.existsSync(entitlementPath) ) {
|
||||||
|
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Reading entitlements file asynchronously");
|
||||||
|
|
||||||
|
let toInsert = '<key>aps-environment</key>\n' +
|
||||||
|
'\t\t<string>development</string>';
|
||||||
|
if(isProduction) {
|
||||||
|
toInsert = '<key>aps-environment</key>\n' +
|
||||||
|
'\t\t<string>production</string>';
|
||||||
|
}
|
||||||
|
|
||||||
|
let re1 = new RegExp('<key>aps-environment<\/key>(.|[\r\n])*<string>.*<\/string>');
|
||||||
|
let matched = data.match(re1);
|
||||||
|
let result;
|
||||||
|
if (matched === null) {
|
||||||
|
if(data.match(/<\/dict>/g)) {
|
||||||
|
result = data.replace(/<\/dict>/, '\t' + toInsert + '\n\t</dict>');
|
||||||
|
} else if(data.match(/<dict\/>/g)) {
|
||||||
|
result = data.replace(/<dict\/>/, '\t<dict>\n\t\t' + toInsert + '\n\t</dict>');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result = data.replace(re1, toInsert);
|
||||||
|
}
|
||||||
|
|
||||||
|
// write result to entitlements file
|
||||||
|
fs.writeFile(entitlementPath, result, {"encoding": 'utf8'}, function(err) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log(entitlementPath + " written successfully");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log("Entitlement File '" + entitlementPath + "' not found. Make sure your ios platform upper than 4.3.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.removeAPNSinEntitlements = (entitlementPath) => {
|
||||||
|
if( fs.existsSync(entitlementPath) ) {
|
||||||
|
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Reading entitlements file asynchronously");
|
||||||
|
|
||||||
|
let re1 = new RegExp('<key>aps-environment<\/key>(.|[\r\n])*<string>.*<\/string>');
|
||||||
|
let matched = data.match(re1);
|
||||||
|
let result;
|
||||||
|
if (matched != null) {
|
||||||
|
result = data.replace(re1, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
// write result to entitlements file
|
||||||
|
fs.writeFile(entitlementPath, result, {"encoding": 'utf8'}, function(err) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log(entitlementPath + " written successfully");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
console.log("Entitlement File '" + entitlementPath + "' not found. Make sure your ios platform upper than 4.3.0");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.getXcodeProjName = (searchPath) => {
|
||||||
|
if(searchPath == null || searchPath == undefined) {
|
||||||
|
searchPath = './';
|
||||||
|
}
|
||||||
|
let resultFolderName = null;
|
||||||
|
let folderNames = fs.readdirSync(searchPath).filter(file => fs.lstatSync(path.join(searchPath, file)).isDirectory());
|
||||||
|
let folderNamesReg = new RegExp('.*\.xcodeproj', 'g') // get filder name like `*.xcodeproj`
|
||||||
|
for(let folderName of folderNames) {
|
||||||
|
if(folderName.match(folderNamesReg)) {
|
||||||
|
resultFolderName = folderName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultFolderName.substr(0, resultFolderName.length - 10);
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Author: Derek Chia <snipking@gmail.com>
|
||||||
|
* Cordova plugin after hook to disable `Push Notification` capability for XCode 8
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
let commonFuncs = require('./common');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove APNS env from cordova project Entitlements-Debug.plist and Entitlements-Release.plist
|
||||||
|
* This two file will work when xcode archive app
|
||||||
|
*/
|
||||||
|
let disablePushNotificationForCI = (basePath, xcodeprojName) => {
|
||||||
|
commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Debug.plist');
|
||||||
|
commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Release.plist');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove APNS env to entitlement file; disable Push Notification capability in .pbxproj file
|
||||||
|
* This two file will work when xcode archive app
|
||||||
|
*/
|
||||||
|
let disablePushNotificationForXCode = (entitlementsPath, pbxprojPath) => {
|
||||||
|
/**
|
||||||
|
* remove APNS env to entitlement file
|
||||||
|
*/
|
||||||
|
if( fs.existsSync(entitlementsPath) ) {
|
||||||
|
commonFuncs.removeAPNSinEntitlements(entitlementsPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* disable Push Notification capability in .pbxproj file
|
||||||
|
* equally disable "Push Notification" switch in xcode
|
||||||
|
*/
|
||||||
|
fs.readFile(pbxprojPath, "utf8", function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log("Reading pbxproj file asynchronously");
|
||||||
|
|
||||||
|
// turn off Push Notification Capability
|
||||||
|
let re4rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*com\.apple\.Push = {(.|[\r\n])*enabled = [01]');
|
||||||
|
let parts = re4rep.exec(data);
|
||||||
|
result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '0');
|
||||||
|
|
||||||
|
// write result to project.pbxproj
|
||||||
|
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log(pbxprojPath + " written successfully");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let basePath = './platforms/ios/';
|
||||||
|
let buildType = 'dev';
|
||||||
|
let xcodeprojName = commonFuncs.getXcodeProjName(basePath);
|
||||||
|
let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj';
|
||||||
|
let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements';
|
||||||
|
|
||||||
|
disablePushNotificationForCI(basePath, xcodeprojName);
|
||||||
|
|
||||||
|
disablePushNotificationForXCode(entitlementsPath, pbxprojPath);
|
||||||
@@ -0,0 +1,172 @@
|
|||||||
|
/*
|
||||||
|
* Author: Derek Chia <snipking@gmail.com>
|
||||||
|
* Cordova plugin after hook to enable `Push Notification` capability for XCode 8
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
let commonFuncs = require('./common');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add APNS env to cordova project Entitlements-Debug.plist and Entitlements-Release.plist
|
||||||
|
* This two file will work when xcode archive app
|
||||||
|
*/
|
||||||
|
let enablePushNotificationForCI = (basePath, xcodeprojName) => {
|
||||||
|
commonFuncs.addAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Debug.plist', false);
|
||||||
|
commonFuncs.addAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Release.plist', true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add APNS env to entitlement file; enable Push Notification capability in .pbxproj file
|
||||||
|
* This two file will work when xcode archive app
|
||||||
|
*/
|
||||||
|
let enablePushNotificationForXCode = (entitlementsPath, pbxprojPath, cordovaBuildConfig) => {
|
||||||
|
console.log('will enable push notification capability for XCode');
|
||||||
|
let needAddEntitlementToPbxproj = false;
|
||||||
|
/**
|
||||||
|
* add APNS env to entitlement file
|
||||||
|
* without this file will cause a worning in xcode
|
||||||
|
*/
|
||||||
|
if( fs.existsSync(entitlementsPath) ) {
|
||||||
|
commonFuncs.addAPNSinEntitlements(entitlementsPath, false);
|
||||||
|
} else {
|
||||||
|
// copy default entitlements file
|
||||||
|
fs.readFile(__dirname + '/apns.entitlements', 'utf8', function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
|
||||||
|
fs.writeFileSync(entitlementsPath, data);
|
||||||
|
console.log(entitlementsPath + " written successfully");
|
||||||
|
});
|
||||||
|
|
||||||
|
needAddEntitlementToPbxproj = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enable Push Notification capability in .pbxproj file
|
||||||
|
* equally enable "Push Notification" switch in xcode
|
||||||
|
*/
|
||||||
|
fs.readFile(pbxprojPath, "utf8", function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log("Reading pbxproj file asynchronously");
|
||||||
|
|
||||||
|
// add Push Notification Capability
|
||||||
|
let re1 = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes', 'g');
|
||||||
|
let re1rep = new RegExp('isa = PBXProject;(.|[\r\n])*attributes = {', 'g');
|
||||||
|
let re2 = new RegExp('(?:isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*)SystemCapabilities', 'g');
|
||||||
|
let re2rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes = {', 'g');
|
||||||
|
let re3 = new RegExp('(?:isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*)com\.apple\.Push', 'g');
|
||||||
|
let re3rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities = {', 'g');
|
||||||
|
let re4rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*com\.apple\.Push = {(.|[\r\n])*enabled = [01]');
|
||||||
|
|
||||||
|
let matched = data.match(re1);
|
||||||
|
let result;
|
||||||
|
if (matched === null) {
|
||||||
|
console.log('re1 not match, no TargetAttributes');
|
||||||
|
result = data.replace(re1rep, 'isa = PBXProject;\n' +
|
||||||
|
'\t\t\tattributes = {\n' +
|
||||||
|
'\t\t\t\tTargetAttributes = {\n' +
|
||||||
|
'\t\t\t\t\t1D6058900D05DD3D006BFB54 = {\n' +
|
||||||
|
'\t\t\t\t\t\tDevelopmentTeam = ' + cordovaBuildConfig.ios.release.developmentTeam + ';\n' +
|
||||||
|
'\t\t\t\t\t\tSystemCapabilities = {\n' +
|
||||||
|
'\t\t\t\t\t\t\tcom.apple.Push = {\n' +
|
||||||
|
'\t\t\t\t\t\t\t\tenabled = 1;\n' +
|
||||||
|
'\t\t\t\t\t\t\t};\n' +
|
||||||
|
'\t\t\t\t\t\t};\n' +
|
||||||
|
'\t\t\t\t\t};\n' +
|
||||||
|
'\t\t\t\t};');
|
||||||
|
} else {
|
||||||
|
matched = data.match(re2);
|
||||||
|
if(matched === null) {
|
||||||
|
console.log('re2 not match, nothing under TargetAttributes');
|
||||||
|
let parts = re2rep.exec(data);
|
||||||
|
result = data.replace(re2rep, parts[0] + '\n' + '\t\t\t\t\t1D6058900D05DD3D006BFB54 = {\n' +
|
||||||
|
'\t\t\t\t\t\tDevelopmentTeam = ' + cordovaBuildConfig.ios.release.developmentTeam + ';\n' +
|
||||||
|
'\t\t\t\t\t\tSystemCapabilities = {\n' +
|
||||||
|
'\t\t\t\t\t\t\tcom.apple.Push = {\n' +
|
||||||
|
'\t\t\t\t\t\t\t\tenabled = 1;\n' +
|
||||||
|
'\t\t\t\t\t\t\t};\n' +
|
||||||
|
'\t\t\t\t\t\t};\n' +
|
||||||
|
'\t\t\t\t\t};');
|
||||||
|
} else {
|
||||||
|
matched = data.match(re3);
|
||||||
|
if(matched === null) {
|
||||||
|
console.log('re3 not match, no com.apple.Push defined');
|
||||||
|
let parts = re3rep.exec(data);
|
||||||
|
result = data.replace(re3rep, parts[0] + '\n' + '\t\t\t\t\t\t\tcom.apple.Push = {\n' +
|
||||||
|
'\t\t\t\t\t\t\t\tenabled = 1;\n' +
|
||||||
|
'\t\t\t\t\t\t\t};');
|
||||||
|
} else {
|
||||||
|
console.log('just enable com.apple.Push');
|
||||||
|
let parts = re4rep.exec(data);
|
||||||
|
result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '1');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// add entitlements
|
||||||
|
if (needAddEntitlementToPbxproj) {
|
||||||
|
|
||||||
|
let pathArray = entitlementsPath.split("/");
|
||||||
|
let entitlementsFileName = pathArray[pathArray.length - 1];
|
||||||
|
let projectFolderName = pathArray[pathArray.length - 2];
|
||||||
|
|
||||||
|
result = result.replace(new RegExp('\\/\\* Begin PBXFileReference section \\*\\/'), '/* Begin PBXFileReference section */\n' +
|
||||||
|
'\t\tD7BB385F1E4DB54800345BF4 /* ' + entitlementsFileName + ' */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = "' + entitlementsFileName + '"; path = "' + projectFolderName + '/' + entitlementsFileName + '"; sourceTree = "<group>"; };');
|
||||||
|
result = result.replace(new RegExp('\\/\\* CustomTemplate \\*\\/.*\n.*isa = PBXGroup;.*\n.*children = \\('), '/* CustomTemplate */ = {\n' +
|
||||||
|
'\t\t\tisa = PBXGroup;\n' +
|
||||||
|
'\t\t\tchildren = (\n' +
|
||||||
|
'\t\t\t\tD7BB385F1E4DB54800345BF4 /* ' + entitlementsFileName + ' */,');
|
||||||
|
let re5rep = new RegExp('\\/\\* Debug \\*\\/.*\n.*isa = XCBuildConfiguration;.*\n.*\n.*buildSettings = {');
|
||||||
|
let parts = result.match(re5rep);
|
||||||
|
result = result.replace(re5rep, parts + '\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = "' + projectFolderName + '/' + entitlementsFileName + '";');
|
||||||
|
|
||||||
|
let re6rep = new RegExp('\\/\\* Release \\*\\/.*\n.*isa = XCBuildConfiguration;.*\n.*\n.*buildSettings = {');
|
||||||
|
parts = result.match(re6rep);
|
||||||
|
result = result.replace(re6rep, parts + '\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = "' + projectFolderName + '/' + entitlementsFileName + '";');
|
||||||
|
}
|
||||||
|
|
||||||
|
// write result to project.pbxproj
|
||||||
|
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log(pbxprojPath + " written successfully");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = (context) => {
|
||||||
|
let basePath = './platforms/ios/';
|
||||||
|
let buildType = 'dev';
|
||||||
|
let xcodeprojName = commonFuncs.getXcodeProjName(basePath);
|
||||||
|
let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj';
|
||||||
|
let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements';
|
||||||
|
|
||||||
|
let cordovaBuildConfigPath = './build.json'
|
||||||
|
let cordovaBuildConfig = null;
|
||||||
|
let willEnablePushNotificationForXCode = true;
|
||||||
|
try { // try to read ios developmentTeam from build.json
|
||||||
|
cordovaBuildConfig = JSON.parse(fs.readFileSync(cordovaBuildConfigPath, "utf8"));
|
||||||
|
if(cordovaBuildConfig.ios.release.developmentTeam === null && cordovaBuildConfig.ios.release.developmentTeam === undefined) {
|
||||||
|
throw 'no valid developmentTeam found in build.json';
|
||||||
|
}
|
||||||
|
} catch(e) {
|
||||||
|
console.log("Do not detected 'build.json' or ios.release.developmentTeam not avaliable in 'build.json' \n" +
|
||||||
|
"Will not enable XCode Push Notification Capability. \n" +
|
||||||
|
"Will only enable Push Notification for CI by add config to '" + basePath + xcodeprojName + "/Entitlements-Debug.plist' and '" + basePath + xcodeprojName + "/Entitlements-Release.plist' \n" +
|
||||||
|
"Please add 'build.json' to cordova project root folder to make after hook fully functional. \n" +
|
||||||
|
"Reference [1]https://cordova.apache.org/docs/en/latest/reference/cordova-cli/#cordova-build-command \n" +
|
||||||
|
"Reference [2]https://cordova.apache.org/docs/en/latest/guide/platforms/ios/#signing-an-app");
|
||||||
|
willEnablePushNotificationForXCode = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
enablePushNotificationForCI(basePath, xcodeprojName);
|
||||||
|
|
||||||
|
if(willEnablePushNotificationForXCode) {
|
||||||
|
enablePushNotificationForXCode(entitlementsPath, pbxprojPath, cordovaBuildConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
+32
-37
@@ -1,39 +1,34 @@
|
|||||||
{
|
{
|
||||||
"name": "jpush-phonegap-plugin",
|
"name": "jpush-phonegap-plugin",
|
||||||
"version": "2.2.8",
|
"version": "3.1.9",
|
||||||
"description": "JPush for cordova plugin",
|
"description": "JPush for cordova plugin",
|
||||||
"cordova": {
|
"cordova": {
|
||||||
"id": "jpush-phonegap-plugin",
|
"id": "jpush-phonegap-plugin",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"ios",
|
"ios",
|
||||||
"android"
|
"android"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git+https://github.com/jpush/jpush-phonegap-plugin.git"
|
"url": "git+https://github.com/jpush/jpush-phonegap-plugin.git"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"JPush",
|
"JPush",
|
||||||
"push",
|
"push",
|
||||||
"Push",
|
"Push",
|
||||||
"ecosystem:cordova",
|
"ecosystem:cordova",
|
||||||
"cordova-ios",
|
"cordova-ios",
|
||||||
"cordova-android"
|
"cordova-android"
|
||||||
],
|
],
|
||||||
"engines": [
|
"devDependencies": {
|
||||||
{
|
"cordova-plugin-device": "*",
|
||||||
"name": "cordova",
|
"cordova-plugin-jcore": "*"
|
||||||
"version": ">=3.0"
|
},
|
||||||
}
|
"author": "JiGuang",
|
||||||
],
|
"license": "MIT",
|
||||||
"peerDependencies": {
|
"bugs": {
|
||||||
"cordova-plugin-device": ">=1.0.0"
|
"url": "https://github.com/jpush/jpush-phonegap-plugin/issues"
|
||||||
},
|
},
|
||||||
"author": "JiGuang",
|
"homepage": "https://github.com/jpush/jpush-phonegap-plugin#readme"
|
||||||
"license": "MIT",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/jpush/jpush-phonegap-plugin/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/jpush/jpush-phonegap-plugin#readme"
|
|
||||||
}
|
}
|
||||||
|
|||||||
+45
-31
@@ -2,15 +2,15 @@
|
|||||||
<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.0.1">
|
version="3.1.9">
|
||||||
|
|
||||||
<name>JPush Plugin</name>
|
<name>JPush</name>
|
||||||
<description>JPush for cordova plugin</description>
|
<description>JPush for cordova plugin</description>
|
||||||
<author>JPush</author>
|
<author>JPush</author>
|
||||||
<keywords>JPush,push</keywords>
|
<keywords>JPush,push</keywords>
|
||||||
<license>MIT License</license>
|
<license>MIT License</license>
|
||||||
|
|
||||||
<preference name="API_KEY" />
|
<preference name="APP_KEY" />
|
||||||
|
|
||||||
<engines>
|
<engines>
|
||||||
<engine name="cordova" version=">=3.0" />
|
<engine name="cordova" version=">=3.0" />
|
||||||
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
<!-- dependencies -->
|
<!-- dependencies -->
|
||||||
<dependency id="cordova-plugin-device" />
|
<dependency id="cordova-plugin-device" />
|
||||||
|
<dependency id="cordova-plugin-jcore" />
|
||||||
|
|
||||||
<js-module src="www/JPushPlugin.js" name="JPushPlugin">
|
<js-module src="www/JPushPlugin.js" name="JPushPlugin">
|
||||||
<clobbers target="JPush" />
|
<clobbers target="JPush" />
|
||||||
@@ -37,9 +38,8 @@
|
|||||||
<source-file src="src/ios/Plugins/AppDelegate+JPush.m" />
|
<source-file src="src/ios/Plugins/AppDelegate+JPush.m" />
|
||||||
|
|
||||||
<header-file src="src/ios/lib/JPUSHService.h" />
|
<header-file src="src/ios/lib/JPUSHService.h" />
|
||||||
<source-file src="src/ios/lib/jpush-ios-3.0.0.a" framework="true" />
|
<source-file src="src/ios/lib/jpush-ios-3.0.5.a" framework="true" />
|
||||||
<source-file src="src/ios/lib/jcore-ios-1.0.0.a" framework="true" />
|
<resource-file src="src/ios/JPushConfig.plist" />
|
||||||
<resource-file src="src/ios/PushConfig.plist" />
|
|
||||||
|
|
||||||
<framework src="CFNetwork.framework" weak="true" />
|
<framework src="CFNetwork.framework" weak="true" />
|
||||||
<framework src="CoreFoundation.framework" weak="true" />
|
<framework src="CoreFoundation.framework" weak="true" />
|
||||||
@@ -54,16 +54,19 @@
|
|||||||
<framework src="UserNotifications.framework" weak="true" />
|
<framework src="UserNotifications.framework" weak="true" />
|
||||||
<framework src="libresolv.tbd" weak="true" />
|
<framework src="libresolv.tbd" weak="true" />
|
||||||
|
|
||||||
|
<config-file target="*JPushConfig.plist" parent="Appkey">
|
||||||
<config-file target="*PushConfig.plist" parent="Appkey">
|
<string>$APP_KEY</string>
|
||||||
<string>$API_KEY</string>
|
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
|
<hook type="after_platform_add" src="hooks/iosEnablePush.js" />
|
||||||
|
<hook type="after_plugin_install" src="hooks/iosEnablePush.js" />
|
||||||
|
<hook type="before_plugin_uninstall" src="hooks/iosDisablePush.js" />
|
||||||
</platform>
|
</platform>
|
||||||
|
|
||||||
<platform name="android">
|
<platform name="android">
|
||||||
<config-file target="res/xml/config.xml" parent="/*">
|
<config-file target="res/xml/config.xml" parent="/*">
|
||||||
<feature name="JPushPlugin">
|
<feature name="JPushPlugin">
|
||||||
<param name="android-package" value="cn.jpush.phonegap.JPushPlugin" />
|
<param name="android-package" value="cn.jiguang.cordova.push.JPushPlugin" />
|
||||||
</feature>
|
</feature>
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
@@ -81,8 +84,10 @@
|
|||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||||
<permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />
|
<permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE"
|
||||||
|
android:protectionLevel="signature" />
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<config-file target="AndroidManifest.xml" parent="/manifest/application">
|
<config-file target="AndroidManifest.xml" parent="/manifest/application">
|
||||||
<!-- Required SDK核心功能-->
|
<!-- Required SDK核心功能-->
|
||||||
<activity android:name="cn.jpush.android.ui.PushActivity"
|
<activity android:name="cn.jpush.android.ui.PushActivity"
|
||||||
@@ -110,7 +115,8 @@
|
|||||||
<!-- Required SDK 核心功能-->
|
<!-- Required SDK 核心功能-->
|
||||||
<service android:name="cn.jpush.android.service.PushService"
|
<service android:name="cn.jpush.android.service.PushService"
|
||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="false">
|
android:exported="false"
|
||||||
|
android:process=":remote">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="cn.jpush.android.intent.REGISTER" />
|
<action android:name="cn.jpush.android.intent.REGISTER" />
|
||||||
<action android:name="cn.jpush.android.intent.REPORT" />
|
<action android:name="cn.jpush.android.intent.REPORT" />
|
||||||
@@ -121,10 +127,11 @@
|
|||||||
|
|
||||||
<!-- Required SDK核心功能-->
|
<!-- Required SDK核心功能-->
|
||||||
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
||||||
android:enabled="true">
|
android:enabled="true"
|
||||||
|
android:exported="false">
|
||||||
<intent-filter android:priority="1000">
|
<intent-filter android:priority="1000">
|
||||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
|
||||||
<!--Required 显示通知栏 -->
|
<!--Required 显示通知栏 -->
|
||||||
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||||
<category android:name="$PACKAGE_NAME" />
|
<category android:name="$PACKAGE_NAME" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
@@ -135,12 +142,15 @@
|
|||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||||
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||||
|
<data android:scheme="package" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
|
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
|
||||||
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
||||||
<service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true">
|
<service android:name="cn.jpush.android.service.DaemonService"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="cn.jpush.android.intent.DaemonService" />
|
<action android:name="cn.jpush.android.intent.DaemonService" />
|
||||||
<category android:name="$PACKAGE_NAME" />
|
<category android:name="$PACKAGE_NAME" />
|
||||||
@@ -148,7 +158,9 @@
|
|||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
||||||
<receiver android:name="cn.jpush.phonegap.MyReceiver" android:enabled="true">
|
<receiver
|
||||||
|
android:name="cn.jiguang.cordova.push.MyReceiver"
|
||||||
|
android:enabled="true">
|
||||||
<intent-filter android:priority="1000">
|
<intent-filter android:priority="1000">
|
||||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||||
<!-- Required 显示通知栏 -->
|
<!-- Required 显示通知栏 -->
|
||||||
@@ -169,29 +181,31 @@
|
|||||||
<category android:name="$PACKAGE_NAME" />
|
<category android:name="$PACKAGE_NAME" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
<!-- Required SDK核心功能-->
|
<!-- Required SDK核心功能-->
|
||||||
<receiver android:name="cn.jpush.android.service.AlarmReceiver" />
|
<receiver
|
||||||
|
android:name="cn.jpush.android.service.AlarmReceiver"
|
||||||
|
android:exported="false" />
|
||||||
|
|
||||||
<!-- Required. Enable it you can get statistics data with channel -->
|
<!-- Required. Enable it you can get statistics data with channel -->
|
||||||
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
|
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
|
||||||
<meta-data android:name="JPUSH_APPKEY" android:value="$API_KEY" />
|
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<source-file src="src/android/libs/jpush-android_v3.0.0.jar" target-dir="libs" />
|
<source-file src="src/android/libs/jpush-android_v3.0.6.jar" target-dir="libs" />
|
||||||
<source-file src="src/android/libs/jcore-android_v1.0.0.jar" target-dir="libs" />
|
|
||||||
<source-file src="src/android/libs/armeabi/libjcore100.so" target-dir="libs/armeabi" />
|
|
||||||
<source-file src="src/android/libs/armeabi-v7a/libjcore100.so" target-dir="libs/armeabi-v7a" />
|
|
||||||
<source-file src="src/android/libs/arm64-v8a/libjcore100.so" target-dir="libs/arm64-v8a" />
|
|
||||||
<source-file src="src/android/libs/x86/libjcore100.so" target-dir="libs/x86" />
|
|
||||||
<source-file src="src/android/libs/x86_64/libjcore100.so" target-dir="libs/x86_64" />
|
|
||||||
|
|
||||||
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap" />
|
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||||
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap" />
|
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||||
|
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml" target-dir="res/drawable" />
|
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml"
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml" target-dir="res/drawable" />
|
target-dir="res/drawable" />
|
||||||
|
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml"
|
||||||
|
target-dir="res/drawable" />
|
||||||
|
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png" target-dir="res/drawable-hdpi" />
|
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png"
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png" target-dir="res/drawable-hdpi" />
|
target-dir="res/drawable-hdpi" />
|
||||||
|
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png"
|
||||||
|
target-dir="res/drawable-hdpi" />
|
||||||
|
|
||||||
<source-file src="src/android/res/layout/jpush_popwin_layout.xml" target-dir="res/layout" />
|
<source-file src="src/android/res/layout/jpush_popwin_layout.xml" target-dir="res/layout" />
|
||||||
<source-file src="src/android/res/layout/jpush_webview_layout.xml" target-dir="res/layout" />
|
<source-file src="src/android/res/layout/jpush_webview_layout.xml" target-dir="res/layout" />
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package cn.jpush.phonegap;
|
package cn.jiguang.cordova.push;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -262,6 +262,26 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
JPushPlugin.notificationAlert = null;
|
JPushPlugin.notificationAlert = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void transmitReceiveRegistrationId(String rId) {
|
||||||
|
if (instance == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
JSONObject data = new JSONObject();
|
||||||
|
try {
|
||||||
|
data.put("registrationId", rId);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
String format = "window.plugins.jPushPlugin.receiveRegistrationIdInAndroidCallback(%s);";
|
||||||
|
final String js = String.format(format, data.toString());
|
||||||
|
cordovaActivity.runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
instance.webView.loadUrl("javascript:" + js);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(final String action, final JSONArray data,
|
public boolean execute(final String action, final JSONArray data,
|
||||||
final CallbackContext callbackContext) throws JSONException {
|
final CallbackContext callbackContext) throws JSONException {
|
||||||
@@ -438,6 +458,11 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void getConnectionState(JSONArray data, CallbackContext callback) {
|
||||||
|
boolean isConnected = JPushInterface.getConnectionState(cordovaActivity.getApplicationContext());
|
||||||
|
callback.success(String.valueOf(isConnected));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义通知行为,声音、震动、呼吸灯等。
|
* 自定义通知行为,声音、震动、呼吸灯等。
|
||||||
*/
|
*/
|
||||||
@@ -479,6 +504,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
} catch (JSONException e) {
|
} catch (JSONException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
callbackContext.error("error reading id json");
|
callbackContext.error("error reading id json");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (notificationId != -1) {
|
if (notificationId != -1) {
|
||||||
JPushInterface.clearNotificationById(this.cordova.getActivity(), notificationId);
|
JPushInterface.clearNotificationById(this.cordova.getActivity(), notificationId);
|
||||||
@@ -617,7 +643,6 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
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);
|
||||||
|
|
||||||
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
|
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
|
||||||
} catch (InvocationTargetException e) {
|
} catch (InvocationTargetException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@@ -632,5 +657,4 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-21
@@ -1,18 +1,18 @@
|
|||||||
package cn.jpush.phonegap;
|
package cn.jiguang.cordova.push;
|
||||||
|
|
||||||
|
import android.content.BroadcastReceiver;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import cn.jpush.android.api.JPushInterface;
|
import cn.jpush.android.api.JPushInterface;
|
||||||
import android.content.BroadcastReceiver;
|
|
||||||
import android.content.Context;
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
public class MyReceiver extends BroadcastReceiver {
|
public class MyReceiver extends BroadcastReceiver {
|
||||||
private static String TAG = "JPushPlugin";
|
|
||||||
private static final List<String> IGNORED_EXTRAS_KEYS =
|
private static final List<String> IGNORED_EXTRAS_KEYS =
|
||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
"cn.jpush.android.TITLE",
|
"cn.jpush.android.TITLE",
|
||||||
@@ -24,18 +24,15 @@ public class MyReceiver extends BroadcastReceiver {
|
|||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
String action = intent.getAction();
|
String action = intent.getAction();
|
||||||
if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(action)) {
|
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);
|
handlingMessageReceive(intent);
|
||||||
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(action)) {
|
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_RECEIVED)) {
|
||||||
handlingNotificationReceive(context, intent);
|
handlingNotificationReceive(context, intent);
|
||||||
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(action)) {
|
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_OPENED)) {
|
||||||
handlingNotificationOpen(context, intent);
|
handlingNotificationOpen(context, intent);
|
||||||
} else if (JPushInterface.ACTION_RICHPUSH_CALLBACK.equals(action)) {
|
|
||||||
// 当在 HTML 页面中调用 JPushWeb.triggerNativeAction(String params) 方法时触发此方法,
|
|
||||||
// 再进行相关的操作。
|
|
||||||
|
|
||||||
} else {
|
|
||||||
Log.d(TAG, "Unhandled intent - " + action);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,8 +43,6 @@ public class MyReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void handlingNotificationOpen(Context context, Intent intent) {
|
private void handlingNotificationOpen(Context context, Intent intent) {
|
||||||
Log.i(TAG, "---------------- handlingNotificationOpen");
|
|
||||||
|
|
||||||
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||||
JPushPlugin.openNotificationTitle = title;
|
JPushPlugin.openNotificationTitle = title;
|
||||||
|
|
||||||
@@ -60,15 +55,13 @@ public class MyReceiver 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());
|
||||||
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);
|
||||||
context.startActivity(launch);
|
context.startActivity(launch);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handlingNotificationReceive(Context context, Intent intent) {
|
private void handlingNotificationReceive(Context context, Intent intent) {
|
||||||
Log.i(TAG, "---------------- handlingNotificationReceive");
|
|
||||||
|
|
||||||
Intent launch = context.getPackageManager().getLaunchIntentForPackage(
|
Intent launch = context.getPackageManager().getLaunchIntentForPackage(
|
||||||
context.getPackageName());
|
context.getPackageName());
|
||||||
launch.addCategory(Intent.CATEGORY_LAUNCHER);
|
launch.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||||
@@ -99,5 +92,4 @@ public class MyReceiver extends BroadcastReceiver {
|
|||||||
}
|
}
|
||||||
return extrasMap;
|
return extrasMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -5,10 +5,12 @@
|
|||||||
<key>Appkey</key>
|
<key>Appkey</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Channel</key>
|
<key>Channel</key>
|
||||||
<string>Subscription</string>
|
<string>channel name</string>
|
||||||
<key>IsProduction</key>
|
<key>IsProduction</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>IsIDFA</key>
|
<key>IsIDFA</key>
|
||||||
<false/>
|
<false/>
|
||||||
|
<key>Delay</key>
|
||||||
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
@@ -12,4 +12,5 @@
|
|||||||
|
|
||||||
@interface AppDelegate (JPush) <JPUSHRegisterDelegate>
|
@interface AppDelegate (JPush) <JPUSHRegisterDelegate>
|
||||||
-(void)registerForRemoteNotification;
|
-(void)registerForRemoteNotification;
|
||||||
|
-(void)startJPushSDK;
|
||||||
@end
|
@end
|
||||||
|
|||||||
@@ -28,24 +28,48 @@
|
|||||||
return [self init_plus];
|
return [self init_plus];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)fireOpenNotification:(NSTimer*)timer{
|
||||||
|
if (SharedJPushPlugin) {
|
||||||
|
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[timer.userInfo toJsonString]];
|
||||||
|
[timer invalidate];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
NSDictionary *_launchOptions;
|
||||||
-(void)applicationDidLaunch:(NSNotification *)notification{
|
-(void)applicationDidLaunch:(NSNotification *)notification{
|
||||||
|
|
||||||
|
|
||||||
if (notification) {
|
if (notification) {
|
||||||
if (notification.userInfo) {
|
if (notification.userInfo) {
|
||||||
NSDictionary *userInfo1 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
|
NSDictionary *userInfo1 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
|
||||||
if (userInfo1.count > 0) {
|
if (userInfo1.count > 0) {
|
||||||
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo1 toJsonString]];
|
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fireOpenNotification:) userInfo:userInfo1 repeats:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
NSDictionary *userInfo2 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
|
NSDictionary *userInfo2 = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
|
||||||
if (userInfo2.count > 0) {
|
if (userInfo2.count > 0) {
|
||||||
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_StartLocalNotification jsString:[userInfo1 toJsonString]];
|
[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(fireOpenNotification:) userInfo:userInfo2 repeats:YES];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[JPUSHService setDebugMode];
|
[JPUSHService setDebugMode];
|
||||||
[self registerForRemoteNotification];
|
|
||||||
[JPushPlugin setupJPushSDK:notification.userInfo];
|
NSString *plistPath = [[NSBundle mainBundle] pathForResource:JPushConfig_FileName ofType:@"plist"];
|
||||||
|
NSMutableDictionary *plistData = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
|
||||||
|
NSNumber *delay = [plistData valueForKey:JPushConfig_Delay];
|
||||||
|
|
||||||
|
_launchOptions = notification.userInfo;
|
||||||
|
|
||||||
|
if (![delay boolValue]) {
|
||||||
|
[self startJPushSDK];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)startJPushSDK{
|
||||||
|
[self registerForRemoteNotification];
|
||||||
|
[JPushPlugin setupJPushSDK:_launchOptions];
|
||||||
|
}
|
||||||
|
|
||||||
-(void)registerForRemoteNotification{
|
-(void)registerForRemoteNotification{
|
||||||
if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
|
if ([[UIDevice currentDevice].systemVersion floatValue] >= 10.0) {
|
||||||
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
|
#ifdef NSFoundationVersionNumber_iOS_9_x_Max
|
||||||
@@ -75,7 +99,7 @@
|
|||||||
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
|
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
|
||||||
[JPUSHService handleRemoteNotification:userInfo];
|
[JPUSHService handleRemoteNotification:userInfo];
|
||||||
|
|
||||||
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
|
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
|
||||||
@@ -94,13 +118,13 @@
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
[SharedJPushPlugin jpushFireDocumentEvent:eventName jsString:[userInfo toJsonString]];
|
[JPushPlugin fireDocumentEvent:eventName jsString:[userInfo toJsonString]];
|
||||||
completionHandler(UIBackgroundFetchResultNewData);
|
completionHandler(UIBackgroundFetchResultNewData);
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{
|
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{
|
||||||
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:notification.request.content.userInfo];
|
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithDictionary:notification.request.content.userInfo];
|
||||||
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
||||||
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
|
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +134,7 @@
|
|||||||
[userInfo setValue:[response valueForKey:@"userText"] forKey:@"userText"];
|
[userInfo setValue:[response valueForKey:@"userText"] forKey:@"userText"];
|
||||||
} @catch (NSException *exception) { }
|
} @catch (NSException *exception) { }
|
||||||
[userInfo setValue:response.actionIdentifier forKey:@"actionIdentifier"];
|
[userInfo setValue:response.actionIdentifier forKey:@"actionIdentifier"];
|
||||||
[SharedJPushPlugin jpushFireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo toJsonString]];
|
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[userInfo toJsonString]];
|
||||||
completionHandler();
|
completionHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,15 +15,16 @@
|
|||||||
|
|
||||||
#define WEAK_SELF(weakSelf) __weak __typeof(&*self)weakSelf = self;
|
#define WEAK_SELF(weakSelf) __weak __typeof(&*self)weakSelf = self;
|
||||||
|
|
||||||
|
static NSString *const JPushConfig_FileName = @"JPushConfig";
|
||||||
static NSString *const JPushConfig_Appkey = @"Appkey";
|
static NSString *const JPushConfig_Appkey = @"Appkey";
|
||||||
static NSString *const JPushConfig_Channel = @"Channel";
|
static NSString *const JPushConfig_Channel = @"Channel";
|
||||||
static NSString *const JPushConfig_IsProduction = @"IsProduction";
|
static NSString *const JPushConfig_IsProduction = @"IsProduction";
|
||||||
static NSString *const JPushConfig_IsIDFA = @"IsIDFA";
|
static NSString *const JPushConfig_IsIDFA = @"IsIDFA";
|
||||||
static NSString *const JPushConfig_FileName = @"PushConfig";
|
static NSString *const JPushConfig_Delay = @"Delay";
|
||||||
|
|
||||||
static NSString *const JPushDocumentEvent_ReceiveNotification = @"receiveNotification";
|
static NSString *const JPushDocumentEvent_ReceiveNotification = @"receiveNotification";
|
||||||
static NSString *const JPushDocumentEvent_OpenNotification = @"openNotification";
|
static NSString *const JPushDocumentEvent_OpenNotification = @"openNotification";
|
||||||
static NSString *const JPushDocumentEvent_BackgroundNotification = @"backgroundNotification";
|
static NSString *const JPushDocumentEvent_BackgroundNotification = @"backgroundNotification";
|
||||||
static NSString *const JPushDocumentEvent_SetTagsWithAlias = @"setTagsWithAlias";
|
static NSString *const JPushDocumentEvent_SetTagsWithAlias = @"setTagsWithAlias";
|
||||||
static NSString *const JPushDocumentEvent_ReceiveMessage = @"receiveMessage";
|
static NSString *const JPushDocumentEvent_ReceiveMessage = @"receiveMessage";
|
||||||
static NSString *const JPushDocumentEvent_StartLocalNotification = @"startLocalNotification";
|
static NSString *const JPushDocumentEvent_StartLocalNotification = @"startLocalNotification";
|
||||||
|
|||||||
@@ -12,6 +12,9 @@
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//注册通知服务并启动 SDK
|
||||||
|
-(void)startJPushSDK:(CDVInvokedUrlCommand*)command;
|
||||||
|
|
||||||
//以下为js中可调用接口
|
//以下为js中可调用接口
|
||||||
//设置标签、别名
|
//设置标签、别名
|
||||||
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command;
|
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command;
|
||||||
@@ -72,13 +75,13 @@
|
|||||||
|
|
||||||
# pragma mark - private
|
# pragma mark - private
|
||||||
|
|
||||||
-(void)jpushFireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString;
|
+(void)fireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString;
|
||||||
|
|
||||||
+(void)setupJPushSDK:(NSDictionary*)userInfo;
|
+(void)setupJPushSDK:(NSDictionary*)userInfo;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
static JPushPlugin *SharedJPushPlugin;
|
JPushPlugin *SharedJPushPlugin;
|
||||||
|
|
||||||
@interface NSDictionary (JPush)
|
@interface NSDictionary (JPush)
|
||||||
-(NSString*)toJsonString;
|
-(NSString*)toJsonString;
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// PushTalkPlugin.m
|
// PushTalkPlugin.m
|
||||||
// PushTalk
|
// PushTalk
|
||||||
@@ -38,6 +39,10 @@
|
|||||||
|
|
||||||
@implementation JPushPlugin
|
@implementation JPushPlugin
|
||||||
|
|
||||||
|
-(void)startJPushSDK:(CDVInvokedUrlCommand*)command{
|
||||||
|
[(AppDelegate*)[UIApplication sharedApplication].delegate startJPushSDK];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark- 外部接口
|
#pragma mark- 外部接口
|
||||||
-(void)stopPush:(CDVInvokedUrlCommand*)command{
|
-(void)stopPush:(CDVInvokedUrlCommand*)command{
|
||||||
[[UIApplication sharedApplication]unregisterForRemoteNotifications];
|
[[UIApplication sharedApplication]unregisterForRemoteNotifications];
|
||||||
@@ -60,7 +65,7 @@
|
|||||||
|
|
||||||
- (void)pluginInitialize {
|
- (void)pluginInitialize {
|
||||||
NSLog(@"### pluginInitialize ");
|
NSLog(@"### pluginInitialize ");
|
||||||
SharedJPushPlugin = self;
|
[self initPlugin];
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@@ -69,38 +74,70 @@
|
|||||||
NSLog(@"### initWithWebView ");
|
NSLog(@"### initWithWebView ");
|
||||||
if (self=[super initWithWebView:theWebView]) {
|
if (self=[super initWithWebView:theWebView]) {
|
||||||
}
|
}
|
||||||
|
[self initPlugin];
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
-(void)jpushFireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString{
|
-(void)initPlugin{
|
||||||
|
if (!SharedJPushPlugin) {
|
||||||
|
SharedJPushPlugin = self;
|
||||||
|
}
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
||||||
|
selector:@selector(networkDidReceiveMessage:)
|
||||||
|
name:kJPFNetworkDidReceiveMessageNotification
|
||||||
|
object:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
+(void)fireDocumentEvent:(NSString*)eventName jsString:(NSString*)jsString{
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
[self.commandDelegate evalJs:[NSString stringWithFormat:@"cordova.fireDocumentEvent('jpush.%@',%@)", eventName, jsString]];
|
[SharedJPushPlugin.commandDelegate evalJs:[NSString stringWithFormat:@"cordova.fireDocumentEvent('jpush.%@',%@)", eventName, jsString]];
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{
|
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{
|
||||||
NSString *alias = [command argumentAtIndex:0];
|
NSString *alias = [command argumentAtIndex:0];
|
||||||
NSArray *tags = [command argumentAtIndex:1];
|
NSArray *tags = [command argumentAtIndex:1];
|
||||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
|
||||||
alias:alias
|
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
alias:alias
|
||||||
object:self];
|
fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
|
||||||
|
CDVPluginResult *result;
|
||||||
|
if (iResCode == 0) {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
|
||||||
|
} else {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
|
}
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setTags:(CDVInvokedUrlCommand *)command{
|
-(void)setTags:(CDVInvokedUrlCommand*)command{
|
||||||
NSArray *tags = command.arguments;
|
NSArray *tags = command.arguments;
|
||||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
alias:nil
|
||||||
object:self];
|
fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
|
||||||
|
CDVPluginResult *result;
|
||||||
|
if (iResCode == 0) {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
|
||||||
|
} else {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
|
}
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setAlias:(CDVInvokedUrlCommand *)command{
|
-(void)setAlias:(CDVInvokedUrlCommand*)command{
|
||||||
NSString *alias = [command argumentAtIndex:0];
|
NSString *alias = [command argumentAtIndex:0];
|
||||||
[JPUSHService setAlias:alias
|
[JPUSHService setTags:nil
|
||||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
alias:alias
|
||||||
object:self];
|
fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
|
||||||
|
CDVPluginResult *result;
|
||||||
|
if (iResCode == 0) {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
|
||||||
|
} else {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
|
}
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)getRegistrationID:(CDVInvokedUrlCommand*)command{
|
-(void)getRegistrationID:(CDVInvokedUrlCommand*)command{
|
||||||
@@ -133,12 +170,12 @@
|
|||||||
[JPUSHService resetBadge];
|
[JPUSHService resetBadge];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command{
|
-(void)setApplicationIconBadgeNumber:(CDVInvokedUrlCommand*)command{
|
||||||
NSNumber *badge = [command argumentAtIndex:0];
|
NSNumber *badge = [command argumentAtIndex:0];
|
||||||
[UIApplication sharedApplication].applicationIconBadgeNumber = badge.intValue;
|
[UIApplication sharedApplication].applicationIconBadgeNumber = badge.intValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)getApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command {
|
-(void)getApplicationIconBadgeNumber:(CDVInvokedUrlCommand*)command {
|
||||||
NSInteger num = [UIApplication sharedApplication].applicationIconBadgeNumber;
|
NSInteger num = [UIApplication sharedApplication].applicationIconBadgeNumber;
|
||||||
NSNumber *number = [NSNumber numberWithInteger:num];
|
NSNumber *number = [NSNumber numberWithInteger:num];
|
||||||
[self handleResultWithValue:number command:command];
|
[self handleResultWithValue:number command:command];
|
||||||
@@ -236,16 +273,22 @@
|
|||||||
NSString *textInputPlaceholder = dict[@"textInputPlaceholder"];
|
NSString *textInputPlaceholder = dict[@"textInputPlaceholder"];
|
||||||
UNTextInputNotificationAction *inputAction = [UNTextInputNotificationAction actionWithIdentifier:identifier title:title options:option.integerValue textInputButtonTitle:textInputButtonTitle textInputPlaceholder:textInputPlaceholder];
|
UNTextInputNotificationAction *inputAction = [UNTextInputNotificationAction actionWithIdentifier:identifier title:title options:option.integerValue textInputButtonTitle:textInputButtonTitle textInputPlaceholder:textInputPlaceholder];
|
||||||
[actions addObject:inputAction];
|
[actions addObject:inputAction];
|
||||||
}else{
|
} else {
|
||||||
UNNotificationAction *action = [UNNotificationAction actionWithIdentifier:title title:title options:option.integerValue];
|
UNNotificationAction *action = [UNNotificationAction actionWithIdentifier:title title:title options:option.integerValue];
|
||||||
[actions addObject:action];
|
[actions addObject:action];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNNotificationCategory *category;
|
UNNotificationCategory *category;
|
||||||
if (dimiss) {
|
if (dimiss) {
|
||||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction];
|
category = [UNNotificationCategory categoryWithIdentifier:categoryId
|
||||||
}else{
|
actions:actions
|
||||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionNone];
|
intentIdentifiers:@[]
|
||||||
|
options:UNNotificationCategoryOptionCustomDismissAction];
|
||||||
|
} else {
|
||||||
|
category = [UNNotificationCategory categoryWithIdentifier:categoryId
|
||||||
|
actions:actions
|
||||||
|
intentIdentifiers:@[]
|
||||||
|
options:UNNotificationCategoryOptionNone];
|
||||||
}
|
}
|
||||||
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]];
|
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]];
|
||||||
}
|
}
|
||||||
@@ -266,7 +309,7 @@
|
|||||||
NSNumber *isIDFA = [plistData valueForKey:JPushConfig_IsIDFA];
|
NSNumber *isIDFA = [plistData valueForKey:JPushConfig_IsIDFA];
|
||||||
|
|
||||||
NSString *advertisingId = nil;
|
NSString *advertisingId = nil;
|
||||||
if(isIDFA.boolValue){
|
if(isIDFA.boolValue) {
|
||||||
advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
|
advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
|
||||||
}
|
}
|
||||||
[JPUSHService setupWithOption:userInfo
|
[JPUSHService setupWithOption:userInfo
|
||||||
@@ -277,7 +320,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark 将参数返回给js
|
#pragma mark 将参数返回给js
|
||||||
-(void)handleResultWithValue:(id)value command:(CDVInvokedUrlCommand*)command{
|
-(void)handleResultWithValue:(id)value command:(CDVInvokedUrlCommand*)command {
|
||||||
CDVPluginResult *result = nil;
|
CDVPluginResult *result = nil;
|
||||||
CDVCommandStatus status = CDVCommandStatus_OK;
|
CDVCommandStatus status = CDVCommandStatus_OK;
|
||||||
|
|
||||||
@@ -301,17 +344,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark 设置标签及别名回调
|
#pragma mark 设置标签及别名回调
|
||||||
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias{
|
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias {
|
||||||
NSDictionary *dict = @{@"resultCode":[NSNumber numberWithInt:resultCode],
|
if (resultCode == 0) { // Success
|
||||||
@"tags" :tags == nil ? [NSNull null] : [tags allObjects],
|
|
||||||
@"alias" :alias == nil ? [NSNull null] : alias
|
} else {
|
||||||
};
|
|
||||||
[self jpushFireDocumentEvent:JPushDocumentEvent_SetTagsWithAlias jsString:[dict toJsonString]];
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)networkDidReceiveMessage:(NSNotification *)notification {
|
- (void)networkDidReceiveMessage:(NSNotification *)notification {
|
||||||
if (notification && notification.userInfo) {
|
if (notification && notification.userInfo) {
|
||||||
[self jpushFireDocumentEvent:JPushDocumentEvent_ReceiveMessage jsString:[notification.userInfo toJsonString]];
|
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage
|
||||||
|
jsString:[notification.userInfo toJsonString]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@
|
|||||||
* | | | | / /\ \ | | | | \ \______| |
|
* | | | | / /\ \ | | | | \ \______| |
|
||||||
* | | | | /_/ \_\ | | | | \_________|
|
* | | | | /_/ \_\ | | | | \_________|
|
||||||
*
|
*
|
||||||
* Copyright (c) 2011 ~ 2015 Shenzhen HXHG. All rights reserved.
|
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define JPUSH_VERSION_NUMBER 3.0.0
|
#define JPUSH_VERSION_NUMBER 3.0.5
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
@@ -456,7 +456,7 @@ callbackSelector:(SEL)cbSelector
|
|||||||
*
|
*
|
||||||
* SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
|
* SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
|
||||||
*
|
*
|
||||||
* 调用本接口可打开日志级别为: Debug, 打印调试日志.
|
* 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志.
|
||||||
*/
|
*/
|
||||||
+ (void)setDebugMode;
|
+ (void)setDebugMode;
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
+126
-102
@@ -7,49 +7,70 @@ JPushPlugin.prototype.openNotification = {}
|
|||||||
JPushPlugin.prototype.receiveNotification = {}
|
JPushPlugin.prototype.receiveNotification = {}
|
||||||
|
|
||||||
JPushPlugin.prototype.isPlatformIOS = function () {
|
JPushPlugin.prototype.isPlatformIOS = function () {
|
||||||
var isPlatformIOS = device.platform == 'iPhone' ||
|
return (device.platform === 'iPhone' ||
|
||||||
device.platform == 'iPad' ||
|
device.platform === 'iPad' ||
|
||||||
device.platform == 'iPod touch' ||
|
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)
|
console.log('JPush Callback Error: ' + msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.call_native = function (name, args, callback) {
|
JPushPlugin.prototype.callNative = function (name, args, successCallback, errorCallback) {
|
||||||
ret = cordova.exec(callback, this.error_callback, 'JPushPlugin', name, args)
|
if (errorCallback) {
|
||||||
return ret
|
cordova.exec(successCallback, errorCallback, 'JPushPlugin', name, args)
|
||||||
}
|
|
||||||
|
|
||||||
// public methods
|
|
||||||
JPushPlugin.prototype.init = function () {
|
|
||||||
if (this.isPlatformIOS()) {
|
|
||||||
this.call_native('initial', [], null)
|
|
||||||
} else {
|
} else {
|
||||||
this.call_native('init', [], null)
|
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.getRegistrationID = function (callback) {
|
// Common methods
|
||||||
this.call_native('getRegistrationID', [], callback)
|
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 () {
|
JPushPlugin.prototype.stopPush = function () {
|
||||||
this.call_native('stopPush', [], null)
|
this.callNative('stopPush', [], null)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.resumePush = function () {
|
JPushPlugin.prototype.resumePush = function () {
|
||||||
this.call_native('resumePush', [], null)
|
this.callNative('resumePush', [], null)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.isPushStopped = function (callback) {
|
JPushPlugin.prototype.isPushStopped = function (successCallback) {
|
||||||
this.call_native('isPushStopped', [], callback)
|
this.callNative('isPushStopped', [], successCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
// iOS methods
|
JPushPlugin.prototype.clearLocalNotifications = function () {
|
||||||
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
|
if (device.platform === 'Android') {
|
||||||
|
this.callNative('clearLocalNotifications', [], null)
|
||||||
|
} else {
|
||||||
|
this.clearAllLocalNotifications()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias, successCallback, errorCallback) {
|
||||||
if (tags == null) {
|
if (tags == null) {
|
||||||
this.setAlias(alias)
|
this.setAlias(alias)
|
||||||
return
|
return
|
||||||
@@ -60,142 +81,156 @@ JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
|
|||||||
}
|
}
|
||||||
var arrayTagWithAlias = [tags]
|
var arrayTagWithAlias = [tags]
|
||||||
arrayTagWithAlias.unshift(alias)
|
arrayTagWithAlias.unshift(alias)
|
||||||
this.call_native('setTagsWithAlias', arrayTagWithAlias, null)
|
this.callNative('setTagsWithAlias', arrayTagWithAlias, successCallback, errorCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setTags = function (tags) {
|
JPushPlugin.prototype.setTags = function (tags, successCallback, errorCallback) {
|
||||||
this.call_native('setTags', tags, null)
|
this.callNative('setTags', tags, successCallback, errorCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setAlias = function (alias) {
|
JPushPlugin.prototype.setAlias = function (alias, successCallback, errorCallback) {
|
||||||
this.call_native('setAlias', [alias], null)
|
this.callNative('setAlias', [alias], 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) {
|
JPushPlugin.prototype.setBadge = function (value) {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native('setBadge', [value], null)
|
this.callNative('setBadge', [value], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.resetBadge = function () {
|
JPushPlugin.prototype.resetBadge = function () {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native('resetBadge', [], null)
|
this.callNative('resetBadge', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setDebugModeFromIos = function () {
|
JPushPlugin.prototype.setDebugModeFromIos = function () {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native('setDebugModeFromIos', [], null)
|
this.callNative('setDebugModeFromIos', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setLogOFF = function () {
|
JPushPlugin.prototype.setLogOFF = function () {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native('setLogOFF', [], null)
|
this.callNative('setLogOFF', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setCrashLogON = function () {
|
JPushPlugin.prototype.setCrashLogON = function () {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native('crashLogON', [], null)
|
this.callNative('crashLogON', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content,
|
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content,
|
||||||
badge, notificationID, extras) {
|
badge, notificationID, extras) {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native('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.call_native('deleteLocalNotificationWithIdentifierKey', [identifierKey], null)
|
this.callNative('deleteLocalNotificationWithIdentifierKey', [identifierKey], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.clearAllLocalNotifications = function () {
|
JPushPlugin.prototype.clearAllLocalNotifications = function () {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native('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.call_native('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.call_native('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.call_native('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.call_native('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.call_native('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.call_native('getApplicationIconBadgeNumber', [], callback)
|
this.callNative('getApplicationIconBadgeNumber', [], callback)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断系统设置中是否对本应用启用通知。
|
|
||||||
// iOS: 返回值如果大于 0,代表通知开启;0: 通知关闭。
|
|
||||||
// UIRemoteNotificationTypeNone = 0,
|
|
||||||
// UIRemoteNotificationTypeBadge = 1 << 0,
|
|
||||||
// UIRemoteNotificationTypeSound = 1 << 1,
|
|
||||||
// UIRemoteNotificationTypeAlert = 1 << 2,
|
|
||||||
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
|
|
||||||
// Android: 返回值 1 代表通知启用、0: 通知关闭。
|
|
||||||
JPushPlugin.prototype.getUserNotificationSettings = function (callback) {
|
|
||||||
if (this.isPlatformIOS()) {
|
|
||||||
this.call_native('getUserNotificationSettings', [], callback)
|
|
||||||
} else if (device.platform == 'Android') {
|
|
||||||
this.call_native('areNotificationEnabled', [], callback)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.addDismissActions = function (actions, categoryId) {
|
JPushPlugin.prototype.addDismissActions = function (actions, categoryId) {
|
||||||
this.call_native('addDismissActions', [actions, categoryId])
|
this.callNative('addDismissActions', [actions, categoryId])
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
|
JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
|
||||||
this.call_native('addNotificationActions', [actions, categoryId])
|
this.callNative('addNotificationActions', [actions, categoryId])
|
||||||
}
|
}
|
||||||
|
|
||||||
// Android methods
|
// Android methods
|
||||||
JPushPlugin.prototype.setDebugMode = function (mode) {
|
JPushPlugin.prototype.getConnectionState = function (successCallback) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('setDebugMode', [mode], null)
|
this.callNative('getConnectionState', [], successCallback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('setBasicPushNotificationBuilder', [], null)
|
this.callNative('setBasicPushNotificationBuilder', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('setCustomPushNotificationBuilder', [], null)
|
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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,51 +256,40 @@ JPushPlugin.prototype.receiveNotificationInAndroidCallback = function (data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.clearAllNotification = function () {
|
JPushPlugin.prototype.clearAllNotification = function () {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('clearAllNotification', [], null)
|
this.callNative('clearAllNotification', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.clearNotificationById = function (notificationId) {
|
JPushPlugin.prototype.clearNotificationById = function (id) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('clearNotificationById', [notificationId], 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.call_native('setLatestNotificationNum', [num], null)
|
this.callNative('setLatestNotificationNum', [num], null)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.setDebugMode = function (mode) {
|
|
||||||
if (device.platform == 'Android') {
|
|
||||||
this.call_native('setDebugMode', [mode], null)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
|
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
|
||||||
notificationID, broadcastTime, extras) {
|
notificationID, broadcastTime, extras) {
|
||||||
if (device.platform == 'Android') {
|
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) {
|
JPushPlugin.prototype.removeLocalNotification = function (notificationID) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('removeLocalNotification', [notificationID], null)
|
this.callNative('removeLocalNotification', [notificationID], null)
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.clearLocalNotifications = function () {
|
|
||||||
if (device.platform == 'Android') {
|
|
||||||
this.call_native('clearLocalNotifications', [], null)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
|
JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('reportNotificationOpened', [msgID], null)
|
this.callNative('reportNotificationOpened', [msgID], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -274,8 +298,8 @@ JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
|
|||||||
*在 Portal 上展示给开发者。
|
*在 Portal 上展示给开发者。
|
||||||
*/
|
*/
|
||||||
JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('setStatisticsOpen', [mode], null)
|
this.callNative('setStatisticsOpen', [mode], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -284,20 +308,20 @@ JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
|||||||
* 具体可看:http://docs.jpush.io/client/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.call_native('requestPermission', [], null)
|
this.callNative('requestPermission', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
|
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
|
||||||
if (device.platform == 'Android') {
|
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) {
|
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.call_native('setPushTime', [weekdays, startHour, endHour], null)
|
this.callNative('setPushTime', [weekdays, startHour, endHour], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user