forked from github/jpush-phonegap-plugin
Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3101dcdd8e | ||
|
|
a46da92fa1 | ||
|
|
5547d5716e | ||
|
|
7da0a25db0 | ||
|
|
0c74ff328d | ||
|
|
2065ad44ce | ||
|
|
cbe8e511f2 | ||
|
|
9a47c88873 | ||
|
|
684039b044 | ||
|
|
356de48d31 | ||
|
|
d412b10d3e | ||
|
|
44345d9753 | ||
|
|
5f93fc3f49 | ||
|
|
673a402c51 | ||
|
|
09e0d62360 | ||
|
|
b4830d4ef7 | ||
|
|
2c3bf53792 | ||
|
|
78ebe0e787 | ||
|
|
54f87adde2 | ||
|
|
c101552938 | ||
|
|
c918efb99a | ||
|
|
9be760e65e | ||
|
|
cea1eb85fa | ||
|
|
f8c56b5aa1 | ||
|
|
0bb6838477 | ||
|
|
c6b8a6f2f6 | ||
|
|
42fbe62d19 | ||
|
|
d3ea41f513 | ||
|
|
5ff7d14bec | ||
|
|
1c41e96f42 | ||
|
|
48adf59ec8 | ||
|
|
3369072687 | ||
|
|
8e7e957884 | ||
|
|
c615f8255e | ||
|
|
7ffec241fa | ||
|
|
de32f4a057 | ||
|
|
1cd7ecf3e5 | ||
|
|
b01b4bf259 | ||
|
|
f8efb4f010 | ||
|
|
870fc12c0d | ||
|
|
dc2cdda00c | ||
|
|
1c96487869 |
70
README.md
70
README.md
@@ -1,53 +1,40 @@
|
|||||||
# JPush PhoneGap / Cordova Plugin
|
# JPush PhoneGap / Cordova Plugin
|
||||||
|
|
||||||
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
||||||
[](https://gitter.im/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)
|
||||||
|
|
||||||
支持 iOS, Android 的 Cordova 推送插件。
|
支持 iOS, Android 的 Cordova 推送插件。
|
||||||
> 如需要 IM 功能的插件,可关注 [jmessage-phonegap-plugin](https://github.com/jpush/jmessage-phonegap-plugin)。
|
> 如需要 IM 功能的插件,可关注 [JMessage PhoneGap Plugin](https://github.com/jpush/jmessage-phonegap-plugin)。
|
||||||
|
|
||||||
|
> 如需要短信验证码功能的插件,可关注 [JSMS Cordova Plugin](https://github.com/jpush/cordova-plugin-jsms)。
|
||||||
|
|
||||||
|
> QQ 交流群:413602425。
|
||||||
|
|
||||||
## 集成步骤
|
## 集成步骤
|
||||||
|
|
||||||
### 1.首先安装 cordova device 插件
|
- 先安装 cordova-plugin-device 插件:
|
||||||
|
|
||||||
cordova plugin add cordova-plugin-device
|
cordova plugin add cordova-plugin-device
|
||||||
|
|
||||||
### 2.安装 JPush PhoneGap Plugin
|
- 安装本插件
|
||||||
安装 JPush PhoneGap Plugin 有两种方法:
|
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
||||||
|
|
||||||
方法一:在线安装
|
cordova plugin add jpush-phonegap-plugin --variable API_KEY=your_jpush_appkey
|
||||||
|
|
||||||
通过 Cordova plugins 安装,要求 PhoneGap/Cordova CLI 5.0+:
|
- 或者直接通过 url 安装:
|
||||||
|
|
||||||
cordova plugin add jpush-phonegap-plugin --variable API_KEY=your_jpush_appkey
|
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable API_KEY=your_jpush_appkey
|
||||||
|
|
||||||
直接通过 url 安装:
|
- 或下载到本地安装:
|
||||||
|
|
||||||
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable API_KEY=your_jpush_appkey
|
cordova plugin add Your_Plugin_Path --variable API_KEY=your_jpush_appkey
|
||||||
|
|
||||||
方法二:下载到本地再安装
|
|
||||||
|
|
||||||
使用 git 命令将 JPush PhoneGap 插件下载的本地,目录标记为 $JPUSH_PLUGIN_DIR:
|
|
||||||
|
|
||||||
git clone https://github.com/jpush/jpush-phonegap-plugin.git
|
|
||||||
|
|
||||||
cordova plugin add $JPUSH_PLUGIN_DIR --variable API_KEY=your_jpush_appkey
|
|
||||||
|
|
||||||
- [Android 手动安装文档地址](/doc/Android_handle_install.md)。
|
|
||||||
|
|
||||||
- [iOS 手动安装文档地址](/doc/iOS_install.md)。
|
|
||||||
|
|
||||||
### 3.在 js 中调用函数,初始化 JPush
|
|
||||||
|
|
||||||
//由于 PhoneGap 插件采用了 lazy load 的特性,所以建议在 js 文件能执行的最开始就添加。
|
|
||||||
window.plugins.jPushPlugin.init();
|
|
||||||
|
|
||||||
|
|
||||||
## Demo
|
## Demo
|
||||||
插件项目中包含一个简单的 Demo。若想参考,可以在 /example 文件夹内找到并拷贝以下文件:
|
插件项目中包含一个简单的 Demo。若想参考,可以在 */example* 文件夹内找到并拷贝以下文件:
|
||||||
|
|
||||||
src/example/index.html -> www/index.html
|
src/example/index.html -> www/index.html
|
||||||
src/example/css/* -> www/css
|
src/example/css/* -> www/css
|
||||||
@@ -77,19 +64,17 @@
|
|||||||
|
|
||||||
## 常见问题
|
## 常见问题
|
||||||
|
|
||||||
若要使用 CLI 来编译项目,注意应使用 cordova compile 而不是 cordova build 命令,因为 cordova build 会清除对插件文件的修改。
|
若要使用 CLI 来编译项目,注意应使用 cordova compile 而不是 cordova build 命令,因为如果修改了插件安装时默认写入到 AndroidManifest.xml
|
||||||
|
中的代码,cordova build 可能会导致对 AndroidManifest.xml 的修改。
|
||||||
Cordova CLI 的具体用法可参考 [Cordova CLI 官方文档](https://cordova.apache.org/docs/en/latest/reference/cordova-cli/index.html)。
|
Cordova CLI 的具体用法可参考 [Cordova CLI 官方文档](https://cordova.apache.org/docs/en/latest/reference/cordova-cli/index.html)。
|
||||||
|
|
||||||
### 1. Android
|
### Android
|
||||||
|
|
||||||
Eclipse 中 import PhoneGap 工程之后出现:*Type CallbackContext cannot be resolved to a type*。
|
- Eclipse 中 import PhoneGap 工程之后出现:*Type CallbackContext cannot be resolved to a type*。
|
||||||
|
|
||||||
解决方案:Eclipse 中右键单击工程名,Build Path -> Config Build Path -> Projects -> 选中工程名称 -> CordovaLib -> 点击 add。
|
解决方案:Eclipse 中右键单击工程名,Build Path -> Config Build Path -> Projects -> 选中工程名称 -> CordovaLib -> 点击 add。
|
||||||
|
|
||||||
### 2. iOS
|
### iOS
|
||||||
|
|
||||||
- 收不到推送:
|
|
||||||
请首先按照正确方式再次配置证书、描述文件,具体可参考 [iOS 证书设置指南](http://docs.jpush.io/client/ios_tutorials/#ios_1)。
|
|
||||||
|
|
||||||
- 设置 PushConfig.plist:
|
- 设置 PushConfig.plist:
|
||||||
- APP_KEY:应用标识。
|
- APP_KEY:应用标识。
|
||||||
@@ -98,8 +83,11 @@ Eclipse 中 import PhoneGap 工程之后出现:*Type CallbackContext cannot be
|
|||||||
- IsIDFA:是否使用 IDFA 启动 SDK。
|
- IsIDFA:是否使用 IDFA 启动 SDK。
|
||||||
|
|
||||||
|
|
||||||
|
- 收不到推送:
|
||||||
|
请首先按照正确方式再次配置证书、描述文件,具体可参考 [iOS 证书设置指南](http://docs.jpush.io/client/ios_tutorials/#ios_1)。
|
||||||
|
|
||||||
|
|
||||||
## 更多
|
## 更多
|
||||||
[JPush 官网文档](http://docs.jpush.io/)。
|
- QQ 群:413602425;
|
||||||
|
- [JPush 官网文档](http://docs.jpush.io/);
|
||||||
如有问题可访问[极光社区](http://community.jpush.cn/)。
|
- 如有问题可访问[极光社区](http://community.jiguang.cn/)。
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
- [获取点击通知内容](#获取点击通知内容)
|
- [获取点击通知内容](#获取点击通知内容)
|
||||||
- [获取通知内容](#获取通知内容)
|
- [获取通知内容](#获取通知内容)
|
||||||
- [获取自定义消息推送内容](#获取自定义消息推送内容)
|
- [获取自定义消息推送内容](#获取自定义消息推送内容)
|
||||||
|
- [判断系统设置中是否允许当前应用推送](#判断系统设置中是否允许当前应用推送)
|
||||||
|
|
||||||
## 停止与恢复推送服务
|
## 停止与恢复推送服务
|
||||||
### API - init
|
### API - init
|
||||||
@@ -226,7 +226,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
|
|
||||||
var alertContent;
|
var alertContent;
|
||||||
if(device.platform == "Android") {
|
if(device.platform == "Android") {
|
||||||
alertContent = window.plugins.jPushPlugin.openNotification.alert;
|
alertContent = event.alert;
|
||||||
} else {
|
} else {
|
||||||
alertContent = event.aps.alert;
|
alertContent = event.aps.alert;
|
||||||
}
|
}
|
||||||
@@ -280,7 +280,7 @@ ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.o
|
|||||||
|
|
||||||
var alertContent;
|
var alertContent;
|
||||||
if(device.platform == "Android") {
|
if(device.platform == "Android") {
|
||||||
alertContent = window.plugins.jPushPlugin.receiveNotification.alert;
|
alertContent = event.alert;
|
||||||
} else {
|
} else {
|
||||||
alertContent = event.aps.alert;
|
alertContent = event.aps.alert;
|
||||||
}
|
}
|
||||||
@@ -339,7 +339,7 @@ ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.r
|
|||||||
try{
|
try{
|
||||||
var message
|
var message
|
||||||
if(device.platform == "Android") {
|
if(device.platform == "Android") {
|
||||||
message = window.plugins.jPushPlugin.receiveMessage.message;
|
message = event.message;
|
||||||
} else {
|
} else {
|
||||||
message = event.content;
|
message = event.content;
|
||||||
}
|
}
|
||||||
@@ -370,3 +370,28 @@ ps:点击通知后传递的 json object 保存在 window.plugins.jPushPlugin.r
|
|||||||
"content":"今天去哪儿",
|
"content":"今天去哪儿",
|
||||||
"extras":{"key":"不填写没有"}
|
"extras":{"key":"不填写没有"}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
## 判断系统设置中是否允许当前应用推送
|
||||||
|
### API - getUserNotificationSettings
|
||||||
|
判断系统设置中是否允许当前应用推送。
|
||||||
|
|
||||||
|
在 Android 中,返回值为 0 时,代表系统设置中关闭了推送;为 1 时,代表打开了推送(目前仅适用于Android 4.4+)。
|
||||||
|
|
||||||
|
在 iOS 中,返回值为 0 时,代表系统设置中关闭了推送;大于 0 时,代表打开了推送,且能够根据返回值判断具体通知形式:
|
||||||
|
|
||||||
|
UIRemoteNotificationTypeNone = 0, // 0
|
||||||
|
UIRemoteNotificationTypeBadge = 1 << 0, // 1
|
||||||
|
UIRemoteNotificationTypeSound = 1 << 1, // 2
|
||||||
|
UIRemoteNotificationTypeAlert = 1 << 2, // 4
|
||||||
|
UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3 // 8
|
||||||
|
|
||||||
|
#### 代码示例
|
||||||
|
|
||||||
|
window.plugins.jPushPlugin.getUserNotificationSettings(function(result) {
|
||||||
|
if(result == 0) {
|
||||||
|
// 系统设置中已关闭应用推送。
|
||||||
|
} else if(result > 0) {
|
||||||
|
// 系统设置中打开了应用推送。
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数
|
|||||||
|
|
||||||
### API - isPushStopped
|
### API - isPushStopped
|
||||||
|
|
||||||
iOS平台,检查推送服务是否注册。
|
iOS平台,检查推送服务是否停止。
|
||||||
|
|
||||||
#### 接口定义
|
#### 接口定义
|
||||||
|
|
||||||
@@ -69,12 +69,12 @@ iOS平台,检查推送服务是否注册。
|
|||||||
- callback 回调函数,用来通知 JPush 的推送服务是否开启。
|
- callback 回调函数,用来通知 JPush 的推送服务是否开启。
|
||||||
|
|
||||||
#### 代码示例
|
#### 代码示例
|
||||||
window.plugins.jPushPlugin.resumePush(callback)
|
window.plugins.jPushPlugin.isPushStopped(callback)
|
||||||
var onCallback = function(data) {
|
var callback = function(data) {
|
||||||
if(data > 0) {
|
if(data > 0) {
|
||||||
// 开启
|
// 已关闭
|
||||||
} else {
|
} else {
|
||||||
// 关闭
|
// 已开启
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
BIN
example/.DS_Store
vendored
BIN
example/.DS_Store
vendored
Binary file not shown.
@@ -47,7 +47,7 @@
|
|||||||
try {
|
try {
|
||||||
var alertContent;
|
var alertContent;
|
||||||
if (device.platform == "Android") {
|
if (device.platform == "Android") {
|
||||||
alertContent = window.plugins.jPushPlugin.openNotification.alert;
|
alertContent = event.alert;
|
||||||
} else {
|
} else {
|
||||||
alertContent = event.aps.alert;
|
alertContent = event.aps.alert;
|
||||||
}
|
}
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
try {
|
try {
|
||||||
var alertContent;
|
var alertContent;
|
||||||
if (device.platform == "Android") {
|
if (device.platform == "Android") {
|
||||||
alertContent = window.plugins.jPushPlugin.receiveNotification.alert;
|
alertContent = event.alert;
|
||||||
} else {
|
} else {
|
||||||
alertContent = event.aps.alert;
|
alertContent = event.aps.alert;
|
||||||
}
|
}
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
try {
|
try {
|
||||||
var message;
|
var message;
|
||||||
if (device.platform == "Android") {
|
if (device.platform == "Android") {
|
||||||
message = window.plugins.jPushPlugin.receiveMessage.message;
|
message = event.message;
|
||||||
} else {
|
} else {
|
||||||
message = event.content;
|
message = event.content;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"name": "jpush-phonegap-plugin",
|
"name": "jpush-phonegap-plugin",
|
||||||
"version": "2.2.0",
|
"version": "2.2.5",
|
||||||
"description": "JPush for cordova plugin",
|
"description": "JPush for cordova plugin",
|
||||||
"cordova": {
|
"cordova": {
|
||||||
"id": "cn.jpush.phonegap.JPushPlugin",
|
"id": "jpush-phonegap-plugin",
|
||||||
"platforms": [
|
"platforms": [
|
||||||
"ios",
|
"ios",
|
||||||
"android"
|
"android"
|
||||||
|
|||||||
213
plugin.xml
213
plugin.xml
@@ -1,8 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<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="cn.jpush.phonegap.JPushPlugin"
|
id="jpush-phonegap-plugin"
|
||||||
version="2.2.0">
|
version="2.2.4">
|
||||||
|
|
||||||
<name>JPush Plugin</name>
|
<name>JPush Plugin</name>
|
||||||
<description>JPush for cordova plugin</description>
|
<description>JPush for cordova plugin</description>
|
||||||
@@ -13,178 +13,167 @@
|
|||||||
<preference name="API_KEY" />
|
<preference name="API_KEY" />
|
||||||
|
|
||||||
<engines>
|
<engines>
|
||||||
<engine name="cordova" version=">=3.0"/>
|
<engine name="cordova" version=">=3.0" />
|
||||||
</engines>
|
</engines>
|
||||||
|
|
||||||
<js-module src="www/JPushPlugin.js" name="JPushPlugin">
|
<js-module src="www/JPushPlugin.js" name="JPushPlugin">
|
||||||
<clobbers target="jPushPlugin"/>
|
<clobbers target="JPush" />
|
||||||
</js-module>
|
</js-module>
|
||||||
|
|
||||||
<platform name="ios">
|
<platform name="ios">
|
||||||
<config-file target="config.xml" parent="/*">
|
<config-file target="config.xml" parent="/*">
|
||||||
<feature name="JPushPlugin">
|
<feature name="JPushPlugin">
|
||||||
<param name="ios-package" value="JPushPlugin"/>
|
<param name="ios-package" value="JPushPlugin" />
|
||||||
</feature>
|
</feature>
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<header-file src="src/ios/Plugins/JPushPlugin.h"/>
|
<header-file src="src/ios/Plugins/JPushPlugin.h" />
|
||||||
<source-file src="src/ios/Plugins/JPushPlugin.m"/>
|
<source-file src="src/ios/Plugins/JPushPlugin.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-2.1.7.a" framework="true" />
|
<source-file src="src/ios/lib/jpush-ios-2.1.8.a" framework="true" />
|
||||||
<header-file src="src/ios/Plugins/AppDelegate+JPush.h"/>
|
<header-file src="src/ios/Plugins/AppDelegate+JPush.h" />
|
||||||
<source-file src="src/ios/Plugins/AppDelegate+JPush.m"/>
|
<source-file src="src/ios/Plugins/AppDelegate+JPush.m" />
|
||||||
<resource-file src="src/ios/PushConfig.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" />
|
||||||
<framework src="CoreTelephony.framework" weak="true" />
|
<framework src="CoreTelephony.framework" weak="true" />
|
||||||
<framework src="SystemConfiguration.framework" weak="true" />
|
<framework src="SystemConfiguration.framework" weak="true" />
|
||||||
<framework src="CoreGraphics.framework" weak="true" />
|
<framework src="CoreGraphics.framework" weak="true" />
|
||||||
<framework src="Foundation.framework" weak="true" />
|
<framework src="Foundation.framework" weak="true" />
|
||||||
<framework src="UIKit.framework" weak="true" />
|
<framework src="UIKit.framework" weak="true" />
|
||||||
<framework src="Security.framework" weak="true" />
|
<framework src="Security.framework" weak="true" />
|
||||||
<framework src="libz.tbd" weak="true" />
|
<framework src="libz.tbd" weak="true" />
|
||||||
<framework src="AdSupport.framework" weak="true" />
|
<framework src="AdSupport.framework" weak="true" />
|
||||||
|
|
||||||
<config-file target="*PushConfig.plist" parent="APP_KEY">
|
<config-file target="*PushConfig.plist" parent="APP_KEY">
|
||||||
<string>$API_KEY</string>
|
<string>$API_KEY</string>
|
||||||
</config-file>
|
</config-file>
|
||||||
</platform>
|
</platform>
|
||||||
|
|
||||||
<!-- android -->
|
|
||||||
<platform name="android">
|
<platform name="android">
|
||||||
<hook type="after_plugin_add" src="scripts/android-install.js" />
|
|
||||||
<hook type="after_plugin_install" src="scripts/android-install.js" />
|
|
||||||
<hook type="before_plugin_rm" src="scripts/android-install.js" />
|
|
||||||
<hook type="before_plugin_uninstall" src="scripts/android-install.js" />
|
|
||||||
|
|
||||||
<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.jpush.phonegap.JPushPlugin" />
|
||||||
</feature>
|
</feature>
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<config-file target="AndroidManifest.xml" parent="/manifest">
|
<config-file target="AndroidManifest.xml" parent="/manifest">
|
||||||
<!-- Required 一些系统要求的权限,如访问网络等-->
|
<!-- Required 一些系统要求的权限,如访问网络等-->
|
||||||
<uses-permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE"/>
|
<uses-permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" />
|
||||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT"/>
|
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE"/>
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
|
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||||
<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
|
<permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />
|
||||||
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
|
<activity android:name="cn.jpush.android.ui.PushActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden">
|
||||||
android:name="cn.jpush.android.ui.PushActivity"
|
|
||||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
|
||||||
android:configChanges="orientation|keyboardHidden">
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="cn.jpush.android.ui.PushActivity"/>
|
<action android:name="cn.jpush.android.ui.PushActivity" />
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="$PACKAGE_NAME"/>
|
<category android:name="$PACKAGE_NAME" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<!-- Rich push 核心功能 since 2.0.6-->
|
<!-- Rich push 核心功能 since 2.0.6-->
|
||||||
<activity
|
<activity android:name="cn.jpush.android.ui.PopWinActivity" android:theme="@style/MyDialogStyle" android:exported="false">
|
||||||
android:name="cn.jpush.android.ui.PopWinActivity"
|
|
||||||
android:theme="@style/MyDialogStyle"
|
|
||||||
android:exported="false">
|
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
<!-- Required SDK核心功能-->
|
<!-- Required SDK核心功能-->
|
||||||
<service
|
<service android:name="cn.jpush.android.service.DownloadService"
|
||||||
android:name="cn.jpush.android.service.DownloadService"
|
android:enabled="true"
|
||||||
android:enabled="true"
|
android:exported="false">
|
||||||
android:exported="false">
|
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- Required SDK 核心功能-->
|
<!-- Required SDK 核心功能-->
|
||||||
<service
|
<service android:name="cn.jpush.android.service.PushService"
|
||||||
android:name="cn.jpush.android.service.PushService"
|
android:enabled="true"
|
||||||
android:enabled="true"
|
android:exported="false">
|
||||||
android:exported="false">
|
|
||||||
<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" />
|
||||||
<action android:name="cn.jpush.android.intent.PushService"/>
|
<action android:name="cn.jpush.android.intent.PushService" />
|
||||||
<action android:name="cn.jpush.android.intent.PUSH_TIME"/>
|
<action android:name="cn.jpush.android.intent.PUSH_TIME" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- Required SDK核心功能-->
|
<!-- Required SDK核心功能-->
|
||||||
<receiver
|
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
||||||
android:name="cn.jpush.android.service.PushReceiver"
|
android:enabled="true">
|
||||||
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 显示通知栏 -->
|
||||||
<category android:name="$PACKAGE_NAME"/>
|
<category android:name="$PACKAGE_NAME" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.USER_PRESENT"/>
|
<action android:name="android.intent.action.USER_PRESENT" />
|
||||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
|
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<!-- Optional -->
|
<!-- Optional -->
|
||||||
<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服务相互拉起的功能。 -->
|
||||||
|
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
||||||
|
<service android:name="cn.jpush.android.service.DaemonService" android:enabled="true" android:exported="true">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="cn.jpush.android.intent.DaemonService" />
|
||||||
|
<category android:name="$PACKAGE_NAME" />
|
||||||
|
</intent-filter>
|
||||||
|
</service>
|
||||||
|
|
||||||
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
||||||
<receiver
|
<receiver android:name="cn.jpush.phonegap.MyReceiver" android:enabled="true">
|
||||||
android:name="cn.jpush.phonegap.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 显示通知栏 -->
|
||||||
<category android:name="$PACKAGE_NAME"/>
|
<category android:name="$PACKAGE_NAME" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="cn.jpush.android.intent.REGISTRATION"/>
|
<action android:name="cn.jpush.android.intent.REGISTRATION" />
|
||||||
<!-- Required 用户注册SDK的intent -->
|
<!-- Required 用户注册SDK的intent -->
|
||||||
<action android:name="cn.jpush.android.intent.UNREGISTRATION"/>
|
<action android:name="cn.jpush.android.intent.UNREGISTRATION" />
|
||||||
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED"/>
|
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
|
||||||
<!-- Required 用户接收SDK消息的intent -->
|
<!-- Required 用户接收SDK消息的intent -->
|
||||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED"/>
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
|
||||||
<!-- Required 用户接收SDK通知栏信息的intent -->
|
<!-- Required 用户接收SDK通知栏信息的intent -->
|
||||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED"/>
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
|
||||||
<!-- Required 用户打开自定义通知栏的intent -->
|
<!-- Required 用户打开自定义通知栏的intent -->
|
||||||
<action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK"/>
|
<action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />
|
||||||
<!-- Optional 用户接受Rich Push Javascript 回调函数的intent -->
|
<!-- Optional 用户接受Rich Push Javascript 回调函数的intent -->
|
||||||
<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" />
|
||||||
<!-- 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="$API_KEY" />
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<source-file src="src/android/jpush-android-2.1.5.jar" target-dir="libs"/>
|
<source-file src="src/android/jpush-android-2.1.7.jar" target-dir="libs" />
|
||||||
<source-file src="src/android/armeabi/libjpush215.so" target-dir="libs/armeabi"/>
|
<source-file src="src/android/armeabi/libjpush217.so" target-dir="libs/armeabi" />
|
||||||
<source-file src="src/android/armeabi-v7a/libjpush215.so" target-dir="libs/armeabi-v7a"/>
|
<source-file src="src/android/armeabi-v7a/libjpush217.so" target-dir="libs/armeabi-v7a" />
|
||||||
<source-file src="src/android/arm64-v8a/libjpush215.so" target-dir="libs/arm64-v8a"/>
|
<source-file src="src/android/arm64-v8a/libjpush217.so" target-dir="libs/arm64-v8a" />
|
||||||
<source-file src="src/android/x86/libjpush215.so" target-dir="libs/x86"/>
|
<source-file src="src/android/x86/libjpush217.so" target-dir="libs/x86" />
|
||||||
<source-file src="src/android/x86_64/libjpush215.so" target-dir="libs/x86_64"/>
|
<source-file src="src/android/x86_64/libjpush217.so" target-dir="libs/x86_64" />
|
||||||
|
|
||||||
<!--<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap"/>-->
|
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap" />
|
||||||
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap"/>
|
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap" />
|
||||||
<source-file src="src/android/test_notification_layout.xml" target-dir="res/layout"/>
|
<source-file src="src/android/test_notification_layout.xml" target-dir="res/layout" />
|
||||||
<source-file src="src/android/jpush_notification_icon.png" target-dir="res/drawable"/>
|
<source-file src="src/android/jpush_notification_icon.png" target-dir="res/drawable" />
|
||||||
|
|
||||||
<!-- Rich Push resources -->
|
<!-- Rich Push resources -->
|
||||||
<source-file src="src/android/ic_richpush_actionbar_back.png" target-dir="res/drawable" />
|
<source-file src="src/android/ic_richpush_actionbar_back.png" target-dir="res/drawable" />
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
#!/usr/bin/env node
|
|
||||||
|
|
||||||
module.exports = function (context) {
|
|
||||||
var path = context.requireCordovaModule('path'),
|
|
||||||
fs = context.requireCordovaModule('fs'),
|
|
||||||
shell = context.requireCordovaModule('shelljs'),
|
|
||||||
projectRoot = context.opts.projectRoot,
|
|
||||||
ConfigParser = context.requireCordovaModule('cordova-common/src/configparser/ConfigParser'),
|
|
||||||
config = new ConfigParser(path.join(context.opts.projectRoot, "config.xml")),
|
|
||||||
packageName = config.android_packageName() || config.packageName();
|
|
||||||
|
|
||||||
console.info("Running android-install.Hook: " + context.hook
|
|
||||||
+ ", Package: " + packageName + ", Path: " + projectRoot + ".");
|
|
||||||
|
|
||||||
if (!packageName) {
|
|
||||||
console.error("Package name could not be found!");
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
// android platform available?
|
|
||||||
if (context.opts.cordova.platforms.indexOf("android") === -1) {
|
|
||||||
console.info("Android platform has not been added.");
|
|
||||||
return ;
|
|
||||||
}
|
|
||||||
|
|
||||||
var targetDir = path.join(projectRoot, "platforms", "android", "src", "cn", "jpush", "phonegap");
|
|
||||||
targetFile = path.join(targetDir, "JPushPlugin.java");
|
|
||||||
console.log(targetDir);
|
|
||||||
|
|
||||||
if (['after_plugin_add', 'after_plugin_install', 'after_platform_add'].indexOf(context.hook) === -1) {
|
|
||||||
// remove it?
|
|
||||||
try {
|
|
||||||
fs.unlinkSync(targetFile);
|
|
||||||
} catch (err) {}
|
|
||||||
} else {
|
|
||||||
// create directory
|
|
||||||
shell.mkdir('-p', targetDir);
|
|
||||||
|
|
||||||
// sync the content
|
|
||||||
fs.readFile(path.join(context.opts.plugin.dir, 'src', 'android', 'JPushPlugin.java'),
|
|
||||||
{encoding: 'utf-8'}, function (err, data) {
|
|
||||||
if (err) {
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
data = data.replace(/^import __PACKAGE_NAME__.R;/m, 'import ' + packageName + '.R;');
|
|
||||||
fs.writeFileSync(targetFile, data);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,12 +1,14 @@
|
|||||||
package cn.jpush.phonegap;
|
package cn.jpush.phonegap;
|
||||||
|
|
||||||
|
import android.annotation.TargetApi;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.app.AppOpsManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.ApplicationInfo;
|
||||||
|
import android.os.Build;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import __PACKAGE_NAME__.R;
|
|
||||||
|
|
||||||
import org.apache.cordova.CallbackContext;
|
import org.apache.cordova.CallbackContext;
|
||||||
import org.apache.cordova.CordovaInterface;
|
import org.apache.cordova.CordovaInterface;
|
||||||
import org.apache.cordova.CordovaPlugin;
|
import org.apache.cordova.CordovaPlugin;
|
||||||
@@ -15,6 +17,8 @@ import org.json.JSONArray;
|
|||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.InvocationTargetException;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -28,7 +32,6 @@ import java.util.concurrent.ExecutorService;
|
|||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
import cn.jpush.android.api.BasicPushNotificationBuilder;
|
import cn.jpush.android.api.BasicPushNotificationBuilder;
|
||||||
import cn.jpush.android.api.CustomPushNotificationBuilder;
|
|
||||||
import cn.jpush.android.api.JPushInterface;
|
import cn.jpush.android.api.JPushInterface;
|
||||||
import cn.jpush.android.api.TagAliasCallback;
|
import cn.jpush.android.api.TagAliasCallback;
|
||||||
import cn.jpush.android.data.JPushLocalNotification;
|
import cn.jpush.android.data.JPushLocalNotification;
|
||||||
@@ -37,6 +40,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
private final static List<String> methodList =
|
private final static List<String> methodList =
|
||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
"addLocalNotification",
|
"addLocalNotification",
|
||||||
|
"areNotificationEnabled",
|
||||||
"clearAllNotification",
|
"clearAllNotification",
|
||||||
"clearLocalNotifications",
|
"clearLocalNotifications",
|
||||||
"clearNotificationById",
|
"clearNotificationById",
|
||||||
@@ -139,7 +143,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static JSONObject getMessageObject(String message,
|
private static JSONObject getMessageObject(String message,
|
||||||
Map<String, Object> extras) {
|
Map<String, Object> extras) {
|
||||||
JSONObject data = new JSONObject();
|
JSONObject data = new JSONObject();
|
||||||
try {
|
try {
|
||||||
data.put("message", message);
|
data.put("message", message);
|
||||||
@@ -173,7 +177,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static JSONObject getNotificationObject(String title,
|
private static JSONObject getNotificationObject(String title,
|
||||||
String alert, Map<String, Object> extras) {
|
String alert, Map<String, Object> extras) {
|
||||||
JSONObject data = new JSONObject();
|
JSONObject data = new JSONObject();
|
||||||
try {
|
try {
|
||||||
data.put("title", title);
|
data.put("title", title);
|
||||||
@@ -181,7 +185,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
JSONObject jExtras = new JSONObject();
|
JSONObject jExtras = new JSONObject();
|
||||||
for (Entry<String, Object> entry : extras.entrySet()) {
|
for (Entry<String, Object> entry : extras.entrySet()) {
|
||||||
if (entry.getKey().equals("cn.jpush.android.EXTRA")) {
|
if (entry.getKey().equals("cn.jpush.android.EXTRA")) {
|
||||||
JSONObject jo = null;
|
JSONObject jo;
|
||||||
if (TextUtils.isEmpty((String) entry.getValue())) {
|
if (TextUtils.isEmpty((String) entry.getValue())) {
|
||||||
jo = new JSONObject();
|
jo = new JSONObject();
|
||||||
} else {
|
} else {
|
||||||
@@ -223,7 +227,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void transmitNotificationOpen(String title, String alert,
|
static void transmitNotificationOpen(String title, String alert,
|
||||||
Map<String, Object> extras) {
|
Map<String, Object> extras) {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -241,7 +245,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void transmitNotificationReceive(String title, String alert,
|
static void transmitNotificationReceive(String title, String alert,
|
||||||
Map<String, Object> extras) {
|
Map<String, Object> extras) {
|
||||||
if (instance == null) {
|
if (instance == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -260,7 +264,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(final String action, final JSONArray data,
|
public boolean execute(final String action, final JSONArray data,
|
||||||
final CallbackContext callbackContext) throws JSONException {
|
final CallbackContext callbackContext) throws JSONException {
|
||||||
if (!methodList.contains(action)) {
|
if (!methodList.contains(action)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -314,6 +318,16 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void areNotificationEnabled(JSONArray data, final CallbackContext callback) {
|
||||||
|
int isEnabled;
|
||||||
|
if (hasPermission("OP_POST_NOTIFICATION")) {
|
||||||
|
isEnabled = 1;
|
||||||
|
} else {
|
||||||
|
isEnabled = 0;
|
||||||
|
}
|
||||||
|
callback.success(isEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
void setLatestNotificationNum(JSONArray data, CallbackContext callbackContext) {
|
void setLatestNotificationNum(JSONArray data, CallbackContext callbackContext) {
|
||||||
int num = -1;
|
int num = -1;
|
||||||
try {
|
try {
|
||||||
@@ -425,7 +439,7 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setBasicPushNotificationBuilder(JSONArray data,
|
void setBasicPushNotificationBuilder(JSONArray data,
|
||||||
CallbackContext callbackContext) {
|
CallbackContext callbackContext) {
|
||||||
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(
|
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(
|
||||||
this.cordova.getActivity());
|
this.cordova.getActivity());
|
||||||
builder.developerArg0 = "Basic builder 1";
|
builder.developerArg0 = "Basic builder 1";
|
||||||
@@ -438,19 +452,17 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 自定义推送通知栏样式,需要自己实现具体代码。
|
||||||
|
* http://docs.jiguang.cn/client/android_tutorials/#_11
|
||||||
|
*/
|
||||||
void setCustomPushNotificationBuilder(JSONArray data,
|
void setCustomPushNotificationBuilder(JSONArray data,
|
||||||
CallbackContext callbackContext) {
|
CallbackContext callbackContext) {
|
||||||
CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(
|
// CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(
|
||||||
this.cordova.getActivity(), R.layout.test_notification_layout,
|
// this.cordova.getActivity(), R.layout.test_notification_layout,
|
||||||
R.id.icon, R.id.title, R.id.text);
|
// R.id.icon, R.id.title, R.id.text);
|
||||||
builder.developerArg0 = "Custom Builder 1";
|
// JPushInterface.setPushNotificationBuilder(2, builder);
|
||||||
JPushInterface.setPushNotificationBuilder(2, builder);
|
// JPushInterface.setDefaultPushNotificationBuilder(builder);
|
||||||
JSONObject obj = new JSONObject();
|
|
||||||
try {
|
|
||||||
obj.put("id", 2);
|
|
||||||
} catch (JSONException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void clearAllNotification(JSONArray data, CallbackContext callbackContext) {
|
void clearAllNotification(JSONArray data, CallbackContext callbackContext) {
|
||||||
@@ -585,4 +597,37 @@ public class JPushPlugin extends CordovaPlugin {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||||
|
private boolean hasPermission(String appOpsServiceId) {
|
||||||
|
Context context = cordova.getActivity().getApplicationContext();
|
||||||
|
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
||||||
|
ApplicationInfo appInfo = context.getApplicationInfo();
|
||||||
|
|
||||||
|
String pkg = context.getPackageName();
|
||||||
|
int uid = appInfo.uid;
|
||||||
|
Class appOpsClazz = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
appOpsClazz = Class.forName(AppOpsManager.class.getName());
|
||||||
|
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow",
|
||||||
|
Integer.TYPE, Integer.TYPE, String.class);
|
||||||
|
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
|
||||||
|
int value = opValue.getInt(Integer.class);
|
||||||
|
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);
|
||||||
|
|
||||||
|
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchMethodException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (NoSuchFieldException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
src/android/jpush-android-2.1.7.jar
Normal file
BIN
src/android/jpush-android-2.1.7.jar
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -58,6 +58,9 @@
|
|||||||
//地理位置上报 [latitude,longitude]
|
//地理位置上报 [latitude,longitude]
|
||||||
-(void)setLocation:(CDVInvokedUrlCommand*)command;
|
-(void)setLocation:(CDVInvokedUrlCommand*)command;
|
||||||
|
|
||||||
|
//检查用户的推送设置情况
|
||||||
|
-(void)getUserNotificationSettings:(CDVInvokedUrlCommand*)command;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 以下为js中可监听到的事件
|
* 以下为js中可监听到的事件
|
||||||
* jpush.openNotification 点击推送消息启动或唤醒app
|
* jpush.openNotification 点击推送消息启动或唤醒app
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ static NSDictionary *_launchOptions = nil;
|
|||||||
}else{
|
}else{
|
||||||
result = @(1);
|
result = @(1);
|
||||||
}
|
}
|
||||||
[self hanleResultWithValue:result command:command];
|
[self handleResultWithValue:result command:command];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)initial:(CDVInvokedUrlCommand*)command{
|
-(void)initial:(CDVInvokedUrlCommand*)command{
|
||||||
@@ -153,7 +153,7 @@ static NSDictionary *_launchOptions = nil;
|
|||||||
-(void)getRegistrationID:(CDVInvokedUrlCommand*)command{
|
-(void)getRegistrationID:(CDVInvokedUrlCommand*)command{
|
||||||
NSString* registrationID = [JPUSHService registrationID];
|
NSString* registrationID = [JPUSHService registrationID];
|
||||||
NSLog(@"### getRegistrationID %@",registrationID);
|
NSLog(@"### getRegistrationID %@",registrationID);
|
||||||
[self hanleResultWithValue:registrationID command:command];
|
[self handleResultWithValue:registrationID command:command];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)startLogPageView:(CDVInvokedUrlCommand*)command{
|
-(void)startLogPageView:(CDVInvokedUrlCommand*)command{
|
||||||
@@ -222,7 +222,7 @@ static NSDictionary *_launchOptions = nil;
|
|||||||
-(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 hanleResultWithValue:number command:command];
|
[self handleResultWithValue:number command:command];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setDebugModeFromIos:(CDVInvokedUrlCommand*)command{
|
-(void)setDebugModeFromIos:(CDVInvokedUrlCommand*)command{
|
||||||
@@ -259,6 +259,20 @@ static NSDictionary *_launchOptions = nil;
|
|||||||
[JPUSHService setLatitude:[((NSString*)command.arguments[0]) doubleValue] longitude:[((NSString*)command.arguments[1]) doubleValue]];
|
[JPUSHService setLatitude:[((NSString*)command.arguments[0]) doubleValue] longitude:[((NSString*)command.arguments[1]) doubleValue]];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)getUserNotificationSettings:(CDVInvokedUrlCommand*)command{
|
||||||
|
if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
|
||||||
|
UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
|
||||||
|
UIUserNotificationType type = settings.types;
|
||||||
|
NSNumber *number = [NSNumber numberWithInteger:type];
|
||||||
|
[self handleResultWithValue:number command:command];
|
||||||
|
}else{
|
||||||
|
UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
|
||||||
|
NSNumber *number = [NSNumber numberWithInteger:type];
|
||||||
|
[self handleResultWithValue:number command:command];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark- 内部方法
|
#pragma mark- 内部方法
|
||||||
+(void)setLaunchOptions:(NSDictionary *)theLaunchOptions{
|
+(void)setLaunchOptions:(NSDictionary *)theLaunchOptions{
|
||||||
_launchOptions = theLaunchOptions;
|
_launchOptions = theLaunchOptions;
|
||||||
@@ -298,7 +312,7 @@ static NSDictionary *_launchOptions = nil;
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark 将参数返回给js
|
#pragma mark 将参数返回给js
|
||||||
-(void)hanleResultWithValue:(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;
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
* Copyright (c) 2011 ~ 2015 Shenzhen HXHG. All rights reserved.
|
* Copyright (c) 2011 ~ 2015 Shenzhen HXHG. All rights reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define JPUSH_VERSION_NUMBER 2.1.7
|
#define JPUSH_VERSION_NUMBER 2.1.8
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -1,363 +1,372 @@
|
|||||||
|
var JPushPlugin = function () {}
|
||||||
|
|
||||||
|
// private plugin function
|
||||||
var JPushPlugin = function(){
|
|
||||||
};
|
|
||||||
|
|
||||||
//private plugin function
|
|
||||||
|
|
||||||
JPushPlugin.prototype.receiveMessage = {}
|
JPushPlugin.prototype.receiveMessage = {}
|
||||||
JPushPlugin.prototype.openNotification = {}
|
JPushPlugin.prototype.openNotification = {}
|
||||||
JPushPlugin.prototype.receiveNotification = {}
|
JPushPlugin.prototype.receiveNotification = {}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.isPlatformIOS = function () {
|
||||||
JPushPlugin.prototype.isPlatformIOS = function() {
|
var isPlatformIOS = device.platform == 'iPhone'
|
||||||
var isPlatformIOS = 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
|
||||||
return isPlatformIOS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.error_callback = function(msg) {
|
JPushPlugin.prototype.error_callback = function (msg) {
|
||||||
console.log("Javascript Callback Error: " + msg);
|
console.log('Javascript Callback Error: ' + msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.call_native = function(name, args, callback) {
|
JPushPlugin.prototype.call_native = function (name, args, callback) {
|
||||||
ret = cordova.exec(callback, this.error_callback, 'JPushPlugin', name, args);
|
ret = cordova.exec(callback, this.error_callback, 'JPushPlugin', name, args)
|
||||||
return ret;
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
// public methods
|
// public methods
|
||||||
JPushPlugin.prototype.init = function() {
|
JPushPlugin.prototype.init = function () {
|
||||||
if(this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
var data = [];
|
var data = []
|
||||||
this.call_native("initial", data, null);
|
this.call_native('initial', data, null)
|
||||||
} else {
|
} else {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("init", data, null);
|
this.call_native('init', data, null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.getRegistrationID = function(callback) {
|
JPushPlugin.prototype.getRegistrationID = function (callback) {
|
||||||
try {
|
try {
|
||||||
var data = [];
|
var data = []
|
||||||
this.call_native("getRegistrationID", [data], callback);
|
this.call_native('getRegistrationID', [data], callback)
|
||||||
} catch(exception) {
|
} catch(exception) {
|
||||||
console.log(exception);
|
console.log(exception)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.stopPush = function() {
|
JPushPlugin.prototype.stopPush = function () {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("stopPush", data, null);
|
this.call_native('stopPush', data, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.resumePush = function() {
|
JPushPlugin.prototype.resumePush = function () {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("resumePush", data, null);
|
this.call_native('resumePush', data, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.isPushStopped = function(callback) {
|
JPushPlugin.prototype.isPushStopped = function (callback) {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("isPushStopped", data, callback);
|
this.call_native('isPushStopped', data, callback)
|
||||||
}
|
}
|
||||||
|
|
||||||
// iOS methods
|
// iOS methods
|
||||||
JPushPlugin.prototype.setTagsWithAlias = function(tags, alias) {
|
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
|
||||||
try {
|
try {
|
||||||
if(tags == null) {
|
if (tags == null) {
|
||||||
this.setAlias(alias);
|
this.setAlias(alias)
|
||||||
return;
|
return
|
||||||
}
|
|
||||||
if(alias == null) {
|
|
||||||
this.setTags(tags);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
var arrayTagWithAlias = [tags];
|
|
||||||
arrayTagWithAlias.unshift(alias);
|
|
||||||
this.call_native("setTagsWithAlias", arrayTagWithAlias, null);
|
|
||||||
} catch(exception) {
|
|
||||||
console.log(exception);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.setTags = function(tags) {
|
|
||||||
try {
|
|
||||||
this.call_native("setTags", tags, null);
|
|
||||||
} catch(exception) {
|
|
||||||
console.log(exception);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.setAlias = function(alias) {
|
|
||||||
try {
|
|
||||||
this.call_native("setAlias", [alias], null);
|
|
||||||
} catch(exception) {
|
|
||||||
console.log(exception);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.setBadge = function(value) {
|
|
||||||
if(this.isPlatformIOS()) {
|
|
||||||
try {
|
|
||||||
this.call_native("setBadge", [value], null);
|
|
||||||
} catch(exception) {
|
|
||||||
console.log(exception);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.resetBadge = function() {
|
|
||||||
if(this.isPlatformIOS()) {
|
|
||||||
try {
|
|
||||||
var data = [];
|
|
||||||
this.call_native("resetBadge", [data], null);
|
|
||||||
} catch(exception) {
|
|
||||||
console.log(exception);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.setDebugModeFromIos = function() {
|
|
||||||
if(this.isPlatformIOS()) {
|
|
||||||
var data = [];
|
|
||||||
this.call_native("setDebugModeFromIos", [data], null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.setLogOFF = function() {
|
|
||||||
if(this.isPlatformIOS()) {
|
|
||||||
var data = [];
|
|
||||||
this.call_native("setLogOFF", [data], null);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
JPushPlugin.prototype.setCrashLogON = function() {
|
|
||||||
if (this.isPlatformIOS()) {
|
|
||||||
var data = [];
|
|
||||||
this.call_native("crashLogON", [data], null);
|
|
||||||
}
|
}
|
||||||
}
|
if (alias == null) {
|
||||||
|
this.setTags(tags)
|
||||||
JPushPlugin.prototype.addLocalNotificationForIOS = function(delayTime, content,
|
return
|
||||||
badge, notificationID, extras) {
|
|
||||||
if (this.isPlatformIOS()) {
|
|
||||||
var data = [delayTime, content, badge, notificationID, extras];
|
|
||||||
this.call_native("setLocalNotification", data, null);
|
|
||||||
}
|
}
|
||||||
|
var arrayTagWithAlias = [tags]
|
||||||
|
arrayTagWithAlias.unshift(alias)
|
||||||
|
this.call_native('setTagsWithAlias', arrayTagWithAlias, null)
|
||||||
|
} catch(exception) {
|
||||||
|
console.log(exception)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function(
|
JPushPlugin.prototype.setTags = function (tags) {
|
||||||
identifierKey) {
|
try {
|
||||||
if (this.isPlatformIOS()) {
|
this.call_native('setTags', tags, null)
|
||||||
var data = [identifierKey];
|
} catch(exception) {
|
||||||
this.call_native("deleteLocalNotificationWithIdentifierKey", data, null);
|
console.log(exception)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.setAlias = function (alias) {
|
||||||
|
try {
|
||||||
|
this.call_native('setAlias', [alias], null)
|
||||||
|
} catch(exception) {
|
||||||
|
console.log(exception)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.setBadge = function (value) {
|
||||||
|
if (this.isPlatformIOS()) {
|
||||||
|
try {
|
||||||
|
this.call_native('setBadge', [value], null)
|
||||||
|
} catch(exception) {
|
||||||
|
console.log(exception)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.clearAllLocalNotifications = function(){
|
JPushPlugin.prototype.resetBadge = function () {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
var data = [];
|
try {
|
||||||
this.call_native("clearAllLocalNotifications", data, null);
|
var data = []
|
||||||
|
this.call_native('resetBadge', [data], null)
|
||||||
|
} catch(exception) {
|
||||||
|
console.log(exception)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setLocation = function(latitude, longitude){
|
JPushPlugin.prototype.setDebugModeFromIos = function () {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
var data = [latitude, longitude];
|
var data = []
|
||||||
this.call_native("setLocation", data, null);
|
this.call_native('setDebugModeFromIos', [data], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.receiveMessageIniOSCallback = function(data) {
|
JPushPlugin.prototype.setLogOFF = function () {
|
||||||
try {
|
if (this.isPlatformIOS()) {
|
||||||
console.log("JPushPlugin:receiveMessageIniOSCallback--data:" + data);
|
var data = []
|
||||||
var bToObj = JSON.parse(data);
|
this.call_native('setLogOFF', [data], null)
|
||||||
var content = bToObj.content;
|
}
|
||||||
console.log(content);
|
|
||||||
} catch(exception) {
|
|
||||||
console.log("JPushPlugin:receiveMessageIniOSCallback" + exception);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.startLogPageView = function(pageName) {
|
JPushPlugin.prototype.setCrashLogON = function () {
|
||||||
if(this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native("startLogPageView", [pageName], null);
|
var data = []
|
||||||
}
|
this.call_native('crashLogON', [data], null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.stopLogPageView = function(pageName) {
|
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content,
|
||||||
if(this.isPlatformIOS()) {
|
badge, notificationID, extras) {
|
||||||
this.call_native("stopLogPageView", [pageName], null);
|
if (this.isPlatformIOS()) {
|
||||||
}
|
var data = [delayTime, content, badge, notificationID, extras]
|
||||||
|
this.call_native('setLocalNotification', data, null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.beginLogPageView = function(pageName, duration) {
|
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function (
|
||||||
if(this.isPlatformIOS()) {
|
identifierKey) {
|
||||||
this.call_native("beginLogPageView", [pageName, duration], null);
|
if (this.isPlatformIOS()) {
|
||||||
}
|
var data = [identifierKey]
|
||||||
|
this.call_native('deleteLocalNotificationWithIdentifierKey', data, null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setApplicationIconBadgeNumber = function(badge) {
|
JPushPlugin.prototype.clearAllLocalNotifications = function () {
|
||||||
if(this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native("setApplicationIconBadgeNumber", [badge], null);
|
var data = []
|
||||||
}
|
this.call_native('clearAllLocalNotifications', data, null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.getApplicationIconBadgeNumber = function(callback) {
|
JPushPlugin.prototype.setLocation = function (latitude, longitude) {
|
||||||
if(this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.call_native("getApplicationIconBadgeNumber", [], callback);
|
var data = [latitude, longitude]
|
||||||
}
|
this.call_native('setLocation', data, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.receiveMessageIniOSCallback = function (data) {
|
||||||
|
try {
|
||||||
|
console.log('JPushPlugin:receiveMessageIniOSCallback--data:' + data)
|
||||||
|
var bToObj = JSON.parse(data)
|
||||||
|
var content = bToObj.content
|
||||||
|
console.log(content)
|
||||||
|
} catch(exception) {
|
||||||
|
console.log('JPushPlugin:receiveMessageIniOSCallback' + exception)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.startLogPageView = function (pageName) {
|
||||||
|
if (this.isPlatformIOS()) {
|
||||||
|
this.call_native('startLogPageView', [pageName], null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.stopLogPageView = function (pageName) {
|
||||||
|
if (this.isPlatformIOS()) {
|
||||||
|
this.call_native('stopLogPageView', [pageName], null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.beginLogPageView = function (pageName, duration) {
|
||||||
|
if (this.isPlatformIOS()) {
|
||||||
|
this.call_native('beginLogPageView', [pageName, duration], null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.setApplicationIconBadgeNumber = function (badge) {
|
||||||
|
if (this.isPlatformIOS()) {
|
||||||
|
this.call_native('setApplicationIconBadgeNumber', [badge], null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) {
|
||||||
|
if (this.isPlatformIOS()) {
|
||||||
|
this.call_native('getApplicationIconBadgeNumber', [], callback)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 判断系统设置中是否对本应用启用通知。
|
||||||
|
// 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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Android methods
|
// Android methods
|
||||||
JPushPlugin.prototype.setDebugMode = function(mode) {
|
JPushPlugin.prototype.setDebugMode = function (mode) {
|
||||||
if(device.platform == "Android") {
|
if (device.platform == 'Android') {
|
||||||
this.call_native("setDebugMode", [mode], null);
|
this.call_native('setDebugMode', [mode], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function() {
|
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
||||||
if(device.platform == "Android") {
|
if (device.platform == 'Android') {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("setBasicPushNotificationBuilder", data, null);
|
this.call_native('setBasicPushNotificationBuilder', data, null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function() {
|
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
||||||
if(device.platform == "Android") {
|
if (device.platform == 'Android') {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("setCustomPushNotificationBuilder", data, null);
|
this.call_native('setCustomPushNotificationBuilder', data, null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) {
|
JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) {
|
||||||
try {
|
try {
|
||||||
console.log("JPushPlugin:receiveMessageInAndroidCallback");
|
data = JSON.stringify(data)
|
||||||
data = JSON.stringify(data);
|
console.log('JPushPlugin:receiveMessageInAndroidCallback: ' + data)
|
||||||
var bToObj = JSON.parse(data);
|
this.receiveMessage = JSON.parse(data)
|
||||||
this.receiveMessage = bToObj
|
cordova.fireDocumentEvent('jpush.receiveMessage', this.receiveMessage)
|
||||||
cordova.fireDocumentEvent('jpush.receiveMessage', null);
|
} catch(exception) {
|
||||||
} catch(exception) {
|
console.log('JPushPlugin:pushCallback ' + exception)
|
||||||
console.log("JPushPlugin:pushCallback " + exception);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) {
|
JPushPlugin.prototype.openNotificationInAndroidCallback = function (data) {
|
||||||
try {
|
try {
|
||||||
console.log("JPushPlugin:openNotificationInAndroidCallback");
|
data = JSON.stringify(data)
|
||||||
data = JSON.stringify(data);
|
console.log('JPushPlugin:openNotificationInAndroidCallback: ' + data)
|
||||||
var bToObj = JSON.parse(data);
|
this.openNotification = JSON.parse(data)
|
||||||
this.openNotification = bToObj;
|
cordova.fireDocumentEvent('jpush.openNotification', this.openNotification)
|
||||||
cordova.fireDocumentEvent('jpush.openNotification', null);
|
} catch(exception) {
|
||||||
} catch(exception) {
|
console.log(exception)
|
||||||
console.log(exception);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data) {
|
JPushPlugin.prototype.receiveNotificationInAndroidCallback = function (data) {
|
||||||
try{
|
try {
|
||||||
console.log("JPushPlugin:receiveNotificationInAndroidCallback");
|
data = JSON.stringify(data)
|
||||||
data = JSON.stringify(data);
|
console.log('JPushPlugin:receiveNotificationInAndroidCallback: ' + data)
|
||||||
var bToObj = JSON.parse(data);
|
this.receiveNotification = JSON.parse(data)
|
||||||
this.receiveNotification = bToObj;
|
cordova.fireDocumentEvent('jpush.receiveNotification', this.receiveNotification)
|
||||||
cordova.fireDocumentEvent('jpush.receiveNotification', null);
|
} catch(exception) {
|
||||||
} catch(exception) {
|
console.log(exception)
|
||||||
console.log(exception);
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.clearAllNotification = function() {
|
JPushPlugin.prototype.clearAllNotification = function () {
|
||||||
if(device.platform == "Android") {
|
if (device.platform == 'Android') {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("clearAllNotification", data, null);
|
this.call_native('clearAllNotification', data, null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.clearNotificationById = function(notificationId) {
|
JPushPlugin.prototype.clearNotificationById = function (notificationId) {
|
||||||
if(device.platform == "Android") {
|
if (device.platform == 'Android') {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("clearNotificationById", [notificationId], null);
|
this.call_native('clearNotificationById', [notificationId], 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.call_native('setLatestNotificationNum', [num], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setDebugMode = function(mode) {
|
JPushPlugin.prototype.setDebugMode = function (mode) {
|
||||||
if(device.platform == "Android") {
|
if (device.platform == 'Android') {
|
||||||
this.call_native("setDebugMode", [mode], null);
|
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') {
|
||||||
data = [builderId, content, title, notificationID, broadcastTime, extras];
|
data = [builderId, content, title, notificationID, broadcastTime, extras]
|
||||||
this.call_native("addLocalNotification", data, null);
|
this.call_native('addLocalNotification', data, 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.call_native('removeLocalNotification', [notificationID], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.clearLocalNotifications = function() {
|
JPushPlugin.prototype.clearLocalNotifications = function () {
|
||||||
if(device.platform == "Android") {
|
if (device.platform == 'Android') {
|
||||||
data = [];
|
data = []
|
||||||
this.call_native("clearLocalNotifications", data, null);
|
this.call_native('clearLocalNotifications', data, 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.call_native('reportNotificationOpened', [msgID], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*是否开启统计分析功能,用于“用户使用时长”,“活跃用户”,“用户打开次数”的统计,并上报到服务器上,
|
*是否开启统计分析功能,用于“用户使用时长”,“活跃用户”,“用户打开次数”的统计,并上报到服务器上,
|
||||||
*在 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.call_native('setStatisticsOpen', [mode], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用于在 Android 6.0 及以上系统,申请一些权限
|
* 用于在 Android 6.0 及以上系统,申请一些权限
|
||||||
* 具体可看: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.call_native('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.call_native('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.call_native('setPushTime', [weekdays, startHour, endHour], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!window.plugins) {
|
if (!window.plugins) {
|
||||||
window.plugins = {};
|
window.plugins = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!window.plugins.jPushPlugin) {
|
if (!window.plugins.jPushPlugin) {
|
||||||
window.plugins.jPushPlugin = new JPushPlugin();
|
window.plugins.jPushPlugin = new JPushPlugin()
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = new JPushPlugin();
|
module.exports = new JPushPlugin()
|
||||||
|
|||||||
Reference in New Issue
Block a user