mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-04-19 00:03:45 +08:00
Compare commits
25 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bf9dae294 | |||
| ca88f5878a | |||
| 8d9a7fa8b0 | |||
| dead85a931 | |||
| 95330b11ed | |||
| cba5ffbabb | |||
| d524d8db00 | |||
| e8417df550 | |||
| 89293001e8 | |||
| 78222b7123 | |||
| 1fb48e886f | |||
| 28a9c298c8 | |||
| c65c5a4057 | |||
| 6a47116b82 | |||
| 68b217d8a8 | |||
| 13b36b746c | |||
| b234861e44 | |||
| 2287ef10dd | |||
| 2a05ea1784 | |||
| 9d3d32d725 | |||
| 3c88e87b17 | |||
| b3b2af1520 | |||
| 6e8b5931fb | |||
| 23ed4817a4 | |||
| 9a1da318cc |
+39
-1
@@ -1 +1,39 @@
|
|||||||
.DS_Store
|
# Created by https://www.gitignore.io/api/macos,apachecordova
|
||||||
|
|
||||||
|
### ApacheCordova ###
|
||||||
|
# Apache Cordova generated files and directories
|
||||||
|
bin/*
|
||||||
|
!/plugins
|
||||||
|
!/plugins/android.json
|
||||||
|
!/plugins/fetch.json
|
||||||
|
plugins/*
|
||||||
|
platforms/*
|
||||||
|
|
||||||
|
### macOS ###
|
||||||
|
*.DS_Store
|
||||||
|
.AppleDouble
|
||||||
|
.LSOverride
|
||||||
|
|
||||||
|
# Icon must end with two \r
|
||||||
|
Icon
|
||||||
|
|
||||||
|
# Thumbnails
|
||||||
|
._*
|
||||||
|
|
||||||
|
# Files that might appear in the root of a volume
|
||||||
|
.DocumentRevisions-V100
|
||||||
|
.fseventsd
|
||||||
|
.Spotlight-V100
|
||||||
|
.TemporaryItems
|
||||||
|
.Trashes
|
||||||
|
.VolumeIcon.icns
|
||||||
|
.com.apple.timemachine.donotpresent
|
||||||
|
|
||||||
|
# Directories potentially created on remote AFP share
|
||||||
|
.AppleDB
|
||||||
|
.AppleDesktop
|
||||||
|
Network Trash Folder
|
||||||
|
Temporary Items
|
||||||
|
.apdisk
|
||||||
|
|
||||||
|
# End of https://www.gitignore.io/api/macos,apachecordova
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
||||||
[]()
|
[]()
|
||||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||||
[](https://github.com/jpush/jpush-phonegap-plugin)
|
[](https://github.com/jpush/jpush-phonegap-plugin)
|
||||||
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
||||||
|
|
||||||
@@ -17,16 +17,23 @@
|
|||||||
|
|
||||||
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
||||||
|
|
||||||
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
|
```
|
||||||
|
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
|
||||||
|
```
|
||||||
|
|
||||||
- 或直接通过 url 安装:
|
- 或直接通过 url 安装:
|
||||||
|
|
||||||
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable 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
|
## Usage
|
||||||
### API
|
### API
|
||||||
@@ -45,7 +52,7 @@
|
|||||||
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
||||||
|
|
||||||
## FAQ
|
## FAQ
|
||||||
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可访问[极光社区](http://community.jiguang.cn/)或 [Issues](https://github.com/jpush/jpush-phonegap-plugin/issues) 提问。
|
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可到 [Issues](https://github.com/jpush/jpush-phonegap-plugin/issues) 提问。
|
||||||
|
|
||||||
### Android
|
### Android
|
||||||
#### 在 Eclipse 中 import 工程之后出现:*Type CallbackContext cannot be resolved to a type*
|
#### 在 Eclipse 中 import 工程之后出现:*Type CallbackContext cannot be resolved to a type*
|
||||||
@@ -96,7 +103,7 @@ cordova platform update ios
|
|||||||
## Support
|
## Support
|
||||||
- QQ 群:413602425
|
- QQ 群:413602425
|
||||||
- [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).
|
||||||
|
|||||||
+14
-14
@@ -161,9 +161,11 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
|
|
||||||
#### 接口定义
|
#### 接口定义
|
||||||
|
|
||||||
JPushPlugin.prototype.setTagsWithAlias(tags, alias)
|
```js
|
||||||
JPushPlugin.prototype.setTags(tags)
|
JPushPlugin.prototype.setTagsWithAlias(tags, alias, successCallback, errorCallback)
|
||||||
JPushPlugin.prototype.setAlias(alias)
|
JPushPlugin.prototype.setTags(tags, successCallback, errorCallback)
|
||||||
|
JPushPlugin.prototype.setAlias(alias, successCallback, errorCallback)
|
||||||
|
```
|
||||||
|
|
||||||
#### 参数说明
|
#### 参数说明
|
||||||
* tags:
|
* tags:
|
||||||
@@ -181,17 +183,15 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
||||||
* 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
|
* 限制:alias 命名长度限制为 40 字节(判断长度需采用 UTF-8 编码)。
|
||||||
|
|
||||||
#### 返回值说明
|
#### 代码示例
|
||||||
|
|
||||||
函数本身无返回值,但需要注册 `jpush.setTagsWithAlias` 事件来监听设置结果:
|
```js
|
||||||
|
window.plugins.jPushPlugin.setTagsWithAlias([tag1, tag2], alias1, function () {
|
||||||
document.addEventListener("jpush.setTagsWithAlias", function(event) {
|
// success callback.
|
||||||
console.log("onTagsWithAlias")
|
}, function (errorMsg) {
|
||||||
var result = "result code:" + event.resultCode + " "
|
// errorMsg 格式为 'errorCode: error message'.
|
||||||
result += "tags:" + event.tags + " "
|
})
|
||||||
result += "alias:" + event.alias + " "
|
```
|
||||||
$("#tagAliasResult").html(result)
|
|
||||||
}, false)
|
|
||||||
|
|
||||||
#### 错误码定义
|
#### 错误码定义
|
||||||
|
|
||||||
@@ -223,7 +223,7 @@ JPush SDK 会以广播的形式发送 RegistrationID 到应用程序。
|
|||||||
if(device.platform == "Android") {
|
if(device.platform == "Android") {
|
||||||
alertContent = event.alert
|
alertContent = event.alert
|
||||||
} else {
|
} else {
|
||||||
lertContent = event.aps.alert
|
alertContent = event.aps.alert
|
||||||
}
|
}
|
||||||
}, false)
|
}, false)
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -116,7 +116,10 @@
|
|||||||
if (tag3 != "") {
|
if (tag3 != "") {
|
||||||
tags.push(tag3);
|
tags.push(tag3);
|
||||||
}
|
}
|
||||||
window.plugins.jPushPlugin.setTagsWithAlias(tags, alias);
|
window.plugins.jPushPlugin.setTagsWithAlias(tags, alias, function () {
|
||||||
|
// Success callback
|
||||||
|
console.log(tags + ' - ' + alias)
|
||||||
|
});
|
||||||
} catch (exception) {
|
} catch (exception) {
|
||||||
console.log(exception);
|
console.log(exception);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>aps-environment</key>
|
||||||
|
<string>development</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* 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) => {
|
||||||
|
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");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.removeAPNSinEntitlements = (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");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports.getXcodeProjName = (searchPath) => {
|
||||||
|
if(searchPath == null || searchPath == undefined) {
|
||||||
|
searchPath = './';
|
||||||
|
}
|
||||||
|
let resultFolderName = null;
|
||||||
|
let folderNames = fs.readdirSync(searchPath).filter(file => fs.lstatSync(path.join(searchPath, file)).isDirectory());
|
||||||
|
let folderNamesReg = new RegExp('.*\.xcodeproj', 'g') // get filder name like `*.xcodeproj`
|
||||||
|
for(let folderName of folderNames) {
|
||||||
|
if(folderName.match(folderNamesReg)) {
|
||||||
|
resultFolderName = folderName;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultFolderName.substr(0, resultFolderName.length - 10);
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
/*
|
||||||
|
* Author: Derek Chia <snipking@gmail.com>
|
||||||
|
* Cordova plugin after hook to disable `Push Notification` capability for XCode 8
|
||||||
|
*/
|
||||||
|
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
let commonFuncs = require('./common');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove APNS env from cordova project Entitlements-Debug.plist and Entitlements-Release.plist
|
||||||
|
* This two file will work when xcode archive app
|
||||||
|
*/
|
||||||
|
let disablePushNotificationForCI = (basePath, xcodeprojName) => {
|
||||||
|
commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Debug.plist');
|
||||||
|
commonFuncs.removeAPNSinEntitlements(basePath + xcodeprojName + '/Entitlements-Release.plist');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove APNS env to entitlement file; disable Push Notification capability in .pbxproj file
|
||||||
|
* This two file will work when xcode archive app
|
||||||
|
*/
|
||||||
|
let disablePushNotificationForXCode = (entitlementsPath, pbxprojPath) => {
|
||||||
|
/**
|
||||||
|
* remove APNS env to entitlement file
|
||||||
|
*/
|
||||||
|
if( fs.existsSync(entitlementsPath) ) {
|
||||||
|
commonFuncs.removeAPNSinEntitlements(entitlementsPath);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* disable Push Notification capability in .pbxproj file
|
||||||
|
* equally disable "Push Notification" switch in xcode
|
||||||
|
*/
|
||||||
|
fs.readFile(pbxprojPath, "utf8", function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log("Reading pbxproj file asynchronously");
|
||||||
|
|
||||||
|
// turn off Push Notification Capability
|
||||||
|
let re4rep = new RegExp('isa = PBXProject;(.|[\r\n])*TargetAttributes(.|[\r\n])*SystemCapabilities(.|[\r\n])*com\.apple\.Push = {(.|[\r\n])*enabled = [01]');
|
||||||
|
let parts = re4rep.exec(data);
|
||||||
|
result = data.replace(re4rep, parts[0].substr(0, parts[0].length - 1) + '0');
|
||||||
|
|
||||||
|
// write result to project.pbxproj
|
||||||
|
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||||
|
if (err) {
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
|
console.log(pbxprojPath + " written successfully");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
let basePath = './platforms/ios/';
|
||||||
|
let buildType = 'dev';
|
||||||
|
let xcodeprojName = commonFuncs.getXcodeProjName(basePath);
|
||||||
|
let pbxprojPath = basePath + xcodeprojName + '.xcodeproj/project.pbxproj';
|
||||||
|
let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitlements';
|
||||||
|
|
||||||
|
disablePushNotificationForCI(basePath, xcodeprojName);
|
||||||
|
|
||||||
|
disablePushNotificationForXCode(entitlementsPath, pbxprojPath);
|
||||||
@@ -0,0 +1,167 @@
|
|||||||
|
/*
|
||||||
|
* 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");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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"));
|
||||||
|
} catch(e) {
|
||||||
|
console.log("Do not detected 'build.json' to get ios developent team. \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 fullly 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);
|
||||||
|
}
|
||||||
+3
-7
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "jpush-phonegap-plugin",
|
"name": "jpush-phonegap-plugin",
|
||||||
"version": "3.1.6",
|
"version": "3.1.8",
|
||||||
"description": "JPush for cordova plugin",
|
"description": "JPush for cordova plugin",
|
||||||
"cordova": {
|
"cordova": {
|
||||||
"id": "jpush-phonegap-plugin",
|
"id": "jpush-phonegap-plugin",
|
||||||
@@ -21,13 +21,9 @@
|
|||||||
"cordova-ios",
|
"cordova-ios",
|
||||||
"cordova-android"
|
"cordova-android"
|
||||||
],
|
],
|
||||||
"engines": [{
|
"devDependencies": {
|
||||||
"name": "cordova",
|
|
||||||
"version": ">=3.0"
|
|
||||||
}],
|
|
||||||
"dependencies": {
|
|
||||||
"cordova-plugin-device": "*",
|
"cordova-plugin-device": "*",
|
||||||
"cordova-plugin-jcore": "1.1.4"
|
"cordova-plugin-jcore": "*"
|
||||||
},
|
},
|
||||||
"author": "JiGuang",
|
"author": "JiGuang",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
+19
-9
@@ -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.6">
|
version="3.1.8">
|
||||||
|
|
||||||
<name>JPush</name>
|
<name>JPush</name>
|
||||||
<description>JPush for cordova plugin</description>
|
<description>JPush for cordova plugin</description>
|
||||||
@@ -57,12 +57,16 @@
|
|||||||
<config-file target="*JPushConfig.plist" parent="Appkey">
|
<config-file target="*JPushConfig.plist" parent="Appkey">
|
||||||
<string>$APP_KEY</string>
|
<string>$APP_KEY</string>
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
|
<hook type="after_platform_add" src="hooks/iosEnablePush.js" />
|
||||||
|
<hook type="after_plugin_install" src="hooks/iosEnablePush.js" />
|
||||||
|
<hook type="before_plugin_uninstall" src="hooks/iosDisablePush.js" />
|
||||||
</platform>
|
</platform>
|
||||||
|
|
||||||
<platform name="android">
|
<platform name="android">
|
||||||
<config-file target="res/xml/config.xml" parent="/*">
|
<config-file target="res/xml/config.xml" parent="/*">
|
||||||
<feature name="JPushPlugin">
|
<feature name="JPushPlugin">
|
||||||
<param name="android-package" value="cn.jpush.phonegap.JPushPlugin" />
|
<param name="android-package" value="cn.jiguang.cordova.push.JPushPlugin" />
|
||||||
</feature>
|
</feature>
|
||||||
</config-file>
|
</config-file>
|
||||||
|
|
||||||
@@ -154,7 +158,9 @@
|
|||||||
</service>
|
</service>
|
||||||
|
|
||||||
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
||||||
<receiver android:name="cn.jpush.phonegap.MyReceiver" android:enabled="true">
|
<receiver
|
||||||
|
android:name="cn.jiguang.cordova.push.MyReceiver"
|
||||||
|
android:enabled="true">
|
||||||
<intent-filter android:priority="1000">
|
<intent-filter android:priority="1000">
|
||||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||||
<!-- Required 显示通知栏 -->
|
<!-- Required 显示通知栏 -->
|
||||||
@@ -188,14 +194,18 @@
|
|||||||
|
|
||||||
<source-file src="src/android/libs/jpush-android_v3.0.6.jar" target-dir="libs" />
|
<source-file src="src/android/libs/jpush-android_v3.0.6.jar" target-dir="libs" />
|
||||||
|
|
||||||
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jpush/phonegap" />
|
<source-file src="src/android/MyReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||||
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jpush/phonegap" />
|
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||||
|
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml" target-dir="res/drawable" />
|
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml"
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml" target-dir="res/drawable" />
|
target-dir="res/drawable" />
|
||||||
|
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml"
|
||||||
|
target-dir="res/drawable" />
|
||||||
|
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png" target-dir="res/drawable-hdpi" />
|
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png"
|
||||||
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png" target-dir="res/drawable-hdpi" />
|
target-dir="res/drawable-hdpi" />
|
||||||
|
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png"
|
||||||
|
target-dir="res/drawable-hdpi" />
|
||||||
|
|
||||||
<source-file src="src/android/res/layout/jpush_popwin_layout.xml" target-dir="res/layout" />
|
<source-file src="src/android/res/layout/jpush_popwin_layout.xml" target-dir="res/layout" />
|
||||||
<source-file src="src/android/res/layout/jpush_webview_layout.xml" target-dir="res/layout" />
|
<source-file src="src/android/res/layout/jpush_webview_layout.xml" target-dir="res/layout" />
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package cn.jpush.phonegap;
|
package cn.jiguang.cordova.push;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
@@ -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));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 自定义通知行为,声音、震动、呼吸灯等。
|
* 自定义通知行为,声音、震动、呼吸灯等。
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package cn.jpush.phonegap;
|
package cn.jiguang.cordova.push;
|
||||||
|
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|||||||
@@ -99,24 +99,45 @@
|
|||||||
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{
|
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{
|
||||||
NSString *alias = [command argumentAtIndex:0];
|
NSString *alias = [command argumentAtIndex:0];
|
||||||
NSArray *tags = [command argumentAtIndex:1];
|
NSArray *tags = [command argumentAtIndex:1];
|
||||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
|
||||||
alias:alias
|
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
alias:alias
|
||||||
object:self];
|
fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
|
||||||
|
CDVPluginResult *result;
|
||||||
|
if (iResCode == 0) {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
|
||||||
|
} else {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
|
}
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setTags:(CDVInvokedUrlCommand *)command{
|
-(void)setTags:(CDVInvokedUrlCommand*)command{
|
||||||
NSArray *tags = command.arguments;
|
NSArray *tags = command.arguments;
|
||||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
alias:nil
|
||||||
object:self];
|
fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
|
||||||
|
CDVPluginResult *result;
|
||||||
|
if (iResCode == 0) {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
|
||||||
|
} else {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
|
}
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setAlias:(CDVInvokedUrlCommand *)command{
|
-(void)setAlias:(CDVInvokedUrlCommand*)command{
|
||||||
NSString *alias = [command argumentAtIndex:0];
|
NSString *alias = [command argumentAtIndex:0];
|
||||||
[JPUSHService setAlias:alias
|
[JPUSHService setTags:nil
|
||||||
callbackSelector:@selector(tagsWithAliasCallback:tags:alias:)
|
alias:alias
|
||||||
object:self];
|
fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {
|
||||||
|
CDVPluginResult *result;
|
||||||
|
if (iResCode == 0) {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:nil];
|
||||||
|
} else {
|
||||||
|
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:nil];
|
||||||
|
}
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)getRegistrationID:(CDVInvokedUrlCommand*)command{
|
-(void)getRegistrationID:(CDVInvokedUrlCommand*)command{
|
||||||
@@ -149,12 +170,12 @@
|
|||||||
[JPUSHService resetBadge];
|
[JPUSHService resetBadge];
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)setApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command{
|
-(void)setApplicationIconBadgeNumber:(CDVInvokedUrlCommand*)command{
|
||||||
NSNumber *badge = [command argumentAtIndex:0];
|
NSNumber *badge = [command argumentAtIndex:0];
|
||||||
[UIApplication sharedApplication].applicationIconBadgeNumber = badge.intValue;
|
[UIApplication sharedApplication].applicationIconBadgeNumber = badge.intValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
-(void)getApplicationIconBadgeNumber:(CDVInvokedUrlCommand *)command {
|
-(void)getApplicationIconBadgeNumber:(CDVInvokedUrlCommand*)command {
|
||||||
NSInteger num = [UIApplication sharedApplication].applicationIconBadgeNumber;
|
NSInteger num = [UIApplication sharedApplication].applicationIconBadgeNumber;
|
||||||
NSNumber *number = [NSNumber numberWithInteger:num];
|
NSNumber *number = [NSNumber numberWithInteger:num];
|
||||||
[self handleResultWithValue:number command:command];
|
[self handleResultWithValue:number command:command];
|
||||||
@@ -252,16 +273,22 @@
|
|||||||
NSString *textInputPlaceholder = dict[@"textInputPlaceholder"];
|
NSString *textInputPlaceholder = dict[@"textInputPlaceholder"];
|
||||||
UNTextInputNotificationAction *inputAction = [UNTextInputNotificationAction actionWithIdentifier:identifier title:title options:option.integerValue textInputButtonTitle:textInputButtonTitle textInputPlaceholder:textInputPlaceholder];
|
UNTextInputNotificationAction *inputAction = [UNTextInputNotificationAction actionWithIdentifier:identifier title:title options:option.integerValue textInputButtonTitle:textInputButtonTitle textInputPlaceholder:textInputPlaceholder];
|
||||||
[actions addObject:inputAction];
|
[actions addObject:inputAction];
|
||||||
}else{
|
} else {
|
||||||
UNNotificationAction *action = [UNNotificationAction actionWithIdentifier:title title:title options:option.integerValue];
|
UNNotificationAction *action = [UNNotificationAction actionWithIdentifier:title title:title options:option.integerValue];
|
||||||
[actions addObject:action];
|
[actions addObject:action];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UNNotificationCategory *category;
|
UNNotificationCategory *category;
|
||||||
if (dimiss) {
|
if (dimiss) {
|
||||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionCustomDismissAction];
|
category = [UNNotificationCategory categoryWithIdentifier:categoryId
|
||||||
}else{
|
actions:actions
|
||||||
category = [UNNotificationCategory categoryWithIdentifier:categoryId actions:actions intentIdentifiers:@[] options:UNNotificationCategoryOptionNone];
|
intentIdentifiers:@[]
|
||||||
|
options:UNNotificationCategoryOptionCustomDismissAction];
|
||||||
|
} else {
|
||||||
|
category = [UNNotificationCategory categoryWithIdentifier:categoryId
|
||||||
|
actions:actions
|
||||||
|
intentIdentifiers:@[]
|
||||||
|
options:UNNotificationCategoryOptionNone];
|
||||||
}
|
}
|
||||||
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]];
|
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]];
|
||||||
}
|
}
|
||||||
@@ -282,7 +309,7 @@
|
|||||||
NSNumber *isIDFA = [plistData valueForKey:JPushConfig_IsIDFA];
|
NSNumber *isIDFA = [plistData valueForKey:JPushConfig_IsIDFA];
|
||||||
|
|
||||||
NSString *advertisingId = nil;
|
NSString *advertisingId = nil;
|
||||||
if(isIDFA.boolValue){
|
if(isIDFA.boolValue) {
|
||||||
advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
|
advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
|
||||||
}
|
}
|
||||||
[JPUSHService setupWithOption:userInfo
|
[JPUSHService setupWithOption:userInfo
|
||||||
@@ -293,7 +320,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark 将参数返回给js
|
#pragma mark 将参数返回给js
|
||||||
-(void)handleResultWithValue:(id)value command:(CDVInvokedUrlCommand*)command{
|
-(void)handleResultWithValue:(id)value command:(CDVInvokedUrlCommand*)command {
|
||||||
CDVPluginResult *result = nil;
|
CDVPluginResult *result = nil;
|
||||||
CDVCommandStatus status = CDVCommandStatus_OK;
|
CDVCommandStatus status = CDVCommandStatus_OK;
|
||||||
|
|
||||||
@@ -317,17 +344,18 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark 设置标签及别名回调
|
#pragma mark 设置标签及别名回调
|
||||||
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias{
|
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias {
|
||||||
NSDictionary *dict = @{@"resultCode":[NSNumber numberWithInt:resultCode],
|
if (resultCode == 0) { // Success
|
||||||
@"tags" :tags == nil ? [NSNull null] : [tags allObjects],
|
|
||||||
@"alias" :alias == nil ? [NSNull null] : alias
|
} else {
|
||||||
};
|
|
||||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_SetTagsWithAlias jsString:[dict toJsonString]];
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)networkDidReceiveMessage:(NSNotification *)notification {
|
- (void)networkDidReceiveMessage:(NSNotification *)notification {
|
||||||
if (notification && notification.userInfo) {
|
if (notification && notification.userInfo) {
|
||||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage jsString:[notification.userInfo toJsonString]];
|
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveMessage
|
||||||
|
jsString:[notification.userInfo toJsonString]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+45
-36
@@ -7,19 +7,22 @@ JPushPlugin.prototype.openNotification = {}
|
|||||||
JPushPlugin.prototype.receiveNotification = {}
|
JPushPlugin.prototype.receiveNotification = {}
|
||||||
|
|
||||||
JPushPlugin.prototype.isPlatformIOS = function () {
|
JPushPlugin.prototype.isPlatformIOS = function () {
|
||||||
var isPlatformIOS = (device.platform == 'iPhone' ||
|
return (device.platform === 'iPhone' ||
|
||||||
device.platform == 'iPad' ||
|
device.platform === 'iPad' ||
|
||||||
device.platform == 'iPod touch' ||
|
device.platform === 'iPod touch' ||
|
||||||
device.platform == 'iOS')
|
device.platform === 'iOS')
|
||||||
return isPlatformIOS
|
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.errorCallback = function (msg) {
|
JPushPlugin.prototype.errorCallback = function (msg) {
|
||||||
console.log('Javascript Callback Error: ' + msg)
|
console.log('JPush Callback Error: ' + msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.callNative = function (name, args, successCallback) {
|
JPushPlugin.prototype.callNative = function (name, args, successCallback, errorCallback) {
|
||||||
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
|
if (errorCallback) {
|
||||||
|
cordova.exec(successCallback, errorCallback, 'JPushPlugin', name, args)
|
||||||
|
} else {
|
||||||
|
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Common methods
|
// Common methods
|
||||||
@@ -67,7 +70,7 @@ JPushPlugin.prototype.clearLocalNotifications = function () {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
|
JPushPlugin.prototype.setTagsWithAlias = function (tags, alias, successCallback, errorCallback) {
|
||||||
if (tags == null) {
|
if (tags == null) {
|
||||||
this.setAlias(alias)
|
this.setAlias(alias)
|
||||||
return
|
return
|
||||||
@@ -78,29 +81,29 @@ JPushPlugin.prototype.setTagsWithAlias = function (tags, alias) {
|
|||||||
}
|
}
|
||||||
var arrayTagWithAlias = [tags]
|
var arrayTagWithAlias = [tags]
|
||||||
arrayTagWithAlias.unshift(alias)
|
arrayTagWithAlias.unshift(alias)
|
||||||
this.callNative('setTagsWithAlias', arrayTagWithAlias, null)
|
this.callNative('setTagsWithAlias', arrayTagWithAlias, successCallback, errorCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setTags = function (tags) {
|
JPushPlugin.prototype.setTags = function (tags, successCallback, errorCallback) {
|
||||||
this.callNative('setTags', tags, null)
|
this.callNative('setTags', tags, successCallback, errorCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setAlias = function (alias) {
|
JPushPlugin.prototype.setAlias = function (alias, successCallback, errorCallback) {
|
||||||
this.callNative('setAlias', [alias], null)
|
this.callNative('setAlias', [alias], successCallback, errorCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 判断系统设置中是否对本应用启用通知。
|
// 判断系统设置中是否对本应用启用通知。
|
||||||
// iOS: 返回值如果大于 0,代表通知开启;0: 通知关闭。
|
// iOS: 返回值如果大于 0,代表通知开启;0: 通知关闭。
|
||||||
// UIRemoteNotificationTypeNone = 0,
|
// UIRemoteNotificationTypeNone = 0,
|
||||||
// UIRemoteNotificationTypeBadge = 1 << 0,
|
// UIRemoteNotificationTypeBadge = 1 << 0,
|
||||||
// UIRemoteNotificationTypeSound = 1 << 1,
|
// UIRemoteNotificationTypeSound = 1 << 1,
|
||||||
// UIRemoteNotificationTypeAlert = 1 << 2,
|
// UIRemoteNotificationTypeAlert = 1 << 2,
|
||||||
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
|
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
|
||||||
// Android: 返回值 1 代表通知启用、0: 通知关闭。
|
// Android: 返回值 1 代表通知启用;0: 通知关闭。
|
||||||
JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
|
JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
|
||||||
if (this.isPlatformIOS()) {
|
if (this.isPlatformIOS()) {
|
||||||
this.callNative('getUserNotificationSettings', [], successCallback)
|
this.callNative('getUserNotificationSettings', [], successCallback)
|
||||||
} else if (device.platform == 'Android') {
|
} else if (device.platform === 'Android') {
|
||||||
this.callNative('areNotificationEnabled', [], successCallback)
|
this.callNative('areNotificationEnabled', [], successCallback)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -108,7 +111,7 @@ JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
|
|||||||
// iOS methods
|
// iOS methods
|
||||||
|
|
||||||
JPushPlugin.prototype.startJPushSDK = function () {
|
JPushPlugin.prototype.startJPushSDK = function () {
|
||||||
this.callNative('startJPushSDK', [] , null)
|
this.callNative('startJPushSDK', [], null)
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setBadge = function (value) {
|
JPushPlugin.prototype.setBadge = function (value) {
|
||||||
@@ -205,25 +208,31 @@ JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Android methods
|
// Android methods
|
||||||
|
JPushPlugin.prototype.getConnectionState = function (successCallback) {
|
||||||
|
if (device.platform === 'Android') {
|
||||||
|
this.callNative('getConnectionState', [], successCallback)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('setBasicPushNotificationBuilder', [], null)
|
this.callNative('setBasicPushNotificationBuilder', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('setCustomPushNotificationBuilder', [], null)
|
this.callNative('setCustomPushNotificationBuilder', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function (data) {
|
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function (data) {
|
||||||
if (device.platform === 'Android') {
|
if (device.platform === 'Android') {
|
||||||
data = JSON.stringify(data)
|
data = JSON.stringify(data)
|
||||||
var event = JSON.parse(data)
|
var event = JSON.parse(data)
|
||||||
cordova.fireDocumentEvent('jpush.receiveRegistrationId', event);
|
cordova.fireDocumentEvent('jpush.receiveRegistrationId', event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) {
|
JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) {
|
||||||
data = JSON.stringify(data)
|
data = JSON.stringify(data)
|
||||||
@@ -259,14 +268,14 @@ JPushPlugin.prototype.clearNotificationById = function (id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setLatestNotificationNum = function (num) {
|
JPushPlugin.prototype.setLatestNotificationNum = function (num) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('setLatestNotificationNum', [num], null)
|
this.callNative('setLatestNotificationNum', [num], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
|
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
|
||||||
notificationID, broadcastTime, extras) {
|
notificationID, broadcastTime, extras) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('addLocalNotification',
|
this.callNative('addLocalNotification',
|
||||||
[builderId, content, title, notificationID, broadcastTime, extras], null)
|
[builderId, content, title, notificationID, broadcastTime, extras], null)
|
||||||
}
|
}
|
||||||
@@ -289,7 +298,7 @@ JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
|
|||||||
*在 Portal 上展示给开发者。
|
*在 Portal 上展示给开发者。
|
||||||
*/
|
*/
|
||||||
JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('setStatisticsOpen', [mode], null)
|
this.callNative('setStatisticsOpen', [mode], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -299,19 +308,19 @@ JPushPlugin.prototype.setStatisticsOpen = function (mode) {
|
|||||||
* 具体可看:http://docs.jpush.io/client/android_api/#android-60
|
* 具体可看:http://docs.jpush.io/client/android_api/#android-60
|
||||||
*/
|
*/
|
||||||
JPushPlugin.prototype.requestPermission = function () {
|
JPushPlugin.prototype.requestPermission = function () {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('requestPermission', [], null)
|
this.callNative('requestPermission', [], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
|
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null)
|
this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) {
|
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) {
|
||||||
if (device.platform == 'Android') {
|
if (device.platform === 'Android') {
|
||||||
this.callNative('setPushTime', [weekdays, startHour, endHour], null)
|
this.callNative('setPushTime', [weekdays, startHour, endHour], null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user