forked from github/jpush-phonegap-plugin
Compare commits
23 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 |
67
README.md
67
README.md
@@ -1,64 +1,75 @@
|
||||
# JPush PhoneGap / Cordova 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)
|
||||
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
||||
|
||||
支持 iOS, Android 的 Cordova 推送插件。
|
||||
> 如需要 IM 功能的插件,可关注 [JMessage PhoneGap Plugin](https://github.com/jpush/jmessage-phonegap-plugin)。
|
||||
极光官方支持的 cordova 推送插件。
|
||||
|
||||
> 如需要短信验证码功能的插件,可关注 [JSMS Cordova Plugin](https://github.com/jpush/cordova-plugin-jsms)。
|
||||
|
||||
> QQ 交流群:413602425。
|
||||
- 如需要 IM 功能的插件,可关注 [jmessage-phonegap-plugin](https://github.com/jpush/jmessage-phonegap-plugin)
|
||||
- 如需要短信验证码功能插件,可关注 [cordova-plugin-jsms](https://github.com/jpush/cordova-plugin-jsms)
|
||||
- 如需要统计分析功能插件,可关注 [cordova-plugin-janalytics](https://github.com/jpush/cordova-plugin-janalytics)
|
||||
|
||||
## Install
|
||||
|
||||
- 通过 Cordova Plugins 安装,要求 Cordova CLI 5.0+:
|
||||
|
||||
```
|
||||
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey
|
||||
```
|
||||
```shell
|
||||
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
|
||||
```
|
||||
```shell
|
||||
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
|
||||
```
|
||||
```shell
|
||||
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
|
||||
|
||||
### API
|
||||
|
||||
- [Common](/doc/Common_detail_api.md)
|
||||
- [iOS](/doc/iOS_API.md)
|
||||
- [Android](/doc/Android_detail_api.md)
|
||||
|
||||
### Demo
|
||||
|
||||
插件项目中包含一个简单的 Demo。若想参考,可以在 */example* 文件夹内找到并拷贝以下文件:
|
||||
|
||||
example/index.html -> www/index.html
|
||||
example/css/* -> www/css
|
||||
example/js/* -> www/js
|
||||
example/index.html -> www/index.html
|
||||
example/css/* -> www/css
|
||||
example/js/* -> www/js
|
||||
|
||||
### 关于 PhoneGap build 云服务
|
||||
|
||||
该项目基于 Cordova 实现,目前无法使用 PhoneGap build 云服务进行打包,建议使用本地环境进行打包。
|
||||
|
||||
## FAQ
|
||||
|
||||
> 如果遇到了疑问,请优先参考 Demo 和 API 文档。若还无法解决,可到 [Issues](https://github.com/jpush/jpush-phonegap-plugin/issues) 提问。
|
||||
|
||||
### Android
|
||||
|
||||
#### 在 Eclipse 中 import 工程之后出现:*Type CallbackContext cannot be resolved to a type*
|
||||
|
||||
右键单击工程名 -> 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 后收不到通知
|
||||
|
||||
Android 的推送通过长连接的方式实现,只有在连接保持的情况下才能收到通知。而有的第三方 ROM 会限制一般应用服务的自启动,也就是
|
||||
在退出应用后,应用的所有服务均被杀死,且无法自启动,所以就会收不到通知。
|
||||
|
||||
@@ -75,7 +86,7 @@ Android 的推送通过长连接的方式实现,只有在连接保持的情况
|
||||
|
||||
#### 打包时遇到 i386 打包失败怎么办?
|
||||
|
||||
```
|
||||
```shell
|
||||
cordova platform update ios
|
||||
```
|
||||
|
||||
@@ -91,22 +102,26 @@ cordova platform update ios
|
||||
- IsIDFA:是否使用 IDFA 启动 SDK。
|
||||
|
||||
#### 刚集成完插件收不到推送怎么办?
|
||||
|
||||
请首先按照正确方式再次配置证书、描述文件,具体可参考 [iOS 证书设置指南](https://docs.jiguang.cn/jpush/client/iOS/ios_cer_guide/)。
|
||||
|
||||
#### iOS 集成插件白屏、或无法启动插件、或打包报错无法找到需要引入的文件怎么办?
|
||||
#### iOS 集成插件白屏、或无法启动插件、或打包报错无法找到需要引入的文件怎么办?
|
||||
|
||||
按照以下步骤逐个尝试:
|
||||
|
||||
- 升级至 Xcode 8
|
||||
- 先删除插件、再重装插件
|
||||
- 先使用 `cordova platform add ios`,后使用 `cordova plugin add`
|
||||
- 升级至最新版本 Xcode
|
||||
- 删除插件、再重装插件(先使用 `cordova platform add ios`,后使用 `cordova plugin add`)
|
||||
|
||||
## Support
|
||||
- QQ 群:413602425
|
||||
|
||||
- QQ 群:413602425 / 524248013
|
||||
- [JPush 官网文档](https://docs.jiguang.cn/jpush/guideline/intro/)
|
||||
- [极光社区](http://community.jiguang.cn/)
|
||||
|
||||
## Contribute
|
||||
|
||||
Please contribute! [Look at the issues](https://github.com/jpush/jpush-phonegap-plugin/issues).
|
||||
|
||||
## License
|
||||
|
||||
MIT © [JiGuang](/license)
|
||||
|
||||
@@ -175,9 +175,9 @@ window.plugins.jPushPlugin.getRegistrationID(function(data) {
|
||||
#### 接口定义
|
||||
|
||||
```
|
||||
JPushPlugin.prototype.setTagsWithAlias(tags, alias)
|
||||
JPushPlugin.prototype.setTags(tags)
|
||||
JPushPlugin.prototype.setAlias(alias)
|
||||
JPushPlugin.prototype.setTagsWithAlias(tags, alias, successCallback, errorCallback)
|
||||
JPushPlugin.prototype.setTags(tags, successCallback)
|
||||
JPushPlugin.prototype.setAlias(alias, errorCallback)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
@@ -197,21 +197,6 @@ JPushPlugin.prototype.setAlias(alias)
|
||||
- 有效的别名组成:字母(区分大小写)、数字、下划线、汉字。
|
||||
- 限制: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 | 描述 | 详细解释 |
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* Author: Derek Chia <snipking@gmail.com>
|
||||
* Cordova plugin after hook to disable `Push Notification` capability for XCode 8
|
||||
*/
|
||||
@@ -27,7 +27,7 @@ let disablePushNotificationForXCode = (entitlementsPath, pbxprojPath) => {
|
||||
if( fs.existsSync(entitlementsPath) ) {
|
||||
commonFuncs.removeAPNSinEntitlements(entitlementsPath);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* disable Push Notification capability in .pbxproj file
|
||||
* equally disable "Push Notification" switch in xcode
|
||||
@@ -37,19 +37,21 @@ let disablePushNotificationForXCode = (entitlementsPath, pbxprojPath) => {
|
||||
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');
|
||||
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
|
||||
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log(pbxprojPath + " written successfully");
|
||||
});
|
||||
// write result to project.pbxproj
|
||||
fs.writeFile(pbxprojPath, result, {"encoding": 'utf8'}, function(err) {
|
||||
if (err) {
|
||||
throw err;
|
||||
}
|
||||
console.log(pbxprojPath + " written successfully");
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -61,4 +63,4 @@ let entitlementsPath = basePath + xcodeprojName + '/' + xcodeprojName + '.entitl
|
||||
|
||||
disablePushNotificationForCI(basePath, xcodeprojName);
|
||||
|
||||
disablePushNotificationForXCode(entitlementsPath, pbxprojPath);
|
||||
disablePushNotificationForXCode(entitlementsPath, pbxprojPath);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.1.9",
|
||||
"version": "3.2.3",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
|
||||
@@ -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.9">
|
||||
version="3.2.3">
|
||||
|
||||
<name>JPush</name>
|
||||
<description>JPush for cordova plugin</description>
|
||||
@@ -38,7 +38,7 @@
|
||||
<source-file src="src/ios/Plugins/AppDelegate+JPush.m" />
|
||||
|
||||
<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" />
|
||||
|
||||
<framework src="CFNetwork.framework" weak="true" />
|
||||
@@ -58,9 +58,9 @@
|
||||
<string>$APP_KEY</string>
|
||||
</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="before_plugin_uninstall" src="hooks/iosDisablePush.js" />
|
||||
<hook type="before_plugin_uninstall" src="hooks/iosDisablePush.js" /> -->
|
||||
</platform>
|
||||
|
||||
<platform name="android">
|
||||
|
||||
@@ -119,7 +119,9 @@ NSDictionary *_launchOptions;
|
||||
break;
|
||||
}
|
||||
[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{
|
||||
|
||||
@@ -99,44 +99,47 @@
|
||||
-(void)setTagsWithAlias:(CDVInvokedUrlCommand*)command{
|
||||
NSString *alias = [command argumentAtIndex:0];
|
||||
NSArray *tags = [command argumentAtIndex:1];
|
||||
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
alias:alias
|
||||
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];
|
||||
}
|
||||
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
alias:alias
|
||||
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];
|
||||
}
|
||||
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)setTags:(CDVInvokedUrlCommand*)command{
|
||||
NSArray *tags = command.arguments;
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
alias:nil
|
||||
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];
|
||||
}
|
||||
NSArray *tags = command.arguments;
|
||||
[JPUSHService setTags:[NSSet setWithArray:tags]
|
||||
alias:nil
|
||||
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];
|
||||
}
|
||||
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)setAlias:(CDVInvokedUrlCommand*)command{
|
||||
NSString *alias = [command argumentAtIndex:0];
|
||||
[JPUSHService setTags:nil
|
||||
alias:alias
|
||||
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];
|
||||
}
|
||||
[JPUSHService setTags:nil
|
||||
alias:alias
|
||||
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];
|
||||
}
|
||||
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||
}];
|
||||
}
|
||||
|
||||
@@ -344,11 +347,11 @@
|
||||
}
|
||||
|
||||
#pragma mark 设置标签及别名回调
|
||||
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias {
|
||||
if (resultCode == 0) { // Success
|
||||
|
||||
} else {
|
||||
|
||||
-(void)tagsWithAliasCallback:(int)resultCode tags:(NSSet *)tags alias:(NSString *)alias {
|
||||
if (resultCode == 0) { // Success
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
BIN
src/ios/lib/jpush-ios-3.0.6.a
Executable file
BIN
src/ios/lib/jpush-ios-3.0.6.a
Executable file
Binary file not shown.
Reference in New Issue
Block a user