mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-01-28 00:00:03 +08:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d855a07271 | ||
|
|
c1e70448b1 | ||
|
|
a9f6adb7af | ||
|
|
847d94c080 | ||
|
|
c959fdddeb | ||
|
|
4285170332 | ||
|
|
86f07c9729 | ||
|
|
e3d8d69147 | ||
|
|
8970e44dc1 | ||
|
|
7f3682e2a8 | ||
|
|
dd716aaca7 | ||
|
|
f5394d6d01 | ||
|
|
2fc0bc9213 | ||
| 4bc2fe3dc1 | |||
|
|
3bf9dae294 | ||
|
|
ca88f5878a | ||
|
|
8d9a7fa8b0 | ||
|
|
dead85a931 | ||
|
|
95330b11ed | ||
|
|
cba5ffbabb | ||
|
|
d524d8db00 | ||
|
|
e20a10588f | ||
|
|
eefc2e13cb | ||
|
|
e8417df550 | ||
|
|
89293001e8 | ||
|
|
78222b7123 | ||
|
|
1fb48e886f | ||
|
|
28a9c298c8 | ||
|
|
c65c5a4057 | ||
|
|
6a47116b82 | ||
|
|
68b217d8a8 |
17
README.md
17
README.md
@@ -2,7 +2,7 @@
|
||||
|
||||
[](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)
|
||||
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
||||
|
||||
@@ -17,16 +17,23 @@
|
||||
|
||||
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
||||
|
||||
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 安装:
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
- 或下载到本地安装:
|
||||
|
||||
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,否则极大可能会报错。
|
||||
|
||||
## Usage
|
||||
### API
|
||||
@@ -45,7 +52,7 @@
|
||||
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
||||
|
||||
## FAQ
|
||||
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可访问[极光社区](http://community.jiguang.cn/)或 [Issues](https://github.com/jpush/jpush-phonegap-plugin/issues) 提问。
|
||||
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可到 [Issues](https://github.com/jpush/jpush-phonegap-plugin/issues) 提问。
|
||||
|
||||
### Android
|
||||
#### 在 Eclipse 中 import 工程之后出现:*Type CallbackContext cannot be resolved to a type*
|
||||
|
||||
@@ -223,7 +223,7 @@ window.plugins.jPushPlugin.setTagsWithAlias([tag1, tag2], alias1, function () {
|
||||
if(device.platform == "Android") {
|
||||
alertContent = event.alert
|
||||
} else {
|
||||
lertContent = event.aps.alert
|
||||
alertContent = event.aps.alert
|
||||
}
|
||||
}, false)
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
- [监听事件统一说明](#监听事件统一说明)
|
||||
|
||||
|
||||
|
||||
## 延迟注册和启动推送通知服务
|
||||
|
||||
本插件默认在 App 启动完成之后,立即「注册苹果通知服务」+「启动 JPush SDK」,其中:
|
||||
@@ -45,7 +44,6 @@ window.plugins.jPushPlugin.startJPushSDK()
|
||||
```
|
||||
|
||||
|
||||
|
||||
## 开始与停止推送服务
|
||||
|
||||
### API - init
|
||||
@@ -87,8 +85,6 @@ window.plugins.jPushPlugin.init()
|
||||
window.plugins.jPushPlugin.resumePush()
|
||||
```
|
||||
|
||||
|
||||
|
||||
### API - isPushStopped
|
||||
|
||||
iOS平台,检查推送服务是否停止。
|
||||
@@ -406,7 +402,7 @@ JPush 封装 badge 功能,允许应用上传 badge 值至 JPush 服务器,
|
||||
|
||||
```js
|
||||
window.plugins.jPushPlugin.prototype.setBadge(value)
|
||||
window.plugins.jPushPlugin.prototype.reSetBadge()
|
||||
window.plugins.jPushPlugin.prototype.resetBadge()
|
||||
```
|
||||
|
||||
resetBadge 相当于 setBadge(0)。
|
||||
@@ -423,7 +419,7 @@ value 取值范围:[0,99999]。
|
||||
|
||||
```js
|
||||
window.plugins.jPushPlugin.setBadge(5)
|
||||
window.plugins.jPushPlugin.reSetBadge()
|
||||
window.plugins.jPushPlugin.resetBadge()
|
||||
```
|
||||
|
||||
### API - setApplicationIconBadgeNumber
|
||||
@@ -438,7 +434,7 @@ window.plugins.jPushPlugin.prototype.setApplicationIconBadgeNumber(badge)
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- badge: 整形,例如 0,1,2(当 badge 为 0 时,角标被清除)。
|
||||
- badge: 整型,例如 0,1,2(当 badge 为 0 时,角标被清除)。
|
||||
|
||||
#### 代码示例
|
||||
|
||||
@@ -882,4 +878,3 @@ window.plugins.jPushPlugin.prototype.getUserNotificationSettings(callback)
|
||||
##### jpush.receiveLocalNotification
|
||||
|
||||
> [iOS 10 before 收到本地通知](#ios-10-before-收到本地通知)
|
||||
|
||||
|
||||
8
hooks/apns.entitlements
Normal file
8
hooks/apns.entitlements
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>aps-environment</key>
|
||||
<string>development</string>
|
||||
</dict>
|
||||
</plist>
|
||||
93
hooks/common.js
Normal file
93
hooks/common.js
Normal file
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Author: Derek Chia <snipking@gmail.com>
|
||||
* common functions for cordova plugin after hook
|
||||
*/
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
module.exports.addAPNSinEntitlements = (entitlementPath, isProduction) => {
|
||||
if( fs.existsSync(entitlementPath) ) {
|
||||
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
console.log("Reading entitlements file asynchronously");
|
||||
|
||||
let toInsert = '<key>aps-environment</key>\n' +
|
||||
'\t\t<string>development</string>';
|
||||
if(isProduction) {
|
||||
toInsert = '<key>aps-environment</key>\n' +
|
||||
'\t\t<string>production</string>';
|
||||
}
|
||||
|
||||
let re1 = new RegExp('<key>aps-environment<\/key>(.|[\r\n])*<string>.*<\/string>');
|
||||
let matched = data.match(re1);
|
||||
let result;
|
||||
if (matched === null) {
|
||||
if(data.match(/<\/dict>/g)) {
|
||||
result = data.replace(/<\/dict>/, '\t' + toInsert + '\n\t</dict>');
|
||||
} else if(data.match(/<dict\/>/g)) {
|
||||
result = data.replace(/<dict\/>/, '\t<dict>\n\t\t' + toInsert + '\n\t</dict>');
|
||||
}
|
||||
} else {
|
||||
result = data.replace(re1, toInsert);
|
||||
}
|
||||
|
||||
// write result to entitlements file
|
||||
fs.writeFile(entitlementPath, result, {"encoding": 'utf8'}, function(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log(entitlementPath + " written successfully");
|
||||
});
|
||||
});
|
||||
} else {
|
||||
console.log("Entitlement File '" + entitlementPath + "' not found. Make sure your ios platform upper than 4.3.0");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.removeAPNSinEntitlements = (entitlementPath) => {
|
||||
if( fs.existsSync(entitlementPath) ) {
|
||||
fs.readFile(entitlementPath, "utf8", function(err, data) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
console.log("Reading entitlements file asynchronously");
|
||||
|
||||
let re1 = new RegExp('<key>aps-environment<\/key>(.|[\r\n])*<string>.*<\/string>');
|
||||
let matched = data.match(re1);
|
||||
let result;
|
||||
if (matched != null) {
|
||||
result = data.replace(re1, "");
|
||||
}
|
||||
|
||||
// write result to entitlements file
|
||||
fs.writeFile(entitlementPath, result, {"encoding": 'utf8'}, function(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log(entitlementPath + " written successfully");
|
||||
});
|
||||
});
|
||||
} else {
|
||||
console.log("Entitlement File '" + entitlementPath + "' not found. Make sure your ios platform upper than 4.3.0");
|
||||
}
|
||||
}
|
||||
|
||||
module.exports.getXcodeProjName = (searchPath) => {
|
||||
if(searchPath == null || searchPath == undefined) {
|
||||
searchPath = './';
|
||||
}
|
||||
let resultFolderName = null;
|
||||
let folderNames = fs.readdirSync(searchPath).filter(file => fs.lstatSync(path.join(searchPath, file)).isDirectory());
|
||||
let folderNamesReg = new RegExp('.*\.xcodeproj', 'g') // get filder name like `*.xcodeproj`
|
||||
for(let folderName of folderNames) {
|
||||
if(folderName.match(folderNamesReg)) {
|
||||
resultFolderName = folderName;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return resultFolderName.substr(0, resultFolderName.length - 10);
|
||||
}
|
||||
64
hooks/iosDisablePush.js
Normal file
64
hooks/iosDisablePush.js
Normal file
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Author: Derek Chia <snipking@gmail.com>
|
||||
* Cordova plugin after hook to disable `Push Notification` capability for XCode 8
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
let commonFuncs = require('./common');
|
||||
|
||||
/**
|
||||
* remove APNS env from cordova project Entitlements-Debug.plist and Entitlements-Release.plist
|
||||
* This two file will work when xcode archive app
|
||||
*/
|
||||
let disablePushNotificationForCI = (basePath, xcodeprojName) => {
|
||||
commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Debug.plist');
|
||||
commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Release.plist');
|
||||
}
|
||||
|
||||
/**
|
||||
* remove APNS env to entitlement file; disable Push Notification capability in .pbxproj file
|
||||
* This two file will work when xcode archive app
|
||||
*/
|
||||
let disablePushNotificationForXCode = (entitlementsPath, pbxprojPath) => {
|
||||
/**
|
||||
* remove APNS env to entitlement file
|
||||
*/
|
||||
if( fs.existsSync(entitlementsPath) ) {
|
||||
commonFuncs.removeAPNSinEntitlements(entitlementsPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* disable Push Notification capability in .pbxproj file
|
||||
* equally disable "Push Notification" switch in xcode
|
||||
*/
|
||||
fs.readFile(pbxprojPath, "utf8", function(err, data) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log("Reading pbxproj file asynchronously");
|
||||
|
||||
// turn off Push Notification Capability
|
||||
let re4rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*com\.apple\.Push = {(.|[\r\n])*enabled = [01]');
|
||||
let parts = re4rep.exec(data);
|
||||
result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '0');
|
||||
|
||||
// write result to project.pbxproj
|
||||
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log(pbxprojPath + " written successfully");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
let basePath = './platforms/ios/';
|
||||
let buildType = 'dev';
|
||||
let xcodeprojName = commonFuncs.getXcodeProjName(basePath);
|
||||
let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj';
|
||||
let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements';
|
||||
|
||||
disablePushNotificationForCI(basePath, xcodeprojName);
|
||||
|
||||
disablePushNotificationForXCode(entitlementsPath, pbxprojPath);
|
||||
172
hooks/iosEnablePush.js
Normal file
172
hooks/iosEnablePush.js
Normal file
@@ -0,0 +1,172 @@
|
||||
/*
|
||||
* Author: Derek Chia <snipking@gmail.com>
|
||||
* Cordova plugin after hook to enable `Push Notification` capability for XCode 8
|
||||
*/
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
let commonFuncs = require('./common');
|
||||
|
||||
/**
|
||||
* add APNS env to cordova project Entitlements-Debug.plist and Entitlements-Release.plist
|
||||
* This two file will work when xcode archive app
|
||||
*/
|
||||
let enablePushNotificationForCI = (basePath, xcodeprojName) => {
|
||||
commonFuncs.addAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Debug.plist', false);
|
||||
commonFuncs.addAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Release.plist', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* add APNS env to entitlement file; enable Push Notification capability in .pbxproj file
|
||||
* This two file will work when xcode archive app
|
||||
*/
|
||||
let enablePushNotificationForXCode = (entitlementsPath, pbxprojPath, cordovaBuildConfig) => {
|
||||
console.log('will enable push notification capability for XCode');
|
||||
let needAddEntitlementToPbxproj = false;
|
||||
/**
|
||||
* add APNS env to entitlement file
|
||||
* without this file will cause a worning in xcode
|
||||
*/
|
||||
if( fs.existsSync(entitlementsPath) ) {
|
||||
commonFuncs.addAPNSinEntitlements(entitlementsPath, false);
|
||||
} else {
|
||||
// copy default entitlements file
|
||||
fs.readFile(__dirname + '/apns.entitlements', 'utf8', function(err, data) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
|
||||
fs.writeFileSync(entitlementsPath, data);
|
||||
console.log(entitlementsPath + " written successfully");
|
||||
});
|
||||
|
||||
needAddEntitlementToPbxproj = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* enable Push Notification capability in .pbxproj file
|
||||
* equally enable "Push Notification" switch in xcode
|
||||
*/
|
||||
fs.readFile(pbxprojPath, "utf8", function(err, data) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log("Reading pbxproj file asynchronously");
|
||||
|
||||
// add Push Notification Capability
|
||||
let re1 = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes', 'g');
|
||||
let re1rep = new RegExp('isa = PBXProject;(.|[\r\n])*attributes = {', 'g');
|
||||
let re2 = new RegExp('(?:isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*)SystemCapabilities', 'g');
|
||||
let re2rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes = {', 'g');
|
||||
let re3 = new RegExp('(?:isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*)com\.apple\.Push', 'g');
|
||||
let re3rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities = {', 'g');
|
||||
let re4rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*com\.apple\.Push = {(.|[\r\n])*enabled = [01]');
|
||||
|
||||
let matched = data.match(re1);
|
||||
let result;
|
||||
if (matched === null) {
|
||||
console.log('re1 not match, no TargetAttributes');
|
||||
result = data.replace(re1rep, 'isa = PBXProject;\n' +
|
||||
'\t\t\tattributes = {\n' +
|
||||
'\t\t\t\tTargetAttributes = {\n' +
|
||||
'\t\t\t\t\t1D6058900D05DD3D006BFB54 = {\n' +
|
||||
'\t\t\t\t\t\tDevelopmentTeam = ' + cordovaBuildConfig.ios.release.developmentTeam + ';\n' +
|
||||
'\t\t\t\t\t\tSystemCapabilities = {\n' +
|
||||
'\t\t\t\t\t\t\tcom.apple.Push = {\n' +
|
||||
'\t\t\t\t\t\t\t\tenabled = 1;\n' +
|
||||
'\t\t\t\t\t\t\t};\n' +
|
||||
'\t\t\t\t\t\t};\n' +
|
||||
'\t\t\t\t\t};\n' +
|
||||
'\t\t\t\t};');
|
||||
} else {
|
||||
matched = data.match(re2);
|
||||
if(matched === null) {
|
||||
console.log('re2 not match, nothing under TargetAttributes');
|
||||
let parts = re2rep.exec(data);
|
||||
result = data.replace(re2rep, parts[0] + '\n' + '\t\t\t\t\t1D6058900D05DD3D006BFB54 = {\n' +
|
||||
'\t\t\t\t\t\tDevelopmentTeam = ' + cordovaBuildConfig.ios.release.developmentTeam + ';\n' +
|
||||
'\t\t\t\t\t\tSystemCapabilities = {\n' +
|
||||
'\t\t\t\t\t\t\tcom.apple.Push = {\n' +
|
||||
'\t\t\t\t\t\t\t\tenabled = 1;\n' +
|
||||
'\t\t\t\t\t\t\t};\n' +
|
||||
'\t\t\t\t\t\t};\n' +
|
||||
'\t\t\t\t\t};');
|
||||
} else {
|
||||
matched = data.match(re3);
|
||||
if(matched === null) {
|
||||
console.log('re3 not match, no com.apple.Push defined');
|
||||
let parts = re3rep.exec(data);
|
||||
result = data.replace(re3rep, parts[0] + '\n' + '\t\t\t\t\t\t\tcom.apple.Push = {\n' +
|
||||
'\t\t\t\t\t\t\t\tenabled = 1;\n' +
|
||||
'\t\t\t\t\t\t\t};');
|
||||
} else {
|
||||
console.log('just enable com.apple.Push');
|
||||
let parts = re4rep.exec(data);
|
||||
result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '1');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// add entitlements
|
||||
if (needAddEntitlementToPbxproj) {
|
||||
|
||||
let pathArray = entitlementsPath.split("/");
|
||||
let entitlementsFileName = pathArray[pathArray.length - 1];
|
||||
let projectFolderName = pathArray[pathArray.length - 2];
|
||||
|
||||
result = result.replace(new RegExp('\\/\\* Begin PBXFileReference section \\*\\/'), '/* Begin PBXFileReference section */\n' +
|
||||
'\t\tD7BB385F1E4DB54800345BF4 /* ' + entitlementsFileName + ' */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = "' + entitlementsFileName + '"; path = "' + projectFolderName + '/' + entitlementsFileName + '"; sourceTree = "<group>"; };');
|
||||
result = result.replace(new RegExp('\\/\\* CustomTemplate \\*\\/.*\n.*isa = PBXGroup;.*\n.*children = \\('), '/* CustomTemplate */ = {\n' +
|
||||
'\t\t\tisa = PBXGroup;\n' +
|
||||
'\t\t\tchildren = (\n' +
|
||||
'\t\t\t\tD7BB385F1E4DB54800345BF4 /* ' + entitlementsFileName + ' */,');
|
||||
let re5rep = new RegExp('\\/\\* Debug \\*\\/.*\n.*isa = XCBuildConfiguration;.*\n.*\n.*buildSettings = {');
|
||||
let parts = result.match(re5rep);
|
||||
result = result.replace(re5rep, parts + '\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = "' + projectFolderName + '/' + entitlementsFileName + '";');
|
||||
|
||||
let re6rep = new RegExp('\\/\\* Release \\*\\/.*\n.*isa = XCBuildConfiguration;.*\n.*\n.*buildSettings = {');
|
||||
parts = result.match(re6rep);
|
||||
result = result.replace(re6rep, parts + '\n\t\t\t\tCODE_SIGN_ENTITLEMENTS = "' + projectFolderName + '/' + entitlementsFileName + '";');
|
||||
}
|
||||
|
||||
// write result to project.pbxproj
|
||||
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log(pbxprojPath + " written successfully");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = (context) => {
|
||||
let basePath = './platforms/ios/';
|
||||
let buildType = 'dev';
|
||||
let xcodeprojName = commonFuncs.getXcodeProjName(basePath);
|
||||
let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj';
|
||||
let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements';
|
||||
|
||||
let cordovaBuildConfigPath = './build.json'
|
||||
let cordovaBuildConfig = null;
|
||||
let willEnablePushNotificationForXCode = true;
|
||||
try { // try to read ios developmentTeam from build.json
|
||||
cordovaBuildConfig = JSON.parse(fs.readFileSync(cordovaBuildConfigPath, "utf8"));
|
||||
if(cordovaBuildConfig.ios.release.developmentTeam === null && cordovaBuildConfig.ios.release.developmentTeam === undefined) {
|
||||
throw 'no valid developmentTeam found in build.json';
|
||||
}
|
||||
} catch(e) {
|
||||
console.log("Do not detected 'build.json' or ios.release.developmentTeam not avaliable in 'build.json' \n" +
|
||||
"Will not enable XCode Push Notification Capability. \n" +
|
||||
"Will only enable Push Notification for CI by add config to '" + basePath + xcodeprojName + "/Entitlements-Debug.plist' and '" + basePath + xcodeprojName + "/Entitlements-Release.plist' \n" +
|
||||
"Please add 'build.json' to cordova project root folder to make after hook fully functional. \n" +
|
||||
"Reference [1]https://cordova.apache.org/docs/en/latest/reference/cordova-cli/#cordova-build-command \n" +
|
||||
"Reference [2]https://cordova.apache.org/docs/en/latest/guide/platforms/ios/#signing-an-app");
|
||||
willEnablePushNotificationForXCode = false;
|
||||
}
|
||||
|
||||
enablePushNotificationForCI(basePath, xcodeprojName);
|
||||
|
||||
if(willEnablePushNotificationForXCode) {
|
||||
enablePushNotificationForXCode(entitlementsPath, pbxprojPath, cordovaBuildConfig);
|
||||
}
|
||||
}
|
||||
10
package.json
10
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.1.7",
|
||||
"version": "3.1.9",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
@@ -21,13 +21,9 @@
|
||||
"cordova-ios",
|
||||
"cordova-android"
|
||||
],
|
||||
"engines": [{
|
||||
"name": "cordova",
|
||||
"version": ">=3.0"
|
||||
}],
|
||||
"dependencies": {
|
||||
"devDependencies": {
|
||||
"cordova-plugin-device": "*",
|
||||
"cordova-plugin-jcore": "1.1.4"
|
||||
"cordova-plugin-jcore": "*"
|
||||
},
|
||||
"author": "JiGuang",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
id="jpush-phonegap-plugin"
|
||||
version="3.1.7">
|
||||
version="3.1.9">
|
||||
|
||||
<name>JPush</name>
|
||||
<description>JPush for cordova plugin</description>
|
||||
@@ -57,6 +57,10 @@
|
||||
<config-file target="*JPushConfig.plist" parent="Appkey">
|
||||
<string>$APP_KEY</string>
|
||||
</config-file>
|
||||
|
||||
<hook type="after_platform_add" src="hooks/iosEnablePush.js" />
|
||||
<hook type="after_plugin_install" src="hooks/iosEnablePush.js" />
|
||||
<hook type="before_plugin_uninstall" src="hooks/iosDisablePush.js" />
|
||||
</platform>
|
||||
|
||||
<platform name="android">
|
||||
@@ -155,7 +159,7 @@
|
||||
|
||||
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
||||
<receiver
|
||||
android:name="cn.jiguang.cordova.push.MyReceiver"
|
||||
android:name="cn.jiguang.cordova.push.MyReceiver"
|
||||
android:enabled="true">
|
||||
<intent-filter android:priority="1000">
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||
|
||||
@@ -458,6 +458,11 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
void getConnectionState(JSONArray data, CallbackContext callback) {
|
||||
boolean isConnected = JPushInterface.getConnectionState(cordovaActivity.getApplicationContext());
|
||||
callback.success(String.valueOf(isConnected));
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义通知行为,声音、震动、呼吸灯等。
|
||||
*/
|
||||
|
||||
@@ -208,6 +208,12 @@ JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
|
||||
}
|
||||
|
||||
// Android methods
|
||||
JPushPlugin.prototype.getConnectionState = function (successCallback) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('getConnectionState', [], successCallback)
|
||||
}
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setBasicPushNotificationBuilder', [], null)
|
||||
|
||||
Reference in New Issue
Block a user