mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-04-19 00:03:45 +08:00
Compare commits
39 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c5f7963425 | |||
| 021725e054 | |||
| a4eaf51455 | |||
| 5d27dca472 | |||
| 09f98f7c38 | |||
| 7b1a77aecb | |||
| 04fae7d538 | |||
| 0436cfcf3e | |||
| 3c70127405 | |||
| 8e087e102a | |||
| 9f5fccefec | |||
| be07c7383b | |||
| 2df6ea47a8 | |||
| 35c09c0c92 | |||
| c72cde6632 | |||
| f0a87962e7 | |||
| f31881d88a | |||
| 31eef706e4 | |||
| 2cf2bcf970 | |||
| 5d42764438 | |||
| a5a03a3214 | |||
| 7b70564f82 | |||
| 6059f546f6 | |||
| d855a07271 | |||
| c1e70448b1 | |||
| a9f6adb7af | |||
| 847d94c080 | |||
| c959fdddeb | |||
| 4285170332 | |||
| 86f07c9729 | |||
| e3d8d69147 | |||
| 8970e44dc1 | |||
| 7f3682e2a8 | |||
| dd716aaca7 | |||
| f5394d6d01 | |||
| 2fc0bc9213 | |||
| 4bc2fe3dc1 | |||
| e20a10588f | |||
| eefc2e13cb |
@@ -1,64 +1,75 @@
|
|||||||
# 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://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 推送插件。
|
极光官方支持的 cordova 推送插件。
|
||||||
> 如需要 IM 功能的插件,可关注 [JMessage PhoneGap Plugin](https://github.com/jpush/jmessage-phonegap-plugin)。
|
|
||||||
|
|
||||||
> 如需要短信验证码功能的插件,可关注 [JSMS Cordova Plugin](https://github.com/jpush/cordova-plugin-jsms)。
|
- 如需要 IM 功能的插件,可关注 [jmessage-phonegap-plugin](https://github.com/jpush/jmessage-phonegap-plugin)
|
||||||
|
- 如需要短信验证码功能插件,可关注 [cordova-plugin-jsms](https://github.com/jpush/cordova-plugin-jsms)
|
||||||
> QQ 交流群:413602425。
|
- 如需要统计分析功能插件,可关注 [cordova-plugin-janalytics](https://github.com/jpush/cordova-plugin-janalytics)
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
|
|
||||||
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
|
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
|
||||||
```
|
```
|
||||||
|
|
||||||
- 或直接通过 url 安装:
|
- 或直接通过 url 安装:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable APP_KEY=your_jpush_appkey
|
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable APP_KEY=your_jpush_appkey
|
||||||
```
|
```
|
||||||
|
|
||||||
- 或下载到本地安装:
|
- 或下载到本地安装:
|
||||||
|
|
||||||
```
|
```shell
|
||||||
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
|
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
|
||||||
```
|
```
|
||||||
|
|
||||||
> 如果你的 Cordova 版本 >= v7.0.0,在安装插件和添加 platform 时,在命令行最后加上 --nofetch,否则极大可能会报错。
|
> 在使用 Xcode 8 调试 iOS 项目时,需要先在项目配置界面的 Capabilities 中打开 Push Notifications 开关。
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### API
|
### API
|
||||||
|
|
||||||
- [Common](/doc/Common_detail_api.md)
|
- [Common](/doc/Common_detail_api.md)
|
||||||
- [iOS](/doc/iOS_API.md)
|
- [iOS](/doc/iOS_API.md)
|
||||||
- [Android](/doc/Android_detail_api.md)
|
- [Android](/doc/Android_detail_api.md)
|
||||||
|
|
||||||
### Demo
|
### Demo
|
||||||
|
|
||||||
插件项目中包含一个简单的 Demo。若想参考,可以在 */example* 文件夹内找到并拷贝以下文件:
|
插件项目中包含一个简单的 Demo。若想参考,可以在 */example* 文件夹内找到并拷贝以下文件:
|
||||||
|
|
||||||
example/index.html -> www/index.html
|
example/index.html -> www/index.html
|
||||||
example/css/* -> www/css
|
example/css/* -> www/css
|
||||||
example/js/* -> www/js
|
example/js/* -> www/js
|
||||||
|
|
||||||
### 关于 PhoneGap build 云服务
|
### 关于 PhoneGap build 云服务
|
||||||
|
|
||||||
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
|
|
||||||
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可到 [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*
|
||||||
|
|
||||||
右键单击工程名 -> Build Path -> Config Build Path -> Projects -> 选中工程名称 -> CordovaLib -> 点击 add。
|
右键单击工程名 -> Build Path -> Config Build Path -> Projects -> 选中工程名称 -> CordovaLib -> 点击 add。
|
||||||
|
|
||||||
|
#### 如何自定义通知声音?
|
||||||
|
|
||||||
|
Android 因为各 Rom 的高度定制化,不像 iOS 一样能有一个统一的管理,如果在 Android 中想自定义通知铃声,推荐通过 JPush 推送自定义
|
||||||
|
消息,之后在 `jpush.receiveMessage` 事件监听中通过 [Cordova Local-Notification Plugin](https://github.com/katzer/cordova-plugin-local-notifications) 触发通知,再配合 [Cordova Background Plugin](https://github.com/katzer/cordova-plugin-background-mode) 插件保证应用的后台运行。
|
||||||
|
|
||||||
#### 关闭 App 后收不到通知
|
#### 关闭 App 后收不到通知
|
||||||
|
|
||||||
Android 的推送通过长连接的方式实现,只有在连接保持的情况下才能收到通知。而有的第三方 ROM 会限制一般应用服务的自启动,也就是
|
Android 的推送通过长连接的方式实现,只有在连接保持的情况下才能收到通知。而有的第三方 ROM 会限制一般应用服务的自启动,也就是
|
||||||
在退出应用后,应用的所有服务均被杀死,且无法自启动,所以就会收不到通知。
|
在退出应用后,应用的所有服务均被杀死,且无法自启动,所以就会收不到通知。
|
||||||
|
|
||||||
@@ -75,7 +86,7 @@ Android 的推送通过长连接的方式实现,只有在连接保持的情况
|
|||||||
|
|
||||||
#### 打包时遇到 i386 打包失败怎么办?
|
#### 打包时遇到 i386 打包失败怎么办?
|
||||||
|
|
||||||
```
|
```shell
|
||||||
cordova platform update ios
|
cordova platform update ios
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -91,22 +102,26 @@ cordova platform update ios
|
|||||||
- IsIDFA:是否使用 IDFA 启动 SDK。
|
- IsIDFA:是否使用 IDFA 启动 SDK。
|
||||||
|
|
||||||
#### 刚集成完插件收不到推送怎么办?
|
#### 刚集成完插件收不到推送怎么办?
|
||||||
|
|
||||||
请首先按照正确方式再次配置证书、描述文件,具体可参考 [iOS 证书设置指南](https://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/)。
|
请首先按照正确方式再次配置证书、描述文件,具体可参考 [iOS 证书设置指南](https://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/)。
|
||||||
|
|
||||||
#### iOS 集成插件白屏、或无法启动插件、或打包报错无法找到需要引入的文件怎么办?
|
#### iOS 集成插件白屏、或无法启动插件、或打包报错无法找到需要引入的文件怎么办?
|
||||||
|
|
||||||
按照以下步骤逐个尝试:
|
按照以下步骤逐个尝试:
|
||||||
|
|
||||||
- 升级至 Xcode 8
|
- 升级至最新版本 Xcode
|
||||||
- 先删除插件、再重装插件
|
- 删除插件、再重装插件(先使用 `cordova platform add ios`,后使用 `cordova plugin add`)
|
||||||
- 先使用 `cordova platform add ios`,后使用 `cordova plugin add`
|
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
- QQ 群:413602425
|
|
||||||
|
- QQ 群:413602425 / 524248013
|
||||||
- [JPush 官网文档](https://docs.jiguang.cn/jpush/guideline/intro/)
|
- [JPush 官网文档](https://docs.jiguang.cn/jpush/guideline/intro/)
|
||||||
- [极光社区](http://community.jiguang.cn/)
|
- [极光社区](http://community.jiguang.cn/)
|
||||||
|
|
||||||
## Contribute
|
## Contribute
|
||||||
|
|
||||||
Please contribute! [Look at the issues](https://github.com/jpush/jpush-phonegap-plugin/issues).
|
Please contribute! [Look at the issues](https://github.com/jpush/jpush-phonegap-plugin/issues).
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
MIT © [JiGuang](/license)
|
MIT © [JiGuang](/license)
|
||||||
|
|||||||
+6
-26
@@ -21,7 +21,6 @@
|
|||||||
- [监听事件统一说明](#监听事件统一说明)
|
- [监听事件统一说明](#监听事件统一说明)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 延迟注册和启动推送通知服务
|
## 延迟注册和启动推送通知服务
|
||||||
|
|
||||||
本插件默认在 App 启动完成之后,立即「注册苹果通知服务」+「启动 JPush SDK」,其中:
|
本插件默认在 App 启动完成之后,立即「注册苹果通知服务」+「启动 JPush SDK」,其中:
|
||||||
@@ -45,7 +44,6 @@ window.plugins.jPushPlugin.startJPushSDK()
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## 开始与停止推送服务
|
## 开始与停止推送服务
|
||||||
|
|
||||||
### API - init
|
### API - init
|
||||||
@@ -87,8 +85,6 @@ window.plugins.jPushPlugin.init()
|
|||||||
window.plugins.jPushPlugin.resumePush()
|
window.plugins.jPushPlugin.resumePush()
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### API - isPushStopped
|
### API - isPushStopped
|
||||||
|
|
||||||
iOS平台,检查推送服务是否停止。
|
iOS平台,检查推送服务是否停止。
|
||||||
@@ -179,9 +175,9 @@ window.plugins.jPushPlugin.getRegistrationID(function(data) {
|
|||||||
#### 接口定义
|
#### 接口定义
|
||||||
|
|
||||||
```
|
```
|
||||||
JPushPlugin.prototype.setTagsWithAlias(tags, alias)
|
JPushPlugin.prototype.setTagsWithAlias(tags, alias, successCallback, errorCallback)
|
||||||
JPushPlugin.prototype.setTags(tags)
|
JPushPlugin.prototype.setTags(tags, successCallback)
|
||||||
JPushPlugin.prototype.setAlias(alias)
|
JPushPlugin.prototype.setAlias(alias, errorCallback)
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 参数说明
|
#### 参数说明
|
||||||
@@ -201,21 +197,6 @@ JPushPlugin.prototype.setAlias(alias)
|
|||||||
- 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
- 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
||||||
- 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
|
- 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
|
||||||
|
|
||||||
#### 返回值说明
|
|
||||||
|
|
||||||
函数本身无返回值,但需要注册 `jpush.setTagsWithAlias` 事件来监听设置结果。
|
|
||||||
|
|
||||||
```js
|
|
||||||
var onTagsWithAlias = function(event) {
|
|
||||||
console.log("onTagsWithAlias")
|
|
||||||
var result = "result code:"+event.resultCode + " "
|
|
||||||
result += "tags:" + event.tags + " "
|
|
||||||
result += "alias:" + event.alias + " "
|
|
||||||
$("#tagAliasResult").html(result)
|
|
||||||
}
|
|
||||||
document.addEventListener("jpush.setTagsWithAlias", onTagsWithAlias, false)
|
|
||||||
```
|
|
||||||
|
|
||||||
#### 错误码定义
|
#### 错误码定义
|
||||||
|
|
||||||
| Code | 描述 | 详细解释 |
|
| Code | 描述 | 详细解释 |
|
||||||
@@ -406,7 +387,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)。
|
||||||
@@ -423,7 +404,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
|
||||||
@@ -438,7 +419,7 @@ window.plugins.jPushPlugin.prototype.setApplicationIconBadgeNumber(badge)
|
|||||||
|
|
||||||
#### 参数说明
|
#### 参数说明
|
||||||
|
|
||||||
- badge: 整形,例如 0,1,2(当 badge 为 0 时,角标被清除)。
|
- badge: 整型,例如 0,1,2(当 badge 为 0 时,角标被清除)。
|
||||||
|
|
||||||
#### 代码示例
|
#### 代码示例
|
||||||
|
|
||||||
@@ -882,4 +863,3 @@ window.plugins.jPushPlugin.prototype.getUserNotificationSettings(callback)
|
|||||||
##### jpush.receiveLocalNotification
|
##### jpush.receiveLocalNotification
|
||||||
|
|
||||||
> [iOS 10 before 收到本地通知](#ios-10-before-收到本地通知)
|
> [iOS 10 before 收到本地通知](#ios-10-before-收到本地通知)
|
||||||
|
|
||||||
|
|||||||
+57
-49
@@ -6,66 +6,74 @@ const fs = require('fs');
|
|||||||
const path = require('path');
|
const path = require('path');
|
||||||
|
|
||||||
module.exports.addAPNSinEntitlements = (entitlementPath, isProduction) => {
|
module.exports.addAPNSinEntitlements = (entitlementPath, isProduction) => {
|
||||||
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
if( fs.existsSync(entitlementPath) ) {
|
||||||
if (err) {
|
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
||||||
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) {
|
if (err) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
console.log(entitlementPath + " written successfully");
|
|
||||||
|
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) => {
|
module.exports.removeAPNSinEntitlements = (entitlementPath) => {
|
||||||
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
if( fs.existsSync(entitlementPath) ) {
|
||||||
if (err) {
|
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
||||||
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) {
|
if (err) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
console.log(entitlementPath + " written successfully");
|
|
||||||
|
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) => {
|
module.exports.getXcodeProjName = (searchPath) => {
|
||||||
|
|||||||
+10
-8
@@ -41,15 +41,17 @@ let disablePushNotificationForXCode = (entitlementsPath, pbxprojPath) => {
|
|||||||
// turn off Push Notification Capability
|
// 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 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);
|
let parts = re4rep.exec(data);
|
||||||
result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '0');
|
if(parts !== null && parts !== undefined && parts.length > 0) {
|
||||||
|
result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '0');
|
||||||
|
|
||||||
// write result to project.pbxproj
|
// write result to project.pbxproj
|
||||||
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
throw err;
|
throw err;
|
||||||
}
|
}
|
||||||
console.log(pbxprojPath + " written successfully");
|
console.log(pbxprojPath + " written successfully");
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+29
-24
@@ -139,29 +139,34 @@ let enablePushNotificationForXCode = (entitlementsPath, pbxprojPath, cordovaBuil
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
let basePath = './platforms/ios/';
|
module.exports = (context) => {
|
||||||
let buildType = 'dev';
|
let basePath = './platforms/ios/';
|
||||||
let xcodeprojName = commonFuncs.getXcodeProjName(basePath);
|
let buildType = 'dev';
|
||||||
let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj';
|
let xcodeprojName = commonFuncs.getXcodeProjName(basePath);
|
||||||
let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements';
|
let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj';
|
||||||
|
let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements';
|
||||||
|
|
||||||
let cordovaBuildConfigPath = './build.json'
|
let cordovaBuildConfigPath = './build.json'
|
||||||
let cordovaBuildConfig = null;
|
let cordovaBuildConfig = null;
|
||||||
let willEnablePushNotificationForXCode = true;
|
let willEnablePushNotificationForXCode = true;
|
||||||
try { // try to read ios developmentTeam from build.json
|
try { // try to read ios developmentTeam from build.json
|
||||||
cordovaBuildConfig = JSON.parse(fs.readFileSync(cordovaBuildConfigPath, "utf8"));
|
cordovaBuildConfig = JSON.parse(fs.readFileSync(cordovaBuildConfigPath, "utf8"));
|
||||||
} catch(e) {
|
if(cordovaBuildConfig.ios.release.developmentTeam === null && cordovaBuildConfig.ios.release.developmentTeam === undefined) {
|
||||||
console.log("Do not detected 'build.json' to get ios developent team. \n" +
|
throw 'no valid developmentTeam found in build.json';
|
||||||
"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" +
|
} catch(e) {
|
||||||
"Please add 'build.json' to cordova project root folder to make after hook fullly functional. \n" +
|
console.log("Do not detected 'build.json' or ios.release.developmentTeam not avaliable in 'build.json' \n" +
|
||||||
"Reference [1]https://cordova.apache.org/docs/en/latest/reference/cordova-cli/#cordova-build-command \n" +
|
"Will not enable XCode Push Notification Capability. \n" +
|
||||||
"Reference [2]https://cordova.apache.org/docs/en/latest/guide/platforms/ios/#signing-an-app");
|
"Will only enable Push Notification for CI by add config to '" + basePath + xcodeprojName + "/Entitlements-Debug.plist' and '" + basePath + xcodeprojName + "/Entitlements-Release.plist' \n" +
|
||||||
willEnablePushNotificationForXCode = false;
|
"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");
|
||||||
enablePushNotificationForCI(basePath, xcodeprojName);
|
willEnablePushNotificationForXCode = false;
|
||||||
|
}
|
||||||
if(willEnablePushNotificationForXCode) {
|
|
||||||
enablePushNotificationForXCode(entitlementsPath, pbxprojPath, cordovaBuildConfig);
|
enablePushNotificationForCI(basePath, xcodeprojName);
|
||||||
|
|
||||||
|
if(willEnablePushNotificationForXCode) {
|
||||||
|
enablePushNotificationForXCode(entitlementsPath, pbxprojPath, cordovaBuildConfig);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jpush-phonegap-plugin",
|
"name": "jpush-phonegap-plugin",
|
||||||
"version": "3.1.8",
|
"version": "3.2.3",
|
||||||
"description": "JPush for cordova plugin",
|
"description": "JPush for cordova plugin",
|
||||||
"cordova": {
|
"cordova": {
|
||||||
"id": "jpush-phonegap-plugin",
|
"id": "jpush-phonegap-plugin",
|
||||||
|
|||||||
+4
-4
@@ -2,7 +2,7 @@
|
|||||||
<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.1.8">
|
version="3.2.3">
|
||||||
|
|
||||||
<name>JPush</name>
|
<name>JPush</name>
|
||||||
<description>JPush for cordova plugin</description>
|
<description>JPush for cordova plugin</description>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<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.5.a" framework="true" />
|
<source-file src="src/ios/lib/jpush-ios-3.0.6.a" framework="true" />
|
||||||
<resource-file src="src/ios/JPushConfig.plist" />
|
<resource-file src="src/ios/JPushConfig.plist" />
|
||||||
|
|
||||||
<framework src="CFNetwork.framework" weak="true" />
|
<framework src="CFNetwork.framework" weak="true" />
|
||||||
@@ -58,9 +58,9 @@
|
|||||||
<string>$APP_KEY</string>
|
<string>$APP_KEY</string>
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
<hook type="after_platform_add" src="hooks/iosEnablePush.js" />
|
<!-- <hook type="after_platform_add" src="hooks/iosEnablePush.js" />
|
||||||
<hook type="after_plugin_install" src="hooks/iosEnablePush.js" />
|
<hook type="after_plugin_install" src="hooks/iosEnablePush.js" />
|
||||||
<hook type="before_plugin_uninstall" src="hooks/iosDisablePush.js" />
|
<hook type="before_plugin_uninstall" src="hooks/iosDisablePush.js" /> -->
|
||||||
</platform>
|
</platform>
|
||||||
|
|
||||||
<platform name="android">
|
<platform name="android">
|
||||||
|
|||||||
@@ -119,7 +119,9 @@ NSDictionary *_launchOptions;
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
[JPushPlugin fireDocumentEvent:eventName jsString:[userInfo toJsonString]];
|
[JPushPlugin fireDocumentEvent:eventName jsString:[userInfo toJsonString]];
|
||||||
completionHandler(UIBackgroundFetchResultNewData);
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(30 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||||
|
completionHandler(UIBackgroundFetchResultNewData);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{
|
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{
|
||||||
|
|||||||
@@ -109,6 +109,7 @@
|
|||||||
} else {
|
} else {
|
||||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
}
|
}
|
||||||
|
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,6 +124,7 @@
|
|||||||
} else {
|
} else {
|
||||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
}
|
}
|
||||||
|
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,6 +139,7 @@
|
|||||||
} else {
|
} else {
|
||||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
}
|
}
|
||||||
|
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user