mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2026-01-28 00:00:03 +08:00
Compare commits
112 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10b29611c5 | ||
|
|
03429474c0 | ||
|
|
e56a05c64b | ||
|
|
a50bafcf3e | ||
|
|
60176c1ea6 | ||
|
|
c929496721 | ||
|
|
bdd9a8beea | ||
|
|
511eee622f | ||
|
|
2f4669471f | ||
|
|
85e3a23f88 | ||
|
|
206f2ac89e | ||
|
|
57b9364279 | ||
|
|
e0db803818 | ||
|
|
e140dc3b77 | ||
|
|
a26822b894 | ||
|
|
7dd7a4a86c | ||
|
|
b7a2a74d88 | ||
|
|
2f8234c29f | ||
|
|
a9b5af06a5 | ||
|
|
ddfb952bcf | ||
|
|
74fea46b1c | ||
|
|
b2f79c6234 | ||
|
|
9e23995555 | ||
|
|
a7455240a1 | ||
|
|
07466a8718 | ||
|
|
2b5d59e32e | ||
|
|
e4b70a561a | ||
|
|
da8c6c29e9 | ||
|
|
2ebacad254 | ||
|
|
9751b15bf0 | ||
|
|
b5fd5aa51a | ||
|
|
ee3e6b9e75 | ||
|
|
72407b0b9c | ||
|
|
2a427c70f9 | ||
|
|
bc12d3c606 | ||
|
|
9b1bff2ce1 | ||
|
|
3b5fc629dd | ||
|
|
fa4f3ac0d7 | ||
|
|
3ad9a415e9 | ||
|
|
d76d01c856 | ||
|
|
b7d4ba5111 | ||
|
|
7c326599aa | ||
|
|
2adbba2943 | ||
|
|
5b22d798cb | ||
|
|
eb624a7bb2 | ||
|
|
e29f00f77f | ||
|
|
1ecb2b273a | ||
|
|
6767af7488 | ||
|
|
03eab0c59e | ||
|
|
23ae6ad342 | ||
|
|
ccfffc9a69 | ||
|
|
16c3c96844 | ||
|
|
b2e818e88d | ||
|
|
5a8a926c50 | ||
|
|
0903b58270 | ||
|
|
f0dc403ca8 | ||
|
|
5c53749171 | ||
|
|
68bb0ebfdf | ||
|
|
30fc85fc8d | ||
|
|
fa0ca5f335 | ||
|
|
8de93a3a07 | ||
|
|
a4c17d3882 | ||
|
|
1d420b5bb6 | ||
|
|
d69f50915c | ||
|
|
e26d8448a0 | ||
|
|
387eaa1aff | ||
|
|
45785a569c | ||
|
|
0c8a6d25a6 | ||
|
|
529f08df88 | ||
|
|
e60d7c2b8c | ||
|
|
265d88e766 | ||
|
|
894c7d7ac1 | ||
|
|
aabc1453b8 | ||
|
|
6f78522cca | ||
|
|
ff735854ec | ||
|
|
e63f9d1774 | ||
|
|
f9a5cef603 | ||
|
|
ef8b1a7b4c | ||
|
|
82d68c3562 | ||
|
|
bdaeb5dbec | ||
|
|
0677094086 | ||
|
|
1d0d972737 | ||
|
|
3186de6111 | ||
|
|
9cb75a85db | ||
|
|
c022a06461 | ||
|
|
cc7328ad77 | ||
|
|
b5d3661240 | ||
|
|
1ae98e13e6 | ||
|
|
27cdf61ff3 | ||
|
|
1fb87d8fba | ||
|
|
a0e408f05f | ||
|
|
2d71db888f | ||
|
|
1bfd8a2836 | ||
|
|
6c80b47bad | ||
|
|
179220874e | ||
|
|
5e85c6b5b0 | ||
|
|
c526a26231 | ||
|
|
0380fbdc60 | ||
|
|
9c888aa964 | ||
|
|
14f03abce6 | ||
|
|
4b554fa2ca | ||
|
|
4085787f95 | ||
|
|
1eaf73a8d3 | ||
|
|
6c2bc206e3 | ||
|
|
10b457d489 | ||
|
|
5b0613628b | ||
|
|
6f77da5f41 | ||
|
|
24328f2ac9 | ||
|
|
8ccdbd525b | ||
|
|
67421b5091 | ||
|
|
83b7ca162a | ||
|
|
7f2179fe32 |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,5 +1,5 @@
|
||||
# Created by https://www.gitignore.io/api/macos,apachecordova
|
||||
|
||||
.idea
|
||||
### ApacheCordova ###
|
||||
# Apache Cordova generated files and directories
|
||||
bin/*
|
||||
|
||||
45
README.md
45
README.md
@@ -1,7 +1,7 @@
|
||||
# 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)
|
||||
|
||||
@@ -11,12 +11,16 @@
|
||||
- 如需要短信验证码功能插件,可关注 [cordova-plugin-jsms](https://github.com/jpush/cordova-plugin-jsms)
|
||||
- 如需要统计分析功能插件,可关注 [cordova-plugin-janalytics](https://github.com/jpush/cordova-plugin-janalytics)
|
||||
|
||||
注意:目前插件暂未支持 cordova-android 7.0.0,因此在添加 android platform 时,请指定 7.0.0 以下版本,例如 6.4.0。
|
||||
|
||||
>注意:插件从 v3.4.0 开始支持 cordova-android 7.0.0,因 cordova-android 7.0.0 修改了 Android 项目结构,因此不兼容之前的版本,升级前请务必注意。
|
||||
>
|
||||
>如果需要在cordova-android 7.0.0之前版本集成最新插件,参照[这篇文章](https://www.jianshu.com/p/23b117ca27a6)
|
||||
>
|
||||
>如果需要安装之前版本的插件,请先安装 v1.2.0 以下版本(建议安装 v1.1.12)的 [cordova-plugin-jcore](https://github.com/jpush/cordova-plugin-jcore),再安装旧版本插件(比如 v3.3.2),否则运行会报错。
|
||||
>
|
||||
>[Cordova Android版本与原生版本对应表](http://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#requirements-and-support)
|
||||
## Install
|
||||
|
||||
> 注意:
|
||||
>
|
||||
> - 应用的包名一定要和 APP_KEY 对应应用的包名一致,否则极光推送服务无法注册成功。
|
||||
> - 在使用 8 或以上版本的 Xcode 调试 iOS 项目时,需要先在项目配置界面的 Capabilities 中打开 Push Notifications 开关。
|
||||
|
||||
@@ -37,19 +41,46 @@
|
||||
```shell
|
||||
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
|
||||
```
|
||||
|
||||
|
||||
### 参数
|
||||
|
||||
- APP_KEY: 必须设置,JPush 上注册的包名对应的 Appkey
|
||||
|
||||
```shell
|
||||
--variable APP_KEY=your_jpush_appkey
|
||||
```
|
||||
|
||||
- CHANNEL: 可以不设置,v3.6.0+ 版本开始支持(Android Only),方便开发者统计 APK 分发渠道,默认为 developer-default.
|
||||
|
||||
```shell
|
||||
--variable CHANNEL=your_channel
|
||||
```
|
||||
|
||||
- 同时动态配置 APP_KEY 和 CHANNEL 示例
|
||||
|
||||
```shell
|
||||
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey --variable CHANNEL=your_channel
|
||||
```
|
||||
|
||||
### Ionic
|
||||
|
||||
如果使用了 Ionic,可以再安装 @jiguang-ionic/jpush 包,适配 ionic-native:
|
||||
|
||||
```shell
|
||||
npm install --save @jiguang-ionic/jpush
|
||||
npm install --save @jiguang-ionic/jpush@1.0.2
|
||||
|
||||
# npm install --save @jiguang-ionic/jpush@2.0.0 for ionic4+
|
||||
```
|
||||
|
||||
然后在 *app.module.ts* 中增加:
|
||||
|
||||
```js
|
||||
// @jiguang-ionic/jpush@1.0.0+
|
||||
import { JPush } from '@jiguang-ionic/jpush';
|
||||
|
||||
// @jiguang-ionic/jpush@2.0.0+
|
||||
import { JPush } from '@jiguang-ionic/jpush/ngx';
|
||||
...
|
||||
providers: [
|
||||
...
|
||||
@@ -119,6 +150,10 @@ Android 的推送通过长连接的方式实现,只有在保持连接的情况
|
||||
|
||||
### iOS
|
||||
|
||||
#### XCode 10 收不到推送怎么办?
|
||||
|
||||
打开 xcode -> file -> WorkSpace Settings… -> Build System 改成 Legacy Build System 然后卸载 App 重新运行。
|
||||
|
||||
#### 打包时遇到 i386 打包失败怎么办?
|
||||
|
||||
```shell
|
||||
|
||||
@@ -6,6 +6,8 @@
|
||||
- [通知栏样式定制](#通知栏样式定制)
|
||||
- [设置保留最近通知条数](#设置保留最近通知条数)
|
||||
- [本地通知](#本地通知)
|
||||
- [获取推送连接状态](#获取推送连接状态)
|
||||
- [地理围栏](#地理围栏)
|
||||
|
||||
## 获取集成日志(同时适用于 iOS)
|
||||
|
||||
@@ -185,4 +187,77 @@ window.JPush.clearLocalNotifications() // 同时适用于 iOS
|
||||
- title: 设置本地通知的 title。
|
||||
- notificationID: 设置本地通知的 ID(不要为 0)。
|
||||
- broadcastTime: 设置本地通知触发时间,为距离当前时间的数值,单位是毫秒。
|
||||
- extras: 设置额外的数据信息 extras 为 json 字符串。
|
||||
- extras: 设置额外的数据信息 extras 为 json 字符串。
|
||||
|
||||
## 获取推送连接状态
|
||||
|
||||
### API - getConnectionState
|
||||
|
||||
开发者可以使用此功能获取当前 Push 服务的连接状态
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.getConnectionState(callback)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- callback: 回调函数,用来通知 JPush 的推送服务是否开启。
|
||||
|
||||
#### 代码示例
|
||||
|
||||
```js
|
||||
window.JPush.getConnectionState(function (result) {
|
||||
if (result == 0) {
|
||||
// 链接状态
|
||||
} else {
|
||||
// 断开状态
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
## 地理围栏
|
||||
|
||||
### API - setGeofenceInterval
|
||||
|
||||
设置地理围栏监控周期,最小3分钟,最大1天。默认为15分钟,当距离地理围栏边界小于1000米周期自动调整为3分钟。设置成功后一直使用设置周期,不会进行调整。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setGeofenceInterval(interval)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- interval: 监控周期,单位是毫秒。
|
||||
|
||||
### API - setMaxGeofenceNumber
|
||||
|
||||
设置最多允许保存的地理围栏数量,超过最大限制后,如果继续创建先删除最早创建的地理围栏。默认数量为10个,允许设置最小1个,最大100个。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setMaxGeofenceNumber(maxNumber)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- maxNumber: 最多允许保存的地理围栏个数
|
||||
|
||||
|
||||
### API - setBadgeNumber
|
||||
|
||||
设置App角标,目前仅华为系手机支持。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setBadgeNumber(badgeNumb)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- badgeNumb: 角标显示数字,小于或等0,角标显示数字清楚
|
||||
@@ -577,5 +577,6 @@ window.JPush.getUserNotificationSettings(function(result) {
|
||||
// 系统设置中已关闭应用推送。
|
||||
} else if(result > 0) {
|
||||
// 系统设置中打开了应用推送。
|
||||
})
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
@@ -47,14 +47,6 @@ window.JPush.startJPushSDK()
|
||||
|
||||
调用此 API,用来开启 JPush SDK 提供的推送服务。
|
||||
|
||||
开发者 App 可以通过调用停止推送服务 API 来停止极光推送服务,当又需要使用极光推送服务时,则必须要调用恢复推送服务 API。
|
||||
|
||||
本功能是一个完全本地的状态操作。也就是说:停止推送服务的状态不会保存到服务器上。
|
||||
如果停止推送服务后,开发者 App 被重新安装,或者被清除数据,
|
||||
JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数据被清除掉了)。
|
||||
本功能其行为类似于网络中断的效果,即:推送服务停止期间推送的消息,
|
||||
恢复推送服务后,如果推送的消息还在保留的时长范围内,则客户端是会收到离线消息。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
@@ -63,6 +55,14 @@ window.JPush.init()
|
||||
|
||||
### API - stopPush
|
||||
|
||||
开发者 App 可以通过调用停止推送服务 API 来停止极光推送服务,当又需要使用极光推送服务时,则必须要调用恢复推送服务 API。
|
||||
|
||||
本功能是一个完全本地的状态操作。也就是说:停止推送服务的状态不会保存到服务器上。
|
||||
如果停止推送服务后,开发者 App 被重新安装,或者被清除数据,
|
||||
JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数据被清除掉了)。
|
||||
本功能其行为类似于网络中断的效果,即:推送服务停止期间推送的消息,
|
||||
恢复推送服务后,如果推送的消息还在保留的时长范围内,则客户端是会收到离线消息。
|
||||
|
||||
- 不推荐调用,因为这个 API 只是让你的 DeviceToken 失效,在 设置-通知 中您的应用程序没有任何变化。
|
||||
- 推荐:设置一个 UI 界面,提醒用户在 设置-通知 中关闭推送服务。
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>JPush Phonegap Simple Demo</title>
|
||||
@@ -18,15 +18,15 @@
|
||||
|
||||
initiateUI();
|
||||
};
|
||||
|
||||
|
||||
var getRegistrationID = function() {
|
||||
window.JPush.getRegistrationID(onGetRegistrationID);
|
||||
};
|
||||
|
||||
|
||||
var onGetRegistrationID = function(data) {
|
||||
try {
|
||||
console.log("JPushPlugin:registrationID is " + data);
|
||||
|
||||
|
||||
if (data.length == 0) {
|
||||
var t1 = window.setTimeout(getRegistrationID, 1000);
|
||||
}
|
||||
@@ -36,7 +36,7 @@
|
||||
console.log(exception);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var onTagsWithAlias = function(event) {
|
||||
try {
|
||||
console.log("onTagsWithAlias");
|
||||
@@ -48,7 +48,8 @@
|
||||
console.log(exception)
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var badgeNumb = 0;
|
||||
var onOpenNotification = function(event) {
|
||||
try {
|
||||
var alertContent;
|
||||
@@ -57,12 +58,17 @@
|
||||
} else {
|
||||
alertContent = event.aps.alert;
|
||||
}
|
||||
|
||||
badgeNumb = badgeNumb - 1;
|
||||
badgeNumb = badgeNumb<=0 ? 0 : badgeNumb;
|
||||
window.JPush.setBadgeNumber(badgeNumb);
|
||||
|
||||
alert("open Notification:" + alertContent);
|
||||
} catch (exception) {
|
||||
console.log("JPushPlugin:onOpenNotification" + exception);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var onReceiveNotification = function(event) {
|
||||
try {
|
||||
var alertContent;
|
||||
@@ -72,11 +78,14 @@
|
||||
alertContent = event.aps.alert;
|
||||
}
|
||||
$("#notificationResult").html(alertContent);
|
||||
|
||||
badgeNumb = badgeNumb + 1;
|
||||
window.JPush.setBadgeNumber(badgeNumb);
|
||||
} catch (exception) {
|
||||
console.log(exception)
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var onReceiveMessage = function(event) {
|
||||
try {
|
||||
var message;
|
||||
@@ -86,11 +95,24 @@
|
||||
message = event.content;
|
||||
}
|
||||
$("#messageResult").html(message);
|
||||
|
||||
badgeNumb = badgeNumb + 1;
|
||||
window.JPush.setBadgeNumber(badgeNumb);
|
||||
} catch (exception) {
|
||||
console.log("JPushPlugin:onReceiveMessage-->" + exception);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
var onResume = function(event){
|
||||
try {
|
||||
badgeNumb = 0
|
||||
window.JPush.setBadgeNumber(0);
|
||||
|
||||
} catch (exception) {
|
||||
console.log("onResume-->" + exception);
|
||||
}
|
||||
}
|
||||
|
||||
var initiateUI = function() {
|
||||
try {
|
||||
window.JPush.init();
|
||||
@@ -110,7 +132,7 @@
|
||||
var tag2 = $("#tagText2").val()
|
||||
var tag3 = $("#tagText3").val()
|
||||
var tags = []
|
||||
|
||||
|
||||
if (tag1) {
|
||||
tags.push(tag1)
|
||||
}
|
||||
@@ -123,7 +145,7 @@
|
||||
|
||||
window.JPush.setTags({ sequence: 1, tags: tags },
|
||||
function (result) {
|
||||
$("#tagsResult").html(result.tags)
|
||||
$("#tagsResult").html(JSON.stringify(result.tags))
|
||||
}, function (error) {
|
||||
alert(error.code)
|
||||
})
|
||||
@@ -135,7 +157,7 @@
|
||||
$("#getAllTags").click(function (event) {
|
||||
window.JPush.getAllTags({ sequence: 2 },
|
||||
function (result) {
|
||||
$("#tagsResult").html(result.tags)
|
||||
$("#tagsResult").html(JSON.stringify(result.tags))
|
||||
}, function (error) {
|
||||
alert(error.code)
|
||||
})
|
||||
@@ -179,14 +201,15 @@
|
||||
})
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
document.addEventListener("deviceready", onDeviceReady, false);
|
||||
document.addEventListener("jpush.openNotification", onOpenNotification, false);
|
||||
document.addEventListener("jpush.receiveNotification", onReceiveNotification, false);
|
||||
document.addEventListener("jpush.receiveMessage", onReceiveMessage, false);
|
||||
document.addEventListener("resume", onResume, false);
|
||||
</script>
|
||||
</head>
|
||||
|
||||
|
||||
<body>
|
||||
<div data-role="page" id="page">
|
||||
<div data-role="content">
|
||||
@@ -235,7 +258,7 @@
|
||||
<input type="button" id="getAllTags" value="Get all tags" />
|
||||
<input type="button" id="cleanTags" value="Clean tags" />
|
||||
</div>
|
||||
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<input type="button" id="setAlias" value="Set alias" />
|
||||
<input type="button" id="getAlias" value="Get alias" />
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { NavController } from 'ionic-angular';
|
||||
import { JPush } from '@jiguang-ionic/jpush';
|
||||
import { Device } from '@ionic-native/device';
|
||||
import { Component } from "@angular/core";
|
||||
import { NavController } from "ionic-angular";
|
||||
import { JPush } from "@jiguang-ionic/jpush";
|
||||
import { Device } from "@ionic-native/device";
|
||||
|
||||
@Component({
|
||||
selector: 'page-home',
|
||||
templateUrl: 'home.html'
|
||||
selector: "page-home",
|
||||
templateUrl: "home.html"
|
||||
})
|
||||
export class HomePage {
|
||||
|
||||
public registrationId: string;
|
||||
|
||||
devicePlatform: string;
|
||||
@@ -17,130 +16,161 @@ export class HomePage {
|
||||
tagResultHandler = function(result) {
|
||||
var sequence: number = result.sequence;
|
||||
var tags: Array<string> = result.tags == null ? [] : result.tags;
|
||||
alert('Success!' + '\nSequence: ' + sequence + '\nTags: ' + tags.toString());
|
||||
alert(
|
||||
"Success!" + "\nSequence: " + sequence + "\nTags: " + tags.toString()
|
||||
);
|
||||
};
|
||||
|
||||
aliasResultHandler = function(result) {
|
||||
var sequence: number = result.sequence;
|
||||
var alias: string = result.alias;
|
||||
alert('Success!' + '\nSequence: ' + sequence + '\nAlias: ' + alias);
|
||||
alert("Success!" + "\nSequence: " + sequence + "\nAlias: " + alias);
|
||||
};
|
||||
|
||||
errorHandler = function(err) {
|
||||
var sequence: number = err.sequence;
|
||||
var code = err.code;
|
||||
alert('Error!' + '\nSequence: ' + sequence + '\nCode: ' + code);
|
||||
alert("Error!" + "\nSequence: " + sequence + "\nCode: " + code);
|
||||
};
|
||||
|
||||
constructor(public navCtrl: NavController, public jpush: JPush, device: Device) {
|
||||
|
||||
constructor(
|
||||
public navCtrl: NavController,
|
||||
public jpush: JPush,
|
||||
device: Device
|
||||
) {
|
||||
this.devicePlatform = device.platform;
|
||||
|
||||
document.addEventListener('jpush.receiveNotification', (event: any) => {
|
||||
var content;
|
||||
if (this.devicePlatform == 'Android') {
|
||||
content = event.alert;
|
||||
} else {
|
||||
content = event.aps.alert;
|
||||
}
|
||||
alert('Receive notification: ' + JSON.stringify(event));
|
||||
}, false);
|
||||
|
||||
document.addEventListener('jpush.openNotification', (event: any) => {
|
||||
var content;
|
||||
if (this.devicePlatform == 'Android') {
|
||||
content = event.alert;
|
||||
} else { // iOS
|
||||
if (event.aps == undefined) { // 本地通知
|
||||
content = event.content;
|
||||
} else { // APNS
|
||||
document.addEventListener(
|
||||
"jpush.receiveNotification",
|
||||
(event: any) => {
|
||||
var content;
|
||||
if (this.devicePlatform == "Android") {
|
||||
content = event.alert;
|
||||
} else {
|
||||
content = event.aps.alert;
|
||||
}
|
||||
}
|
||||
alert('open notification: ' + JSON.stringify(event));
|
||||
}, false);
|
||||
alert("Receive notification: " + JSON.stringify(event));
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
document.addEventListener('jpush.receiveLocalNotification', (event: any) => {
|
||||
// iOS(*,9) Only , iOS(10,*) 将在 jpush.openNotification 和 jpush.receiveNotification 中触发。
|
||||
var content;
|
||||
if (this.devicePlatform == 'Android') {
|
||||
} else {
|
||||
content = event.content;
|
||||
}
|
||||
alert('receive local notification: ' + JSON.stringify(event));
|
||||
}, false);
|
||||
document.addEventListener(
|
||||
"jpush.openNotification",
|
||||
(event: any) => {
|
||||
var content;
|
||||
if (this.devicePlatform == "Android") {
|
||||
content = event.alert;
|
||||
} else {
|
||||
// iOS
|
||||
if (event.aps == undefined) {
|
||||
// 本地通知
|
||||
content = event.content;
|
||||
} else {
|
||||
// APNS
|
||||
content = event.aps.alert;
|
||||
}
|
||||
}
|
||||
alert("open notification: " + JSON.stringify(event));
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
document.addEventListener(
|
||||
"jpush.receiveLocalNotification",
|
||||
(event: any) => {
|
||||
// iOS(*,9) Only , iOS(10,*) 将在 jpush.openNotification 和 jpush.receiveNotification 中触发。
|
||||
var content;
|
||||
if (this.devicePlatform == "Android") {
|
||||
} else {
|
||||
content = event.content;
|
||||
}
|
||||
alert("receive local notification: " + JSON.stringify(event));
|
||||
},
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
getRegistrationID() {
|
||||
this.jpush.getRegistrationID()
|
||||
.then(rId => {
|
||||
this.registrationId = rId;
|
||||
});
|
||||
this.jpush.getRegistrationID().then(rId => {
|
||||
this.registrationId = rId;
|
||||
});
|
||||
}
|
||||
|
||||
setTags() {
|
||||
this.jpush.setTags({ sequence: this.sequence++, tags: ['Tag1', 'Tag2']})
|
||||
this.jpush
|
||||
.setTags({ sequence: this.sequence++, tags: ["Tag1", "Tag2"] })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
addTags() {
|
||||
this.jpush.addTags({ sequence: this.sequence++, tags: ['Tag3', 'Tag4']})
|
||||
this.jpush
|
||||
.addTags({ sequence: this.sequence++, tags: ["Tag3", "Tag4"] })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
checkTagBindState() {
|
||||
this.jpush.checkTagBindState({ sequence: this.sequence++, tag: 'Tag1' })
|
||||
this.jpush
|
||||
.checkTagBindState({ sequence: this.sequence++, tag: "Tag1" })
|
||||
.then(result => {
|
||||
var sequence = result.sequence;
|
||||
var tag = result.tag;
|
||||
var isBind = result.isBind;
|
||||
alert('Sequence: ' + sequence + '\nTag: ' + tag + '\nIsBind: ' + isBind);
|
||||
}).catch(this.errorHandler);
|
||||
alert(
|
||||
"Sequence: " + sequence + "\nTag: " + tag + "\nIsBind: " + isBind
|
||||
);
|
||||
})
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
deleteTags() {
|
||||
this.jpush.deleteTags({ sequence: this.sequence++, tags: ['Tag4']})
|
||||
this.jpush
|
||||
.deleteTags({ sequence: this.sequence++, tags: ["Tag4"] })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
getAllTags() {
|
||||
this.jpush.getAllTags({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.getAllTags({ sequence: this.sequence++ })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
cleanTags() {
|
||||
this.jpush.cleanTags({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.cleanTags({ sequence: this.sequence++ })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
setAlias() {
|
||||
this.jpush.setAlias({ sequence: this.sequence++, alias: 'TestAlias' })
|
||||
this.jpush
|
||||
.setAlias({ sequence: this.sequence++, alias: "TestAlias" })
|
||||
.then(this.aliasResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
getAlias() {
|
||||
this.jpush.getAlias({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.getAlias({ sequence: this.sequence++ })
|
||||
.then(this.aliasResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
deleteAlias() {
|
||||
this.jpush.deleteAlias({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.deleteAlias({ sequence: this.sequence++ })
|
||||
.then(this.aliasResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
addLocalNotification() {
|
||||
if (this.devicePlatform == 'Android') {
|
||||
this.jpush.addLocalNotification(0, 'Hello JPush', 'JPush', 1, 5000);
|
||||
if (this.devicePlatform == "Android") {
|
||||
this.jpush.addLocalNotification(0, "Hello JPush", "JPush", 1, 5000);
|
||||
} else {
|
||||
this.jpush.addLocalNotificationForIOS(5, 'Hello JPush', 1, 'localNoti1');
|
||||
this.jpush.addLocalNotificationForIOS(5, "Hello JPush", 1, "localNoti1");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,11 +23,17 @@ export interface AliasOptions {
|
||||
@Injectable()
|
||||
export class JPush extends IonicNativePlugin {
|
||||
|
||||
@Cordova()
|
||||
init(): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS', 'Android']
|
||||
})
|
||||
init(): void { }
|
||||
|
||||
@Cordova()
|
||||
setDebugMode(enable: boolean): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS', 'Android']
|
||||
})
|
||||
setDebugMode(enable: boolean): void { }
|
||||
|
||||
@Cordova()
|
||||
getRegistrationID(): Promise<any> { return; }
|
||||
@@ -91,41 +97,74 @@ export class JPush extends IonicNativePlugin {
|
||||
|
||||
// iOS API - start
|
||||
|
||||
@Cordova()
|
||||
setBadge(badge: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
setBadge(badge: number): void { }
|
||||
|
||||
@Cordova()
|
||||
resetBadge(): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
resetBadge(): void { }
|
||||
|
||||
@Cordova()
|
||||
setApplicationIconBadgeNumber(badge: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
setApplicationIconBadgeNumber(badge: number): void { }
|
||||
|
||||
@Cordova()
|
||||
getApplicationIconBadgeNumber(): Promise<any> { return; }
|
||||
|
||||
@Cordova()
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): void { }
|
||||
|
||||
@Cordova()
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): void { }
|
||||
|
||||
@Cordova()
|
||||
addDismissActions(actions: Array<object>, categoryId: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
addDismissActions(actions: Array<object>, categoryId: string): void { }
|
||||
|
||||
@Cordova()
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): void { }
|
||||
|
||||
@Cordova()
|
||||
setLocation(latitude: number, longitude: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
setLocation(latitude: number, longitude: number): void { }
|
||||
|
||||
@Cordova()
|
||||
startLogPageView(pageName: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
startLogPageView(pageName: string): void { return; }
|
||||
|
||||
@Cordova()
|
||||
stopLogPageView(pageName: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
stopLogPageView(pageName: string): void { return; }
|
||||
|
||||
@Cordova()
|
||||
beginLogPageView(pageName: string, duration: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
beginLogPageView(pageName: string, duration: number): void { return; }
|
||||
|
||||
// iOS API - end
|
||||
|
||||
|
||||
58
ionic/jpush/index.d.ts
vendored
58
ionic/jpush/index.d.ts
vendored
@@ -7,9 +7,37 @@ export interface AliasOptions {
|
||||
sequence: number;
|
||||
alias?: string;
|
||||
}
|
||||
export declare class JPush extends IonicNativePlugin {
|
||||
init(): Promise<any>;
|
||||
setDebugMode(enable: boolean): Promise<any>;
|
||||
/**
|
||||
* @name jpush
|
||||
* @description
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { jpush } from '@ionic-native/jpush';
|
||||
*
|
||||
*
|
||||
* constructor(private jpush: jpush) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.jpush.functionName('Hello', 123)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
export declare class JPushOriginal extends IonicNativePlugin {
|
||||
/**
|
||||
* This function does something
|
||||
* @param arg1 {string} Some param to configure something
|
||||
* @param arg2 {number} Another param to configure something
|
||||
* @return {Promise<any>} Returns a promise that resolves when something happens
|
||||
*/
|
||||
functionName(arg1: string, arg2: number): Promise<any>;
|
||||
init(): void;
|
||||
setDebugMode(enable: boolean): void;
|
||||
getRegistrationID(): Promise<any>;
|
||||
stopPush(): Promise<any>;
|
||||
resumePush(): Promise<any>;
|
||||
@@ -40,18 +68,18 @@ export declare class JPush extends IonicNativePlugin {
|
||||
*/
|
||||
getUserNotificationSettings(): Promise<any>;
|
||||
clearLocalNotifications(): Promise<any>;
|
||||
setBadge(badge: number): Promise<any>;
|
||||
resetBadge(): Promise<any>;
|
||||
setApplicationIconBadgeNumber(badge: number): Promise<any>;
|
||||
setBadge(badge: number): void;
|
||||
resetBadge(): void;
|
||||
setApplicationIconBadgeNumber(badge: number): void;
|
||||
getApplicationIconBadgeNumber(): Promise<any>;
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): Promise<any>;
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): Promise<any>;
|
||||
addDismissActions(actions: Array<object>, categoryId: string): Promise<any>;
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): Promise<any>;
|
||||
setLocation(latitude: number, longitude: number): Promise<any>;
|
||||
startLogPageView(pageName: string): Promise<any>;
|
||||
stopLogPageView(pageName: string): Promise<any>;
|
||||
beginLogPageView(pageName: string, duration: number): Promise<any>;
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): void;
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): void;
|
||||
addDismissActions(actions: Array<object>, categoryId: string): void;
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): void;
|
||||
setLocation(latitude: number, longitude: number): void;
|
||||
startLogPageView(pageName: string): void;
|
||||
stopLogPageView(pageName: string): void;
|
||||
beginLogPageView(pageName: string, duration: number): void;
|
||||
getConnectionState(): Promise<any>;
|
||||
setBasicPushNotificationBuilder(): Promise<any>;
|
||||
setCustomPushNotificationBuilder(): Promise<any>;
|
||||
@@ -65,3 +93,5 @@ export declare class JPush extends IonicNativePlugin {
|
||||
setSilenceTime(startHour: number, startMinute: number, endHour: number, endMinute: number): Promise<any>;
|
||||
setPushTime(weekdays: Array<string>, startHour: number, endHour: number): Promise<any>;
|
||||
}
|
||||
|
||||
export declare const JPush: JPushOriginal;
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
95
ionic/jpush/ngx/index.d.ts
vendored
Normal file
95
ionic/jpush/ngx/index.d.ts
vendored
Normal file
@@ -0,0 +1,95 @@
|
||||
import { IonicNativePlugin } from '@ionic-native/core';
|
||||
export interface TagOptions {
|
||||
sequence: number;
|
||||
tags?: Array<string>;
|
||||
}
|
||||
export interface AliasOptions {
|
||||
sequence: number;
|
||||
alias?: string;
|
||||
}
|
||||
/**
|
||||
* @name jpush
|
||||
* @description
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { jpush } from '@ionic-native/jpush';
|
||||
*
|
||||
*
|
||||
* constructor(private jpush: jpush) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.jpush.functionName('Hello', 123)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
export declare class JPush extends IonicNativePlugin {
|
||||
/**
|
||||
* This function does something
|
||||
* @param arg1 {string} Some param to configure something
|
||||
* @param arg2 {number} Another param to configure something
|
||||
* @return {Promise<any>} Returns a promise that resolves when something happens
|
||||
*/
|
||||
functionName(arg1: string, arg2: number): Promise<any>;
|
||||
init(): void;
|
||||
setDebugMode(enable: boolean): void;
|
||||
getRegistrationID(): Promise<any>;
|
||||
stopPush(): Promise<any>;
|
||||
resumePush(): Promise<any>;
|
||||
isPushStopped(): Promise<any>;
|
||||
setTags(params: TagOptions): Promise<any>;
|
||||
addTags(params: TagOptions): Promise<any>;
|
||||
deleteTags(params: TagOptions): Promise<any>;
|
||||
cleanTags(params: TagOptions): Promise<any>;
|
||||
getAllTags(params: TagOptions): Promise<any>;
|
||||
/**
|
||||
* @param params { sequence: number, tag: string }
|
||||
*/
|
||||
checkTagBindState(params: object): Promise<any>;
|
||||
setAlias(params: AliasOptions): Promise<any>;
|
||||
deleteAlias(params: AliasOptions): Promise<any>;
|
||||
getAlias(params: AliasOptions): Promise<any>;
|
||||
/**
|
||||
* Determinate whether the application notification has been opened.
|
||||
*
|
||||
* iOS: 0: closed; >1: opened.
|
||||
* UIRemoteNotificationTypeNone = 0,
|
||||
* UIRemoteNotificationTypeBadge = 1 << 0,
|
||||
* UIRemoteNotificationTypeSound = 1 << 1,
|
||||
* UIRemoteNotificationTypeAlert = 1 << 2,
|
||||
* UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3
|
||||
*
|
||||
* Android: 0: closed; 1: opened.
|
||||
*/
|
||||
getUserNotificationSettings(): Promise<any>;
|
||||
clearLocalNotifications(): Promise<any>;
|
||||
setBadge(badge: number): void;
|
||||
resetBadge(): void;
|
||||
setApplicationIconBadgeNumber(badge: number): void;
|
||||
getApplicationIconBadgeNumber(): Promise<any>;
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): void;
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): void;
|
||||
addDismissActions(actions: Array<object>, categoryId: string): void;
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): void;
|
||||
setLocation(latitude: number, longitude: number): void;
|
||||
startLogPageView(pageName: string): void;
|
||||
stopLogPageView(pageName: string): void;
|
||||
beginLogPageView(pageName: string, duration: number): void;
|
||||
getConnectionState(): Promise<any>;
|
||||
setBasicPushNotificationBuilder(): Promise<any>;
|
||||
setCustomPushNotificationBuilder(): Promise<any>;
|
||||
clearAllNotification(): Promise<any>;
|
||||
clearNotificationById(id: number): Promise<any>;
|
||||
setLatestNotificationNum(num: number): Promise<any>;
|
||||
addLocalNotification(builderId: number, content: string, title: string, notificationId: number, broadcastTime: number, extras?: string): Promise<any>;
|
||||
removeLocalNotification(notificationId: number): Promise<any>;
|
||||
reportNotificationOpened(msgId: number): Promise<any>;
|
||||
requestPermission(): Promise<any>;
|
||||
setSilenceTime(startHour: number, startMinute: number, endHour: number, endMinute: number): Promise<any>;
|
||||
setPushTime(weekdays: Array<string>, startHour: number, endHour: number): Promise<any>;
|
||||
}
|
||||
95
ionic/jpush/ngx/index.js
Normal file
95
ionic/jpush/ngx/index.js
Normal file
File diff suppressed because one or more lines are too long
1
ionic/jpush/ngx/index.metadata.json
Normal file
1
ionic/jpush/ngx/index.metadata.json
Normal file
@@ -0,0 +1 @@
|
||||
[{"__symbolic":"module","version":4,"metadata":{"TagOptions":{"__symbolic":"interface"},"AliasOptions":{"__symbolic":"interface"},"JPush":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ionic-native/core","name":"IonicNativePlugin","line":67,"character":27},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":64,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"functionName":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"setDebugMode":[{"__symbolic":"method"}],"getRegistrationID":[{"__symbolic":"method"}],"stopPush":[{"__symbolic":"method"}],"resumePush":[{"__symbolic":"method"}],"isPushStopped":[{"__symbolic":"method"}],"setTags":[{"__symbolic":"method"}],"addTags":[{"__symbolic":"method"}],"deleteTags":[{"__symbolic":"method"}],"cleanTags":[{"__symbolic":"method"}],"getAllTags":[{"__symbolic":"method"}],"checkTagBindState":[{"__symbolic":"method"}],"setAlias":[{"__symbolic":"method"}],"deleteAlias":[{"__symbolic":"method"}],"getAlias":[{"__symbolic":"method"}],"getUserNotificationSettings":[{"__symbolic":"method"}],"clearLocalNotifications":[{"__symbolic":"method"}],"setBadge":[{"__symbolic":"method"}],"resetBadge":[{"__symbolic":"method"}],"setApplicationIconBadgeNumber":[{"__symbolic":"method"}],"getApplicationIconBadgeNumber":[{"__symbolic":"method"}],"addLocalNotificationForIOS":[{"__symbolic":"method"}],"deleteLocalNotificationWithIdentifierKeyInIOS":[{"__symbolic":"method"}],"addDismissActions":[{"__symbolic":"method"}],"addNotificationActions":[{"__symbolic":"method"}],"setLocation":[{"__symbolic":"method"}],"startLogPageView":[{"__symbolic":"method"}],"stopLogPageView":[{"__symbolic":"method"}],"beginLogPageView":[{"__symbolic":"method"}],"getConnectionState":[{"__symbolic":"method"}],"setBasicPushNotificationBuilder":[{"__symbolic":"method"}],"setCustomPushNotificationBuilder":[{"__symbolic":"method"}],"clearAllNotification":[{"__symbolic":"method"}],"clearNotificationById":[{"__symbolic":"method"}],"setLatestNotificationNum":[{"__symbolic":"method"}],"addLocalNotification":[{"__symbolic":"method"}],"removeLocalNotification":[{"__symbolic":"method"}],"reportNotificationOpened":[{"__symbolic":"method"}],"requestPermission":[{"__symbolic":"method"}],"setSilenceTime":[{"__symbolic":"method"}],"setPushTime":[{"__symbolic":"method"}]}}}}]
|
||||
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"name": "@jiguang-ionic/jpush",
|
||||
"version": "1.0.2",
|
||||
"version": "2.0.0",
|
||||
"description": "JPush support for ionic-native",
|
||||
"module": "index.js",
|
||||
"typings": "index.d.ts",
|
||||
"author": "hevin",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@ionic-native/core": "^4.2.0",
|
||||
"@ionic-native/core": "^5.1.0",
|
||||
"@angular/core": "*",
|
||||
"rxjs": "^5.0.1"
|
||||
"rxjs": "^6.3.0"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.3.0",
|
||||
"version": "3.8.1",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
@@ -23,7 +23,7 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"cordova-plugin-device": "*",
|
||||
"cordova-plugin-jcore": "*"
|
||||
"cordova-plugin-jcore": ">=1.4.0"
|
||||
},
|
||||
"author": "JiGuang",
|
||||
"license": "MIT",
|
||||
|
||||
253
plugin.xml
253
plugin.xml
@@ -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.3.0">
|
||||
version="3.8.1">
|
||||
|
||||
<name>JPush</name>
|
||||
<description>JPush for cordova plugin</description>
|
||||
@@ -11,6 +11,7 @@
|
||||
<license>MIT License</license>
|
||||
|
||||
<preference name="APP_KEY" />
|
||||
<preference name="CHANNEL" default="developer-default" />
|
||||
|
||||
<engines>
|
||||
<engine name="cordova" version=">=3.0" />
|
||||
@@ -30,7 +31,17 @@
|
||||
<param name="ios-package" value="JPushPlugin" />
|
||||
</feature>
|
||||
</config-file>
|
||||
|
||||
<config-file target="*-Info.plist" parent="UIBackgroundModes">
|
||||
<array>
|
||||
<string>remote-notification</string>
|
||||
</array>
|
||||
</config-file>
|
||||
<config-file target="*-Debug.plist" parent="aps-environment">
|
||||
<string>development</string>
|
||||
</config-file>
|
||||
<config-file target="*-Release.plist" parent="aps-environment">
|
||||
<string>production</string>
|
||||
</config-file>
|
||||
<header-file src="src/ios/Plugins/JPushDefine.h" />
|
||||
<header-file src="src/ios/Plugins/JPushPlugin.h" />
|
||||
<source-file src="src/ios/Plugins/JPushPlugin.m" />
|
||||
@@ -38,7 +49,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.7.a" framework="true" />
|
||||
<source-file src="src/ios/lib/jpush-ios-3.5.2.a" framework="true" />
|
||||
<resource-file src="src/ios/JPushConfig.plist" />
|
||||
|
||||
<framework src="CFNetwork.framework" weak="true" />
|
||||
@@ -53,14 +64,11 @@
|
||||
<framework src="AdSupport.framework" weak="true" />
|
||||
<framework src="UserNotifications.framework" weak="true" />
|
||||
<framework src="libresolv.tbd" weak="true" />
|
||||
<framework src="StoreKit.framework" weak="true" />
|
||||
|
||||
<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">
|
||||
@@ -70,31 +78,56 @@
|
||||
</feature>
|
||||
</config-file>
|
||||
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest">
|
||||
<!-- Required 一些系统要求的权限,如访问网络等-->
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest" mode="merge">
|
||||
<!-- Required 一些系统要求的权限,如访问网络等 -->
|
||||
<permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE"
|
||||
android:protectionLevel="signature" />
|
||||
|
||||
<!-- Required 一些系统要求的权限,如访问网络等-->
|
||||
<uses-permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" />
|
||||
|
||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
|
||||
|
||||
|
||||
<!-- Optional for location -->
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /><!-- Android Q后台定位权限-->
|
||||
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
|
||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.GET_TASKS" />
|
||||
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
|
||||
|
||||
<!--华为角标-->
|
||||
<uses-permission android:name="com.huawei.android.launcher.permission.CHANGE_BADGE"/>
|
||||
</config-file>
|
||||
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest/application">
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest/application" mode="merge">
|
||||
|
||||
|
||||
<!-- Rich push 核心功能 since 2.0.6-->
|
||||
<activity
|
||||
android:name="cn.jpush.android.ui.PopWinActivity"
|
||||
android:theme="@style/MyDialogStyle"
|
||||
android:exported="false">
|
||||
</activity>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<activity android:name="cn.jpush.android.ui.PushActivity"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||
android:configChanges="orientation|keyboardHidden">
|
||||
<activity
|
||||
android:name="cn.jpush.android.ui.PushActivity"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:theme="@android:style/Theme.NoTitleBar"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.ui.PushActivity" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
@@ -102,23 +135,12 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- Rich push 核心功能 since 2.0.6-->
|
||||
<activity android:name="cn.jpush.android.ui.PopWinActivity"
|
||||
android:theme="@style/MyDialogStyle"
|
||||
android:exported="false">
|
||||
</activity>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<service android:name="cn.jpush.android.service.DownloadService"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
</service>
|
||||
|
||||
<!-- Required SDK 核心功能-->
|
||||
<service android:name="cn.jpush.android.service.PushService"
|
||||
android:enabled="true"
|
||||
android:exported="false"
|
||||
android:process=":remote">
|
||||
<!-- 可配置android:process参数将PushService放在其他进程中 -->
|
||||
<service
|
||||
android:name="cn.jpush.android.service.PushService"
|
||||
android:process=":pushcore"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.REGISTER" />
|
||||
<action android:name="cn.jpush.android.intent.REPORT" />
|
||||
@@ -127,13 +149,41 @@
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<!-- since 3.0.9 Required SDK 核心功能-->
|
||||
<provider
|
||||
android:authorities="$PACKAGE_NAME.DataProvider"
|
||||
android:name="cn.jpush.android.service.DataProvider"
|
||||
android:process=":pushcore"
|
||||
android:exported="false"
|
||||
/>
|
||||
|
||||
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
|
||||
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
||||
<service
|
||||
android:name="cn.jpush.android.service.DaemonService"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.DaemonService" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
|
||||
</service>
|
||||
|
||||
<!-- since 3.1.0 Required SDK 核心功能-->
|
||||
<provider
|
||||
android:authorities="$PACKAGE_NAME.DownloadProvider"
|
||||
android:name="cn.jpush.android.service.DownloadProvider"
|
||||
android:exported="true"
|
||||
/>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
<receiver
|
||||
android:name="cn.jpush.android.service.PushReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
<intent-filter android:priority="1000">
|
||||
<!--Required 显示通知栏 -->
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!--Required 显示通知栏 -->
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
@@ -144,78 +194,119 @@
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PACKAGE_ADDED" />
|
||||
<action android:name="android.intent.action.PACKAGE_REMOVED" />
|
||||
|
||||
<data android:scheme="package" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
|
||||
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
|
||||
<service android:name="cn.jpush.android.service.DaemonService"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
<!-- Required SDK核心功能-->
|
||||
<receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>
|
||||
|
||||
<!-- 3.5.0新增,用于定时展示功能 -->
|
||||
<receiver android:name="cn.jpush.android.service.SchedulerReceiver" android:exported="false"/>
|
||||
|
||||
<!--since 3.3.0 接收JPush相关事件-->
|
||||
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.DaemonService" />
|
||||
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||
<category android:name="$PACKAGE_NAME"></category>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!--since 3.3.0 Required SDK核心功能-->
|
||||
<activity
|
||||
android:name="cn.jpush.android.service.JNotifyActivity"
|
||||
android:exported="true"
|
||||
android:taskAffinity="jpush.custom"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.JNotifyActivity" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- since 3.3.0 Required SDK 核心功能-->
|
||||
<!-- 可配置android:process参数将PushService放在其他进程中 -->
|
||||
<!--User defined. For test only 继承自cn.jpush.android.service.JCommonService-->
|
||||
<service android:name="cn.jiguang.cordova.push.PushService"
|
||||
android:process=":pushcore"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jiguang.user.service.action" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
||||
|
||||
<receiver
|
||||
android:name="cn.jiguang.cordova.push.JPushReceiver"
|
||||
android:enabled="true">
|
||||
android:name="cn.jiguang.cordova.push.JPushReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.REGISTRATION" />
|
||||
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
|
||||
<action android:name="cn.jpush.android.intent.CONNECTION" />
|
||||
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<receiver
|
||||
android:name="cn.jpush.android.service.AlarmReceiver"
|
||||
android:exported="false" />
|
||||
<!-- Required . Enable it you can get statistics data with channel -->
|
||||
<meta-data android:name="JPUSH_CHANNEL" android:value="$CHANNEL"/>
|
||||
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" /> <!-- </>值来自开发者平台取得的AppKey-->
|
||||
|
||||
<!-- since 3.0.9 Required SDK 核心功能-->
|
||||
<provider
|
||||
android:authorities="$PACKAGE_NAME.DataProvider"
|
||||
android:name="cn.jpush.android.service.DataProvider"
|
||||
android:exported="true" />
|
||||
|
||||
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Required. Enable it you can get statistics data with channel -->
|
||||
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
|
||||
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
|
||||
</config-file>
|
||||
|
||||
<source-file src="src/android/libs/jpush-android-3.1.1.jar" target-dir="libs" />
|
||||
<lib-file src="src/android/libs/jpush-android-4.1.0.jar" />
|
||||
|
||||
<source-file src="src/android/JPushReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/PushService.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/JPushReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/JPushEventReceiver.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_progressbar.xml"
|
||||
target-dir="res/drawable" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml"
|
||||
target="res/drawable/jpush_richpush_btn_selector.xml" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml"
|
||||
target="res/drawable/jpush_richpush_progressbar.xml" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png"
|
||||
target="res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png"
|
||||
target="res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_ic_action_cancle.png"
|
||||
target="res/drawable-hdpi/jpush_ic_action_cancle.png" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_ic_action_close.png"
|
||||
target="res/drawable-hdpi/jpush_ic_action_close.png" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_ic_action_close2.png"
|
||||
target="res/drawable-hdpi/jpush_ic_action_close2.png" />
|
||||
|
||||
<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_divider.png"
|
||||
target-dir="res/drawable-hdpi" />
|
||||
<resource-file src="src/android/res/layout/jpush_popwin_layout.xml"
|
||||
target="res/layout/jpush_popwin_layout.xml" />
|
||||
<resource-file src="src/android/res/layout/jpush_webview_layout.xml"
|
||||
target="res/layout/jpush_webview_layout.xml" />
|
||||
<resource-file src="src/android/res/layout/push_notification.xml"
|
||||
target="res/layout/push_notification.xml" />
|
||||
<resource-file src="src/android/res/layout/push_notification_large.xml"
|
||||
target="res/layout/push_notification_large.xml" />
|
||||
<resource-file src="src/android/res/layout/push_notification_middle.xml"
|
||||
target="res/layout/push_notification_middle.xml" />
|
||||
<resource-file src="src/android/res/layout/jpush_inapp_banner.xml"
|
||||
target="res/layout/jpush_inapp_banner.xml" />
|
||||
|
||||
<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/test_notification_layout.xml" target-dir="res/layout" />
|
||||
<resource-file src="src/android/res/layout-v21/push_notification.xml"
|
||||
target="res/layout-v21/push_notification.xml" />
|
||||
<resource-file src="src/android/res/layout-v21/push_notification_middle.xml"
|
||||
target="res/layout-v21/push_notification_middle.xml" />
|
||||
<resource-file src="src/android/res/layout-v21/push_notification_large.xml"
|
||||
target="res/layout-v21/push_notification_large.xml" />
|
||||
|
||||
<source-file src="src/android/res/values/jpush_style.xml" target-dir="res/values" />
|
||||
<resource-file src="src/android/res/values/jpush_style.xml"
|
||||
target="res/values/jpush_style.xml" />
|
||||
<resource-file src="src/android/res/values/jpush_string.xml"
|
||||
target="res/values/jpush_string.xml" />
|
||||
|
||||
<resource-file src="src/android/res/values-zh/jpush_string.xml"
|
||||
target="res/values-zh/jpush_string.xml" />
|
||||
</platform>
|
||||
</plugin>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
@@ -9,12 +10,15 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import cn.jpush.android.api.CustomMessage;
|
||||
import cn.jpush.android.api.JPushInterface;
|
||||
import cn.jpush.android.api.JPushMessage;
|
||||
import cn.jpush.android.api.NotificationMessage;
|
||||
import cn.jpush.android.service.JPushMessageReceiver;
|
||||
|
||||
|
||||
public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
|
||||
private static final String TAG = JPushEventReceiver.class.getSimpleName();
|
||||
@@ -22,7 +26,7 @@ public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
@Override
|
||||
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onTagOperatorResult(context, jPushMessage);
|
||||
|
||||
//Log.e(TAG,"onTagOperatorResult:"+jPushMessage);
|
||||
JSONObject resultJson = new JSONObject();
|
||||
|
||||
int sequence = jPushMessage.getSequence();
|
||||
@@ -73,6 +77,7 @@ public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onCheckTagOperatorResult(context, jPushMessage);
|
||||
|
||||
//Log.e(TAG,"onCheckTagOperatorResult:"+jPushMessage);
|
||||
JSONObject resultJson = new JSONObject();
|
||||
|
||||
int sequence = jPushMessage.getSequence();
|
||||
@@ -114,6 +119,7 @@ public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onAliasOperatorResult(context, jPushMessage);
|
||||
|
||||
//Log.e(TAG,"onAliasOperatorResult:"+jPushMessage);
|
||||
JSONObject resultJson = new JSONObject();
|
||||
|
||||
int sequence = jPushMessage.getSequence();
|
||||
@@ -153,4 +159,44 @@ public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
|
||||
JPushPlugin.eventCallbackMap.remove(sequence);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRegister(Context context, String regId) {
|
||||
//Log.e(TAG,"onRegister:"+regId);
|
||||
JPushPlugin.transmitReceiveRegistrationId(regId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(Context context, CustomMessage customMessage) {
|
||||
super.onMessage(context,customMessage);
|
||||
//Log.e(TAG,"onMessage:"+customMessage);
|
||||
// String msg = customMessage.message;//intent.getStringExtra(JPushInterface.EXTRA_MESSAGE);
|
||||
// Map<String, Object> extras = getNotificationExtras(intent);
|
||||
// JPushPlugin.transmitMessageReceive(msg, extras);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
|
||||
super.onNotifyMessageArrived(context, notificationMessage);
|
||||
|
||||
//Log.e(TAG,"onNotifyMessageArrived:"+notificationMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
|
||||
super.onNotifyMessageOpened(context, notificationMessage);
|
||||
//Log.e(TAG,"onNotifyMessageOpened:"+notificationMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onMobileNumberOperatorResult(context, jPushMessage);
|
||||
//Log.e(TAG,"onMobileNumberOperatorResult:"+jPushMessage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMultiActionClicked(Context context, Intent intent) {
|
||||
super.onMultiActionClicked(context, intent);
|
||||
//Log.e(TAG,"onMultiActionClicked:"+intent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.AppOpsManager;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.os.Build;
|
||||
@@ -20,22 +20,17 @@ import org.json.JSONObject;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import cn.jpush.android.api.BasicPushNotificationBuilder;
|
||||
import cn.jpush.android.api.JPushInterface;
|
||||
import cn.jpush.android.api.TagAliasCallback;
|
||||
import cn.jpush.android.data.JPushLocalNotification;
|
||||
import cn.jpush.android.service.JPushMessageReceiver;
|
||||
|
||||
public class JPushPlugin extends CordovaPlugin {
|
||||
|
||||
@@ -64,33 +59,29 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
|
||||
super.initialize(cordova, webView);
|
||||
mContext = cordova.getActivity().getApplicationContext();
|
||||
|
||||
|
||||
JPushInterface.init(mContext);
|
||||
|
||||
cordovaActivity = cordova.getActivity();
|
||||
|
||||
//如果同时缓存了打开事件 openNotificationAlert 和 消息事件 notificationAlert,只向 UI 发打开事件。
|
||||
//这样做是为了和 iOS 统一。
|
||||
// 如果同时缓存了打开事件 openNotificationAlert 和 消息事件 notificationAlert,只向 UI 发打开事件。
|
||||
// 这样做是为了和 iOS 统一。
|
||||
if (openNotificationAlert != null) {
|
||||
notificationAlert = null;
|
||||
transmitNotificationOpen(openNotificationTitle, openNotificationAlert,
|
||||
openNotificationExtras);
|
||||
transmitNotificationOpen(openNotificationTitle, openNotificationAlert, openNotificationExtras);
|
||||
}
|
||||
if (notificationAlert != null) {
|
||||
transmitNotificationReceive(notificationTitle, notificationAlert,
|
||||
notificationExtras);
|
||||
transmitNotificationReceive(notificationTitle, notificationAlert, notificationExtras);
|
||||
}
|
||||
}
|
||||
|
||||
public void onResume(boolean multitasking) {
|
||||
if (openNotificationAlert != null) {
|
||||
notificationAlert = null;
|
||||
transmitNotificationOpen(openNotificationTitle, openNotificationAlert,
|
||||
openNotificationExtras);
|
||||
transmitNotificationOpen(openNotificationTitle, openNotificationAlert, openNotificationExtras);
|
||||
}
|
||||
if (notificationAlert != null) {
|
||||
transmitNotificationReceive(notificationTitle, notificationAlert,
|
||||
notificationExtras);
|
||||
transmitNotificationReceive(notificationTitle, notificationAlert, notificationExtras);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -238,14 +229,13 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(final String action, final JSONArray data,
|
||||
final CallbackContext callbackContext) throws JSONException {
|
||||
public boolean execute(final String action, final JSONArray data, final CallbackContext callbackContext)
|
||||
throws JSONException {
|
||||
cordova.getThreadPool().execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Method method = JPushPlugin.class.getDeclaredMethod(action,
|
||||
JSONArray.class, CallbackContext.class);
|
||||
Method method = JPushPlugin.class.getDeclaredMethod(action, JSONArray.class, CallbackContext.class);
|
||||
method.invoke(JPushPlugin.this, data, callbackContext);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, e.toString());
|
||||
@@ -308,8 +298,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
callbackContext.error("error reading num json");
|
||||
}
|
||||
if (num != -1) {
|
||||
JPushInterface.setLatestNotificationNumber(
|
||||
mContext, num);
|
||||
JPushInterface.setLatestNotificationNumber(mContext, num);
|
||||
} else {
|
||||
callbackContext.error("error num");
|
||||
}
|
||||
@@ -529,15 +518,18 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
|
||||
void getConnectionState(JSONArray data, CallbackContext callback) {
|
||||
boolean isConnected = JPushInterface.getConnectionState(cordovaActivity.getApplicationContext());
|
||||
callback.success(String.valueOf(isConnected));
|
||||
if (isConnected) {
|
||||
callback.success(1);
|
||||
} else {
|
||||
callback.success(0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义通知行为,声音、震动、呼吸灯等。
|
||||
* 自定义通知行为,声音、震动、呼吸灯等。
|
||||
*/
|
||||
void setBasicPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) {
|
||||
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(
|
||||
this.cordova.getActivity());
|
||||
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(this.cordova.getActivity());
|
||||
builder.developerArg0 = "Basic builder 1";
|
||||
JPushInterface.setPushNotificationBuilder(1, builder);
|
||||
JSONObject obj = new JSONObject();
|
||||
@@ -549,14 +541,12 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义推送通知栏样式,需要自己实现具体代码。
|
||||
* http://docs.jiguang.cn/client/android_tutorials/#_11
|
||||
* 自定义推送通知栏样式,需要自己实现具体代码。 http://docs.jiguang.cn/client/android_tutorials/#_11
|
||||
*/
|
||||
void setCustomPushNotificationBuilder(JSONArray data,
|
||||
CallbackContext callbackContext) {
|
||||
void setCustomPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) {
|
||||
// CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(
|
||||
// this.cordova.getActivity(), R.layout.test_notification_layout,
|
||||
// R.id.icon, R.id.title, R.id.text);
|
||||
// this.cordova.getActivity(), R.layout.test_notification_layout,
|
||||
// R.id.icon, R.id.title, R.id.text);
|
||||
// JPushInterface.setPushNotificationBuilder(2, builder);
|
||||
// JPushInterface.setDefaultPushNotificationBuilder(builder);
|
||||
}
|
||||
@@ -614,8 +604,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置通知静默时间
|
||||
* http://docs.jpush.io/client/android_api/#api_5
|
||||
* 设置通知静默时间 http://docs.jpush.io/client/android_api/#api_5
|
||||
*/
|
||||
void setSilenceTime(JSONArray data, CallbackContext callbackContext) {
|
||||
try {
|
||||
@@ -631,14 +620,28 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
callbackContext.error("结束时间数值错误");
|
||||
return;
|
||||
}
|
||||
JPushInterface.setSilenceTime(this.cordova.getActivity(), startHour, startMinute,
|
||||
endHour, endMinute);
|
||||
JPushInterface.setSilenceTime(this.cordova.getActivity(), startHour, startMinute, endHour, endMinute);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("error: reading json data.");
|
||||
}
|
||||
}
|
||||
|
||||
void setGeofenceInterval(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
long interval = data.getLong(0);
|
||||
JPushInterface.setGeofenceInterval(this.cordova.getActivity(), interval);
|
||||
}
|
||||
|
||||
void setMaxGeofenceNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
int maxNumber = data.getInt(0);
|
||||
JPushInterface.setMaxGeofenceNumber(mContext, maxNumber);
|
||||
}
|
||||
|
||||
void setBadgeNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
int badgeNumb = data.getInt(0);
|
||||
JPushInterface.setBadgeNumber(mContext, badgeNumb);
|
||||
}
|
||||
|
||||
private boolean isValidHour(int hour) {
|
||||
return !(hour < 0 || hour > 23);
|
||||
}
|
||||
@@ -666,8 +669,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
data.put("resultCode", code);
|
||||
data.put("tags", tags);
|
||||
data.put("alias", alias);
|
||||
final String jsEvent = String.format(
|
||||
"cordova.fireDocumentEvent('jpush.setTagsWithAlias',%s)",
|
||||
final String jsEvent = String.format("cordova.fireDocumentEvent('jpush.setTagsWithAlias',%s)",
|
||||
data.toString());
|
||||
cordova.getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
@@ -681,35 +683,43 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
};
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
private boolean hasPermission(String appOpsServiceId) {
|
||||
|
||||
Context context = cordova.getActivity().getApplicationContext();
|
||||
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
||||
ApplicationInfo appInfo = context.getApplicationInfo();
|
||||
if (Build.VERSION.SDK_INT >= 24) {
|
||||
NotificationManager mNotificationManager = (NotificationManager) context
|
||||
.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
return mNotificationManager.areNotificationsEnabled();
|
||||
} else {
|
||||
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
||||
ApplicationInfo appInfo = context.getApplicationInfo();
|
||||
|
||||
String pkg = context.getPackageName();
|
||||
int uid = appInfo.uid;
|
||||
Class appOpsClazz;
|
||||
String pkg = context.getPackageName();
|
||||
int uid = appInfo.uid;
|
||||
Class appOpsClazz;
|
||||
|
||||
try {
|
||||
appOpsClazz = Class.forName(AppOpsManager.class.getName());
|
||||
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow",
|
||||
Integer.TYPE, Integer.TYPE, String.class);
|
||||
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
|
||||
int value = opValue.getInt(Integer.class);
|
||||
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);
|
||||
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchFieldException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
try {
|
||||
appOpsClazz = Class.forName(AppOpsManager.class.getName());
|
||||
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow", Integer.TYPE, Integer.TYPE,
|
||||
String.class);
|
||||
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
|
||||
int value = opValue.getInt(Integer.class);
|
||||
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);
|
||||
return Integer.parseInt(result.toString()) == AppOpsManager.MODE_ALLOWED;
|
||||
} catch (InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchFieldException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,13 +13,8 @@ import cn.jpush.android.api.JPushInterface;
|
||||
|
||||
public class JPushReceiver extends BroadcastReceiver {
|
||||
|
||||
private static final List<String> IGNORED_EXTRAS_KEYS =
|
||||
Arrays.asList(
|
||||
"cn.jpush.android.TITLE",
|
||||
"cn.jpush.android.MESSAGE",
|
||||
"cn.jpush.android.APPKEY",
|
||||
"cn.jpush.android.NOTIFICATION_CONTENT_TITLE"
|
||||
);
|
||||
private static final List<String> IGNORED_EXTRAS_KEYS = Arrays.asList("cn.jpush.android.TITLE",
|
||||
"cn.jpush.android.MESSAGE", "cn.jpush.android.APPKEY", "cn.jpush.android.NOTIFICATION_CONTENT_TITLE","key_show_entity","platform");
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
@@ -54,8 +49,7 @@ public class JPushReceiver extends BroadcastReceiver {
|
||||
|
||||
JPushPlugin.transmitNotificationOpen(title, alert, extras);
|
||||
|
||||
Intent launch = context.getPackageManager().getLaunchIntentForPackage(
|
||||
context.getPackageName());
|
||||
Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
|
||||
if (launch != null) {
|
||||
launch.addCategory(Intent.CATEGORY_LAUNCHER);
|
||||
launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
|
||||
|
||||
6
src/android/PushService.java
Normal file
6
src/android/PushService.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import cn.jpush.android.service.JCommonService;
|
||||
|
||||
public class PushService extends JCommonService {
|
||||
}
|
||||
Binary file not shown.
BIN
src/android/libs/jpush-android-4.1.0.jar
Normal file
BIN
src/android/libs/jpush-android-4.1.0.jar
Normal file
Binary file not shown.
BIN
src/android/res/drawable-hdpi/jpush_ic_action_cancle.png
Normal file
BIN
src/android/res/drawable-hdpi/jpush_ic_action_cancle.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 551 B |
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close.png
Normal file
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 591 B |
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close2.png
Normal file
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 759 B |
296
src/android/res/layout-v21/push_notification.xml
Normal file
296
src/android/res/layout-v21/push_notification.xml
Normal file
@@ -0,0 +1,296 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_root_view"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/v21"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_version_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_default"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:scaleType="centerInside" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textSize="12sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:textStyle="bold"
|
||||
android:text="·"
|
||||
android:textSize="16sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Time"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/push_notification_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_height="0dp"/>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_above="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:visibility="gone"
|
||||
android:scaleType="centerCrop" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_main_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/push_notification_banner_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_below="@id/push_notification_layout_lefttop">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_big_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/push_notification_main_layout"
|
||||
android:layout_alignBottom="@+id/push_notification_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/push_notification_layout_time"
|
||||
android:gravity="center_vertical"
|
||||
android:weightSum="1"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_style_1_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Time"
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:gravity="right"
|
||||
android:textSize="12sp" />
|
||||
<TextView android:id="@+id/push_notification_null"
|
||||
android:layout_width="24dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="20dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_style_1_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"
|
||||
android:layout_below="@id/push_notification_style_1_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_banner_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_header_neg_fb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:visibility="gone">
|
||||
<ImageView android:id="@+id/push_notification_header_expand"
|
||||
android:layout_marginRight="2dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#08000000"
|
||||
android:src="@drawable/jpush_ic_action_close"
|
||||
android:visibility="visible"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_fb_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_below="@id/push_notification_header_expand"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="invisible"
|
||||
android:gravity="center">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="不感兴趣"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="重复收到"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容低质"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容不宜"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
298
src/android/res/layout-v21/push_notification_large.xml
Normal file
298
src/android/res/layout-v21/push_notification_large.xml
Normal file
@@ -0,0 +1,298 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_root_view"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="256dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/v21"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_version_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_default"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:scaleType="centerInside" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textSize="12sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:textStyle="bold"
|
||||
android:text="·"
|
||||
android:textSize="16sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Time"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/push_notification_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_height="0dp"/>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="150dp"
|
||||
android:layout_above="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:visibility="visible"
|
||||
android:scaleType="centerCrop" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_main_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/push_notification_banner_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_below="@id/push_notification_layout_lefttop">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_big_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/push_notification_main_layout"
|
||||
android:layout_alignBottom="@+id/push_notification_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/push_notification_layout_time"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_style_1_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Time"
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="4dp"
|
||||
android:gravity="right"
|
||||
android:textSize="12sp" />
|
||||
<TextView android:id="@+id/push_notification_null"
|
||||
android:layout_width="24dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="20dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_style_1_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="150dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"
|
||||
android:layout_below="@id/push_notification_style_1_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_banner_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_header_neg_fb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:visibility="gone">
|
||||
<ImageView android:id="@+id/push_notification_header_expand"
|
||||
android:layout_marginRight="2dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#08000000"
|
||||
android:src="@drawable/jpush_ic_action_close"
|
||||
android:visibility="visible"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_fb_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_below="@id/push_notification_header_expand"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="invisible"
|
||||
android:gravity="center">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="不感兴趣"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="重复收到"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容低质"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容不宜"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
298
src/android/res/layout-v21/push_notification_middle.xml
Normal file
298
src/android/res/layout-v21/push_notification_middle.xml
Normal file
@@ -0,0 +1,298 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_root_view"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="202dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/v21"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_version_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_default"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:scaleType="centerInside" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textSize="12sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:textStyle="bold"
|
||||
android:text="·"
|
||||
android:textSize="16sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Time"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/push_notification_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_height="0dp"/>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_above="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:visibility="visible"
|
||||
android:scaleType="centerCrop" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_main_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/push_notification_banner_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_below="@id/push_notification_layout_lefttop">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_big_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/push_notification_main_layout"
|
||||
android:layout_alignBottom="@+id/push_notification_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/push_notification_layout_time"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_style_1_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Time"
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="4dp"
|
||||
android:gravity="right"
|
||||
android:textSize="12sp" />
|
||||
<TextView android:id="@+id/push_notification_null"
|
||||
android:layout_width="24dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="20dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_style_1_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"
|
||||
android:layout_below="@id/push_notification_style_1_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_banner_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_header_neg_fb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:visibility="gone">
|
||||
<ImageView android:id="@+id/push_notification_header_expand"
|
||||
android:layout_marginRight="2dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#08000000"
|
||||
android:src="@drawable/jpush_ic_action_close"
|
||||
android:visibility="visible"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_fb_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_below="@id/push_notification_header_expand"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="invisible"
|
||||
android:gravity="center">
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="不感兴趣"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="重复收到"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容低质"/>
|
||||
<TextView
|
||||
style="@android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_fb_content_no_like4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容不宜"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
85
src/android/res/layout/jpush_inapp_banner.xml
Normal file
85
src/android/res/layout/jpush_inapp_banner.xml
Normal file
@@ -0,0 +1,85 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/banner_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipChildren="false"
|
||||
android:clipToPadding="false">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:weightSum="1.0">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/banner_content_root"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.0"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:orientation="vertical"
|
||||
android:visibility="visible">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/banner_image_only"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:scaleType="fitXY"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/banner_image"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_width="64dp"
|
||||
android:layout_height="64dp"
|
||||
android:layout_centerVertical="true"
|
||||
android:padding="5dp"
|
||||
android:layout_marginLeft="3dp"
|
||||
android:visibility="visible" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/banner_text_container"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="74dp"
|
||||
android:layout_toRightOf="@id/banner_image"
|
||||
android:layout_marginLeft="3dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="vertical"
|
||||
android:layout_centerInParent="true">
|
||||
<TextView
|
||||
android:id="@+id/banner_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@+id/banner_image"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:layout_marginRight="4dp"
|
||||
android:text=""
|
||||
android:textSize="14sp"
|
||||
android:visibility="visible" />
|
||||
<TextView
|
||||
android:id="@+id/banner_body"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/banner_title"
|
||||
android:layout_toRightOf="@+id/banner_image"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:layout_marginRight="4dp"
|
||||
android:text=""
|
||||
android:textSize="14sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
297
src/android/res/layout/push_notification.xml
Normal file
297
src/android/res/layout/push_notification.xml
Normal file
@@ -0,0 +1,297 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_root_view"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/v"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_version_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_default"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:scaleType="centerInside" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textSize="12sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:textStyle="bold"
|
||||
android:text="·"
|
||||
android:textSize="16sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/push_notification_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_height="0dp"/>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_above="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:visibility="gone"
|
||||
android:scaleType="centerCrop" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_main_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/push_notification_banner_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_below="@id/push_notification_layout_lefttop">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_big_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/push_notification_main_layout"
|
||||
android:layout_alignBottom="@+id/push_notification_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/push_notification_layout_time"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_style_1_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="4dp"
|
||||
android:gravity="right"
|
||||
android:textSize="12sp" />
|
||||
<TextView android:id="@+id/push_notification_null"
|
||||
android:layout_width="24dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="20dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_style_1_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"
|
||||
android:layout_below="@id/push_notification_style_1_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_banner_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_header_neg_fb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:visibility="gone">
|
||||
<ImageView android:id="@+id/push_notification_header_expand"
|
||||
android:layout_marginRight="2dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#08000000"
|
||||
android:src="@drawable/jpush_ic_action_close"
|
||||
android:visibility="visible"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_fb_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_below="@id/push_notification_header_expand"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:gravity="center">
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="不感兴趣"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="重复收到"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容低质"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容不宜"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
297
src/android/res/layout/push_notification_large.xml
Normal file
297
src/android/res/layout/push_notification_large.xml
Normal file
@@ -0,0 +1,297 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_root_view"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="256dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/v"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_version_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_default"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:scaleType="centerInside" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textSize="12sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:textStyle="bold"
|
||||
android:text="·"
|
||||
android:textSize="16sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/push_notification_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_height="0dp"/>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="150dp"
|
||||
android:layout_above="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:visibility="gone"
|
||||
android:scaleType="centerCrop" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_main_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/push_notification_banner_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_below="@id/push_notification_layout_lefttop">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_big_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/push_notification_main_layout"
|
||||
android:layout_alignBottom="@+id/push_notification_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/push_notification_layout_time"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_style_1_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="4dp"
|
||||
android:gravity="right"
|
||||
android:textSize="12sp" />
|
||||
<TextView android:id="@+id/push_notification_null"
|
||||
android:layout_width="24dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="20dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_style_1_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="150dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"
|
||||
android:layout_below="@id/push_notification_style_1_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_banner_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_header_neg_fb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:visibility="gone">
|
||||
<ImageView android:id="@+id/push_notification_header_expand"
|
||||
android:layout_marginRight="2dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#08000000"
|
||||
android:src="@drawable/jpush_ic_action_close"
|
||||
android:visibility="visible"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_fb_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_below="@id/push_notification_header_expand"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:gravity="center">
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="不感兴趣"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="重复收到"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容低质"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容不宜"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
297
src/android/res/layout/push_notification_middle.xml
Normal file
297
src/android/res/layout/push_notification_middle.xml
Normal file
@@ -0,0 +1,297 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_root_view"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="202dp">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/v"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_version_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_default"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:scaleType="centerInside" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textSize="12sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:textStyle="bold"
|
||||
android:text="·"
|
||||
android:textSize="16sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/push_notification_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_height="0dp"/>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_above="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:visibility="gone"
|
||||
android:scaleType="centerCrop" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_main_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/push_notification_banner_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_below="@id/push_notification_layout_lefttop">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_big_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/push_notification_main_layout"
|
||||
android:layout_alignBottom="@+id/push_notification_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/push_notification_layout_time"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_style_1_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="4dp"
|
||||
android:gravity="right"
|
||||
android:textSize="12sp" />
|
||||
<TextView android:id="@+id/push_notification_null"
|
||||
android:layout_width="24dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="20dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_style_1_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"
|
||||
android:layout_below="@id/push_notification_style_1_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_banner_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_header_neg_fb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:visibility="gone">
|
||||
<ImageView android:id="@+id/push_notification_header_expand"
|
||||
android:layout_marginRight="2dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#08000000"
|
||||
android:src="@drawable/jpush_ic_action_close"
|
||||
android:visibility="visible"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_fb_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_below="@id/push_notification_header_expand"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:gravity="center">
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="不感兴趣"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="重复收到"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容低质"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容不宜"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
@@ -1,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal" >
|
||||
<ImageView android:id="@+id/icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<TextView android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
<TextView android:id="@+id/text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
7
src/android/res/values-zh/jpush_string.xml
Normal file
7
src/android/res/values-zh/jpush_string.xml
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="jg_channel_name_p_min">不重要</string>
|
||||
<string name="jg_channel_name_p_low">不重要</string>
|
||||
<string name="jg_channel_name_p_default">普通</string>
|
||||
<string name="jg_channel_name_p_high">重要</string>
|
||||
</resources>
|
||||
8
src/android/res/values/jpush_string.xml
Normal file
8
src/android/res/values/jpush_string.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="jg_channel_name_p_min">LOW</string>
|
||||
<string name="jg_channel_name_p_low">LOW</string>
|
||||
<string name="jg_channel_name_p_default">NORMAL</string>
|
||||
<string name="jg_channel_name_p_high">HIGH</string>
|
||||
|
||||
</resources>
|
||||
@@ -40,7 +40,8 @@ NSDictionary *_launchOptions;
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_receiveRegistrationId jsString:[event toJsonString]];
|
||||
}];
|
||||
|
||||
if (notification) {
|
||||
if (notification != nil &&
|
||||
[[UIDevice currentDevice].systemVersion floatValue] < 10.0) {// iOS 10 以后通过 openNotification 这个回调触发事件。
|
||||
if (notification.userInfo) {
|
||||
|
||||
if ([notification.userInfo valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) {
|
||||
@@ -50,27 +51,27 @@ NSDictionary *_launchOptions;
|
||||
|
||||
if ([notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey]) {
|
||||
UILocalNotification *localNotification = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
|
||||
|
||||
NSDictionary* localNotificationEvent = @{@"content":localNotification.alertBody,
|
||||
@"badge": @(localNotification.applicationIconBadgeNumber),
|
||||
@"extras":localNotification.userInfo,
|
||||
};
|
||||
NSMutableDictionary *localNotificationEvent = @{}.mutableCopy;
|
||||
localNotificationEvent[@"content"] = localNotification.alertBody;
|
||||
localNotificationEvent[@"badge"] = @(localNotification.applicationIconBadgeNumber);
|
||||
localNotificationEvent[@"extras"] = localNotification.userInfo;
|
||||
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[localNotificationEvent toJsonString]];
|
||||
}
|
||||
}
|
||||
|
||||
[JPUSHService setDebugMode];
|
||||
|
||||
NSString *plistPath = [[NSBundle mainBundle] pathForResource:JPushConfig_FileName ofType:@"plist"];
|
||||
NSMutableDictionary *plistData = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
|
||||
NSNumber *delay = [plistData valueForKey:JPushConfig_Delay];
|
||||
|
||||
_launchOptions = notification.userInfo;
|
||||
|
||||
if (![delay boolValue]) {
|
||||
[self startJPushSDK];
|
||||
}
|
||||
}
|
||||
|
||||
[JPUSHService setDebugMode];
|
||||
|
||||
NSString *plistPath = [[NSBundle mainBundle] pathForResource:JPushConfig_FileName ofType:@"plist"];
|
||||
NSMutableDictionary *plistData = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
|
||||
NSNumber *delay = [plistData valueForKey:JPushConfig_Delay];
|
||||
|
||||
_launchOptions = notification.userInfo;
|
||||
|
||||
if (![delay boolValue]) {
|
||||
[self startJPushSDK];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)startJPushSDK{
|
||||
@@ -136,17 +137,12 @@ NSDictionary *_launchOptions;
|
||||
[JPUSHService handleRemoteNotification:userInfo];
|
||||
NSString *eventName;
|
||||
switch ([UIApplication sharedApplication].applicationState) {
|
||||
case UIApplicationStateInactive:
|
||||
eventName = JPushDocumentEvent_OpenNotification;
|
||||
break;
|
||||
case UIApplicationStateActive:
|
||||
eventName = JPushDocumentEvent_ReceiveNotification;
|
||||
break;
|
||||
case UIApplicationStateBackground:
|
||||
eventName = JPushDocumentEvent_BackgroundNotification;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case UIApplicationStateBackground:
|
||||
eventName = JPushDocumentEvent_BackgroundNotification;
|
||||
break;
|
||||
default:
|
||||
eventName = JPushDocumentEvent_ReceiveNotification;
|
||||
break;
|
||||
}
|
||||
|
||||
[JPushPlugin fireDocumentEvent:eventName jsString:[[self jpushFormatAPNSDic:userInfo] toJsonString]];
|
||||
@@ -156,35 +152,39 @@ NSDictionary *_launchOptions;
|
||||
}
|
||||
|
||||
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler{
|
||||
NSMutableDictionary *userInfo = @[].mutableCopy;
|
||||
NSMutableDictionary *userInfo = @{}.mutableCopy;
|
||||
|
||||
if ([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
|
||||
userInfo = [self jpushFormatAPNSDic:notification.request.content.userInfo];
|
||||
} else {
|
||||
UNNotificationContent *content = notification.request.content;
|
||||
userInfo = [NSMutableDictionary dictionaryWithDictionary:@{@"content": content.body,
|
||||
@"badge": content.badge,
|
||||
@"extras": content.userInfo
|
||||
}];
|
||||
userInfo[@"content"] = content.body;
|
||||
userInfo[@"badge"] = content.badge;
|
||||
userInfo[@"extras"] = content.userInfo;
|
||||
userInfo[@"identifier"] = notification.request.identifier;
|
||||
}
|
||||
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
||||
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
|
||||
|
||||
if ([userInfo[@"aps"][@"content-available"] isEqualToNumber:@(1)]) {// content-available 当用户开启后台推送是,防止触发两次事件
|
||||
return;
|
||||
}
|
||||
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
||||
|
||||
}
|
||||
|
||||
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
|
||||
UNNotification *notification = response.notification;
|
||||
NSMutableDictionary *userInfo = nil;
|
||||
NSMutableDictionary *userInfo = @{}.mutableCopy;
|
||||
|
||||
if ([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
|
||||
userInfo = [self jpushFormatAPNSDic:notification.request.content.userInfo];
|
||||
} else {
|
||||
UNNotificationContent *content = notification.request.content;
|
||||
userInfo = [NSMutableDictionary dictionaryWithDictionary:@{@"content": content.body,
|
||||
@"badge": content.badge,
|
||||
@"extras": content.userInfo
|
||||
}];
|
||||
userInfo[@"content"] = content.body;
|
||||
userInfo[@"badge"] = content.badge;
|
||||
userInfo[@"extras"] = content.userInfo;
|
||||
userInfo[@"identifier"] = notification.request.identifier;
|
||||
}
|
||||
|
||||
@@ -193,12 +193,12 @@ NSDictionary *_launchOptions;
|
||||
}
|
||||
|
||||
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
|
||||
NSDictionary* localNotificationEvent = @{@"content":notification.alertBody,
|
||||
@"badge": @(notification.applicationIconBadgeNumber),
|
||||
@"extras":notification.userInfo,
|
||||
};
|
||||
NSMutableDictionary *localNotificationEvent = @{}.mutableCopy;
|
||||
localNotificationEvent[@"content"] = notification.alertBody;
|
||||
localNotificationEvent[@"badge"] = @(notification.applicationIconBadgeNumber);
|
||||
localNotificationEvent[@"extras"] = notification.userInfo;
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:JPushDocumentEvent_ReceiveLocalNotification object:localNotificationEvent];
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:JPushDocumentEvent_ReceiveLocalNotification object:localNotificationEvent];
|
||||
}
|
||||
|
||||
- (void)applicationWillEnterForeground:(UIApplication *)application {
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
#else
|
||||
|
||||
- (CDVPlugin*)initWithWebView:(UIWebView*)theWebView{
|
||||
- (CDVPlugin*)initWithWebView:(WKWebView*)theWebView{
|
||||
NSLog(@"### initWithWebView ");
|
||||
if (self=[super initWithWebView:theWebView]) {
|
||||
}
|
||||
@@ -395,13 +395,14 @@
|
||||
}
|
||||
|
||||
JPushNotificationTrigger *trigger = [[JPushNotificationTrigger alloc] init];
|
||||
// 由于 不支持 0 作为传入参数,在传入参数基础上添加一个极小的时间于 android 端保持一致。
|
||||
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {
|
||||
if (delay) {
|
||||
trigger.timeInterval = [delay doubleValue];
|
||||
trigger.timeInterval = [delay doubleValue] + 0.000001;
|
||||
}
|
||||
} else {
|
||||
if (delay) {
|
||||
trigger.fireDate = [NSDate dateWithTimeIntervalSinceNow:[[command argumentAtIndex:0] intValue]];
|
||||
trigger.fireDate = [NSDate dateWithTimeIntervalSinceNow:[[command argumentAtIndex:0] doubleValue] + 0.001];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
|
||||
*/
|
||||
|
||||
#define JPUSH_VERSION_NUMBER 3.0.7
|
||||
#define JPUSH_VERSION_NUMBER 3.5.2
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@@ -21,10 +21,13 @@
|
||||
@class UNNotificationRequest;
|
||||
@class UNNotification;
|
||||
@protocol JPUSHRegisterDelegate;
|
||||
@protocol JPUSHGeofenceDelegate;
|
||||
@protocol JPushInMessageDelegate;
|
||||
|
||||
typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq);
|
||||
typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
|
||||
typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
|
||||
typedef void (^JPUSHInMssageCompletion)(NSInteger iResCode);
|
||||
|
||||
extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
|
||||
extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
|
||||
@@ -40,6 +43,29 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
JPAuthorizationOptionBadge = (1 << 0), // the application may badge its icon upon a notification being received
|
||||
JPAuthorizationOptionSound = (1 << 1), // the application may play a sound upon a notification being received
|
||||
JPAuthorizationOptionAlert = (1 << 2), // the application may display an alert upon a notification being received
|
||||
JPAuthorizationOptionCarPlay = (1 << 3), // The ability to display notifications in a CarPlay environment.
|
||||
JPAuthorizationOptionCriticalAlert NS_AVAILABLE_IOS(12.0) = (1 << 4) , //The ability to play sounds for critical alerts.
|
||||
JPAuthorizationOptionProvidesAppNotificationSettings NS_AVAILABLE_IOS(12.0) = (1 << 5) , //An option indicating the system should display a button for in-app notification settings.
|
||||
JPAuthorizationOptionProvisional NS_AVAILABLE_IOS(12.0) = (1 << 6) , //The ability to post noninterrupting notifications provisionally to the Notification Center.
|
||||
JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods.
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) {
|
||||
JPAuthorizationNotDetermined = 0, // The user has not yet made a choice regarding whether the application may post user notifications.
|
||||
JPAuthorizationStatusDenied, // The application is not authorized to post user notifications.
|
||||
JPAuthorizationStatusAuthorized, // The application is authorized to post user notifications.
|
||||
JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0), // The application is authorized to post non-interruptive user notifications.
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSInteger,JPushInMessageContentType){
|
||||
JPushAdContentType = 1, //广告类型的inMessage
|
||||
JPushNotiContentType = 2, //通知类型的inMessage
|
||||
};
|
||||
|
||||
typedef NS_OPTIONS(NSUInteger, JPInMessageType) {
|
||||
JPInMessageTypeBanner = (1 << 0), // 横幅
|
||||
JPInMessageTypeModal = (1 << 1), // 模态
|
||||
JPInMessageTypeFloat = (1 << 2), // 小浮窗
|
||||
};
|
||||
|
||||
/*!
|
||||
@@ -72,6 +98,17 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
|
||||
@end
|
||||
|
||||
/*!
|
||||
* 推送通知声音实体类
|
||||
* iOS10以上有效
|
||||
*/
|
||||
@interface JPushNotificationSound : NSObject <NSCopying, NSCoding>
|
||||
@property (nonatomic, copy) NSString *soundName; //普通通知铃声
|
||||
@property (nonatomic, copy) NSString *criticalSoundName NS_AVAILABLE_IOS(12.0); //警告通知铃声
|
||||
@property (nonatomic, assign) float criticalSoundVolume NS_AVAILABLE_IOS(12.0); //警告通知铃声音量,有效值在0~1之间,默认为1
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
* 推送内容实体类
|
||||
*/
|
||||
@@ -85,12 +122,17 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@property (nonatomic, copy) NSString *categoryIdentifier; // 行为分类标识
|
||||
@property (nonatomic, copy) NSDictionary *userInfo; // 本地推送时可以设置userInfo来增加附加信息,远程推送时设置的payload推送内容作为此userInfo
|
||||
@property (nonatomic, copy) NSString *sound; // 声音名称,不设置则为默认声音
|
||||
@property (nonatomic, copy) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0); //推送声音实体
|
||||
@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型
|
||||
@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组
|
||||
@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到
|
||||
@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。
|
||||
@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。
|
||||
@property (nonatomic, copy) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification.
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
* 推送触发方式实体类
|
||||
* 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数
|
||||
@@ -127,12 +169,6 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
/// @name Setup 启动相关
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 启动SDK
|
||||
*
|
||||
* @discussion 这是旧版本的启动方法, 依赖于 PushConfig.plist 文件. 建议不要使用, 已经过期.
|
||||
*/
|
||||
+ (void)setupWithOption:(NSDictionary *)launchingOption __attribute__((deprecated("JPush 2.1.0 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 启动SDK
|
||||
@@ -142,7 +178,6 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* @param channel 发布渠道. 可选.
|
||||
* @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
|
||||
* App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致.
|
||||
* @param advertisingIdentifier 广告标识符(IDFA) 如果不需要使用IDFA,传nil.
|
||||
*
|
||||
* @discussion 提供SDK启动必须的参数, 来启动 SDK.
|
||||
* 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
|
||||
@@ -152,7 +187,19 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
channel:(NSString *)channel
|
||||
apsForProduction:(BOOL)isProduction;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 启动SDK
|
||||
*
|
||||
* @param launchingOption 启动参数.
|
||||
* @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识.
|
||||
* @param channel 发布渠道. 可选.
|
||||
* @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
|
||||
* App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致.
|
||||
* @param advertisingId 广告标识符(IDFA) 如果不需要使用IDFA,传nil.
|
||||
*
|
||||
* @discussion 提供SDK启动必须的参数, 来启动 SDK.
|
||||
* 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
|
||||
*/
|
||||
+ (void)setupWithOption:(NSDictionary *)launchingOption
|
||||
appKey:(NSString *)appKey
|
||||
channel:(NSString *)channel
|
||||
@@ -185,12 +232,38 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
|
||||
+ (void)registerDeviceToken:(NSData *)deviceToken;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 处理收到的 APNs 消息
|
||||
*/
|
||||
+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
|
||||
|
||||
/*!
|
||||
* @abstract 向极光服务器提交Token
|
||||
*
|
||||
* @param voipToken 推送使用的Voip Token
|
||||
*/
|
||||
+ (void)registerVoipToken:(NSData *)voipToken;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 处理收到的 Voip 消息
|
||||
*
|
||||
* @param remoteInfo 下发的 Voip 内容
|
||||
*/
|
||||
+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 检测通知授权状态
|
||||
* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus
|
||||
*/
|
||||
+ (void)requestNotificationAuthorization:(void (^)(JPAuthorizationStatus status))completion;
|
||||
|
||||
/*!
|
||||
* @abstract 跳转至系统设置页面,iOS8及以上有效
|
||||
*/
|
||||
+ (void)openSettingsForNotification:(void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0);
|
||||
|
||||
/*!
|
||||
* Tags操作接口
|
||||
* 支持增加/覆盖/删除/清空/查询操作
|
||||
@@ -304,23 +377,26 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* @abstract 开始记录页面停留
|
||||
*
|
||||
* @param pageName 页面名称
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (void)startLogPageView:(NSString *)pageName;
|
||||
+ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 停止记录页面停留
|
||||
*
|
||||
* @param pageName 页面
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (void)stopLogPageView:(NSString *)pageName;
|
||||
+ (void)stopLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 直接上报在页面的停留时间
|
||||
*
|
||||
* @param pageName 页面
|
||||
* @param seconds 停留的秒数
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds;
|
||||
+ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 开启Crash日志收集
|
||||
@@ -347,6 +423,26 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (void)setLocation:(CLLocation *)location;
|
||||
|
||||
/**
|
||||
设置地理围栏的最大个数
|
||||
默认值为 10 ,iOS系统默认地理围栏最大个数为20
|
||||
@param count 个数 count
|
||||
*/
|
||||
+ (void)setGeofenecMaxCount:(NSInteger)count;
|
||||
/**
|
||||
注册地理围栏的代理
|
||||
|
||||
@param delegate 代理
|
||||
@param launchOptions app启动完成是收到的字段参数
|
||||
*/
|
||||
+ (void)registerLbsGeofenceDelegate:(id<JPUSHGeofenceDelegate>)delegate withLaunchOptions:(NSDictionary *)launchOptions;
|
||||
|
||||
/**
|
||||
删除地理围栏
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
*/
|
||||
+ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Local Notification 本地通知
|
||||
@@ -375,7 +471,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* @abstract 查找推送 (支持iOS10,并兼容iOS10以下版本)
|
||||
*
|
||||
* JPush 2.1.9新接口
|
||||
* @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。
|
||||
* @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有未触发的推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。
|
||||
* @discussion 旧的查找推送接口被废弃,使用此接口可以替换
|
||||
*
|
||||
*/
|
||||
@@ -493,6 +589,20 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (void)resetBadge;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Other Feature 其他功能
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 设置手机号码(到服务器)
|
||||
*
|
||||
* @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码
|
||||
* @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息
|
||||
*
|
||||
* @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。
|
||||
*
|
||||
*/
|
||||
+ (void)setMobileNumber:(NSString *)mobileNumber completion:(void (^)(NSError *error))completion;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Logs and others 日志与其他
|
||||
@@ -536,6 +646,52 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (void)setLogOFF;
|
||||
|
||||
/*!
|
||||
* @abstract 设置SDK地理位置权限开关
|
||||
*
|
||||
* @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。
|
||||
*
|
||||
*/
|
||||
+ (void)setLocationEanable:(BOOL)isEanble;
|
||||
|
||||
/*!
|
||||
* @abstract 设置应用内消息的代理
|
||||
*
|
||||
* @discussion 遵守JPushInMessageDelegate的代理对象
|
||||
*
|
||||
*/
|
||||
+ (void)setInMessageDelegate:(id<JPushInMessageDelegate>)inMessageDelegate;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 主动拉取应用内消息的接口
|
||||
*
|
||||
* @discussion 拉取结果的回调
|
||||
*
|
||||
*/
|
||||
+ (void)pullInMessageCompletion:(JPUSHInMssageCompletion)completion;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 主动拉取应用内消息的接口
|
||||
*
|
||||
* @param types 应用内消息样式
|
||||
*
|
||||
* @discussion 拉取结果的回调
|
||||
*/
|
||||
+ (void)pullInMessageWithTypes:(NSUInteger)types completion:(JPUSHInMssageCompletion)completion;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 向sdk报告当前展示的控制器的名称
|
||||
*
|
||||
* @param className 当前页面的类名
|
||||
*
|
||||
* @discussion 如果类名在黑名单内,就会关闭所有处于曝光状态的inapp
|
||||
*
|
||||
*/
|
||||
+ (void)currentViewControllerName:(NSString *)className;
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
///********************下列方法已过期********************
|
||||
@@ -590,6 +746,81 @@ callbackSelector:(SEL)cbSelector
|
||||
* @param response 通知响应对象
|
||||
* @param completionHandler
|
||||
*/
|
||||
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler;
|
||||
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler;
|
||||
|
||||
/*
|
||||
* @brief handle UserNotifications.framework [openSettingsForNotification:]
|
||||
* @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
|
||||
* @param notification 当前管理的通知对象
|
||||
*/
|
||||
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0);
|
||||
|
||||
/**
|
||||
* 监测通知授权状态返回的结果
|
||||
* @param status 授权通知状态,详见JPAuthorizationStatus
|
||||
* @param info 更多信息,预留参数
|
||||
*/
|
||||
- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(NSDictionary *)info;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JPUSHGeofenceDelegate <NSObject>
|
||||
|
||||
/**
|
||||
进入地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *)userInfo error:(NSError *)error;
|
||||
|
||||
/**
|
||||
离开地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *)userInfo error:(NSError *)error;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JPushInMessageDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
/**
|
||||
*是否允许应用内消息弹出,默认为允许
|
||||
*/
|
||||
- (BOOL)jPushInMessageIsAllowedInMessagePop;
|
||||
|
||||
/**
|
||||
*应用内消息展示的回调
|
||||
*/
|
||||
- (void)jPushInMessageAlreadyPop __attribute__((deprecated("JPush 3.4.0 版本已过期")));;
|
||||
|
||||
/**
|
||||
*应用内消息已消失
|
||||
*/
|
||||
- (void)jPushInMessageAlreadyDisappear;
|
||||
|
||||
|
||||
/**
|
||||
inMessage展示的回调
|
||||
|
||||
@param messageType inMessage
|
||||
@param content 下发的数据,广告类的返回数据为空时返回的信息
|
||||
|
||||
*/
|
||||
- (void)jPushInMessageAlreadyPopInMessageType:(JPushInMessageContentType)messageType Content:(NSDictionary *)content;
|
||||
|
||||
/**
|
||||
inMessage点击的回调
|
||||
|
||||
@param messageType inMessage
|
||||
@param content 下发的数据,广告类的返回数据为空时返回的信息
|
||||
|
||||
*/
|
||||
- (void)jpushInMessagedidClickInMessageType:(JPushInMessageContentType)messageType Content:(NSDictionary *)content;
|
||||
|
||||
@end
|
||||
|
||||
Binary file not shown.
BIN
src/ios/lib/jpush-ios-3.5.2.a
Executable file
BIN
src/ios/lib/jpush-ios-3.5.2.a
Executable file
Binary file not shown.
@@ -1,157 +1,211 @@
|
||||
var JPushPlugin = function () {}
|
||||
var JPushPlugin = function() {};
|
||||
|
||||
// private plugin function
|
||||
|
||||
JPushPlugin.prototype.receiveMessage = {}
|
||||
JPushPlugin.prototype.openNotification = {}
|
||||
JPushPlugin.prototype.receiveNotification = {}
|
||||
JPushPlugin.prototype.receiveMessage = {};
|
||||
JPushPlugin.prototype.openNotification = {};
|
||||
JPushPlugin.prototype.receiveNotification = {};
|
||||
|
||||
JPushPlugin.prototype.isPlatformIOS = function () {
|
||||
return (device.platform === 'iPhone' ||
|
||||
device.platform === 'iPad' ||
|
||||
device.platform === 'iPod touch' ||
|
||||
device.platform === 'iOS')
|
||||
}
|
||||
JPushPlugin.prototype.isPlatformIOS = function() {
|
||||
return (
|
||||
device.platform === "iPhone" ||
|
||||
device.platform === "iPad" ||
|
||||
device.platform === "iPod touch" ||
|
||||
device.platform === "iOS"
|
||||
);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.errorCallback = function (msg) {
|
||||
console.log('JPush Callback Error: ' + msg)
|
||||
}
|
||||
JPushPlugin.prototype.errorCallback = function(msg) {
|
||||
console.log("JPush Callback Error: " + msg);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.callNative = function (name, args, successCallback, errorCallback) {
|
||||
JPushPlugin.prototype.callNative = function(
|
||||
name,
|
||||
args,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
if (errorCallback) {
|
||||
cordova.exec(successCallback, errorCallback, 'JPushPlugin', name, args)
|
||||
cordova.exec(successCallback, errorCallback, "JPushPlugin", name, args);
|
||||
} else {
|
||||
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
|
||||
cordova.exec(
|
||||
successCallback,
|
||||
this.errorCallback,
|
||||
"JPushPlugin",
|
||||
name,
|
||||
args
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Common methods
|
||||
JPushPlugin.prototype.init = function () {
|
||||
JPushPlugin.prototype.init = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('initial', [], null)
|
||||
this.callNative("initial", [], null);
|
||||
} else {
|
||||
this.callNative('init', [], null)
|
||||
this.callNative("init", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setDebugMode = function (mode) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setDebugMode', [mode], null)
|
||||
JPushPlugin.prototype.setDebugMode = function(mode) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setDebugMode", [mode], null);
|
||||
} else {
|
||||
if (mode === true) {
|
||||
this.setDebugModeFromIos()
|
||||
this.setDebugModeFromIos();
|
||||
} else {
|
||||
this.setLogOFF()
|
||||
this.setLogOFF();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.getRegistrationID = function (successCallback) {
|
||||
this.callNative('getRegistrationID', [], successCallback)
|
||||
}
|
||||
JPushPlugin.prototype.getRegistrationID = function(successCallback) {
|
||||
this.callNative("getRegistrationID", [], successCallback);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.stopPush = function () {
|
||||
this.callNative('stopPush', [], null)
|
||||
}
|
||||
JPushPlugin.prototype.stopPush = function() {
|
||||
this.callNative("stopPush", [], null);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.resumePush = function () {
|
||||
this.callNative('resumePush', [], null)
|
||||
}
|
||||
JPushPlugin.prototype.resumePush = function() {
|
||||
this.callNative("resumePush", [], null);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.isPushStopped = function (successCallback) {
|
||||
this.callNative('isPushStopped', [], successCallback)
|
||||
}
|
||||
JPushPlugin.prototype.isPushStopped = function(successCallback) {
|
||||
this.callNative("isPushStopped", [], successCallback);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearLocalNotifications = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('clearLocalNotifications', [], null)
|
||||
JPushPlugin.prototype.clearLocalNotifications = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("clearLocalNotifications", [], null);
|
||||
} else {
|
||||
this.clearAllLocalNotifications()
|
||||
this.clearAllLocalNotifications();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 设置标签。
|
||||
* 注意:该接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
|
||||
*/
|
||||
JPushPlugin.prototype.setTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('setTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.setTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("setTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增标签。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
|
||||
*/
|
||||
JPushPlugin.prototype.addTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('addTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.addTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("addTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除指定标签。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
|
||||
*/
|
||||
JPushPlugin.prototype.deleteTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('deleteTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.deleteTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("deleteTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 清除所有标签。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.cleanTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('cleanTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.cleanTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("cleanTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询所有标签。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.getAllTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('getAllTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.getAllTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("getAllTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询指定标签与当前用户的绑定状态。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tag': string }
|
||||
*/
|
||||
JPushPlugin.prototype.checkTagBindState = function (params, successCallback, errorCallback) {
|
||||
this.callNative('checkTagBindState', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.checkTagBindState = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative(
|
||||
"checkTagBindState",
|
||||
[params],
|
||||
successCallback,
|
||||
errorCallback
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 设置别名。
|
||||
* 注意:该接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number, 'alias': string }
|
||||
*/
|
||||
JPushPlugin.prototype.setAlias = function (params, successCallback, errorCallback) {
|
||||
this.callNative('setAlias', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.setAlias = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("setAlias", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除别名。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.deleteAlias = function (params, successCallback, errorCallback) {
|
||||
this.callNative('deleteAlias', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.deleteAlias = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("deleteAlias", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询当前绑定的别名。
|
||||
*
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.getAlias = function (params, successCallback, errorCallback) {
|
||||
this.callNative('getAlias', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.getAlias = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("getAlias", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
// 判断系统设置中是否对本应用启用通知。
|
||||
// iOS: 返回值如果大于 0,代表通知开启;0: 通知关闭。
|
||||
@@ -161,224 +215,279 @@ JPushPlugin.prototype.getAlias = function (params, successCallback, errorCallbac
|
||||
// UIRemoteNotificationTypeAlert = 1 << 2,
|
||||
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
|
||||
// Android: 返回值 1 代表通知启用;0: 通知关闭。
|
||||
JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
|
||||
JPushPlugin.prototype.getUserNotificationSettings = function(successCallback) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('getUserNotificationSettings', [], successCallback)
|
||||
} else if (device.platform === 'Android') {
|
||||
this.callNative('areNotificationEnabled', [], successCallback)
|
||||
this.callNative("getUserNotificationSettings", [], successCallback);
|
||||
} else if (device.platform === "Android") {
|
||||
this.callNative("areNotificationEnabled", [], successCallback);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// iOS methods
|
||||
|
||||
JPushPlugin.prototype.startJPushSDK = function () {
|
||||
this.callNative('startJPushSDK', [], null)
|
||||
}
|
||||
JPushPlugin.prototype.startJPushSDK = function() {
|
||||
this.callNative("startJPushSDK", [], null);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setBadge = function (value) {
|
||||
JPushPlugin.prototype.setBadge = function(value) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setBadge', [value], null)
|
||||
this.callNative("setBadge", [value], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.resetBadge = function () {
|
||||
JPushPlugin.prototype.resetBadge = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('resetBadge', [], null)
|
||||
this.callNative("resetBadge", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setDebugModeFromIos = function () {
|
||||
JPushPlugin.prototype.setDebugModeFromIos = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setDebugModeFromIos', [], null)
|
||||
this.callNative("setDebugModeFromIos", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setLogOFF = function () {
|
||||
JPushPlugin.prototype.setLogOFF = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setLogOFF', [], null)
|
||||
this.callNative("setLogOFF", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setCrashLogON = function () {
|
||||
JPushPlugin.prototype.setCrashLogON = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('crashLogON', [], null)
|
||||
this.callNative("crashLogON", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content,
|
||||
badge, notificationID, extras) {
|
||||
JPushPlugin.prototype.addLocalNotificationForIOS = function(
|
||||
delayTime,
|
||||
content,
|
||||
badge,
|
||||
notificationID,
|
||||
extras
|
||||
) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setLocalNotification', [delayTime, content, badge, notificationID, extras], null)
|
||||
this.callNative(
|
||||
"setLocalNotification",
|
||||
[delayTime, content, badge, notificationID, extras],
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function (identifierKey) {
|
||||
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function(
|
||||
identifierKey
|
||||
) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('deleteLocalNotificationWithIdentifierKey', [identifierKey], null)
|
||||
this.callNative(
|
||||
"deleteLocalNotificationWithIdentifierKey",
|
||||
[identifierKey],
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearAllLocalNotifications = function () {
|
||||
JPushPlugin.prototype.clearAllLocalNotifications = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('clearAllLocalNotifications', [], null)
|
||||
this.callNative("clearAllLocalNotifications", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setLocation = function (latitude, longitude) {
|
||||
JPushPlugin.prototype.setLocation = function(latitude, longitude) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setLocation', [latitude, longitude], null)
|
||||
this.callNative("setLocation", [latitude, longitude], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.startLogPageView = function (pageName) {
|
||||
JPushPlugin.prototype.startLogPageView = function(pageName) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('startLogPageView', [pageName], null)
|
||||
this.callNative("startLogPageView", [pageName], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.stopLogPageView = function (pageName) {
|
||||
JPushPlugin.prototype.stopLogPageView = function(pageName) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('stopLogPageView', [pageName], null)
|
||||
this.callNative("stopLogPageView", [pageName], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.beginLogPageView = function (pageName, duration) {
|
||||
JPushPlugin.prototype.beginLogPageView = function(pageName, duration) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('beginLogPageView', [pageName, duration], null)
|
||||
this.callNative("beginLogPageView", [pageName, duration], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setApplicationIconBadgeNumber = function (badge) {
|
||||
JPushPlugin.prototype.setApplicationIconBadgeNumber = function(badge) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setApplicationIconBadgeNumber', [badge], null)
|
||||
this.callNative("setApplicationIconBadgeNumber", [badge], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) {
|
||||
JPushPlugin.prototype.getApplicationIconBadgeNumber = function(callback) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('getApplicationIconBadgeNumber', [], callback)
|
||||
this.callNative("getApplicationIconBadgeNumber", [], callback);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addDismissActions = function (actions, categoryId) {
|
||||
this.callNative('addDismissActions', [actions, categoryId])
|
||||
}
|
||||
JPushPlugin.prototype.addDismissActions = function(actions, categoryId) {
|
||||
this.callNative("addDismissActions", [actions, categoryId]);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
|
||||
this.callNative('addNotificationActions', [actions, categoryId])
|
||||
}
|
||||
JPushPlugin.prototype.addNotificationActions = function(actions, categoryId) {
|
||||
this.callNative("addNotificationActions", [actions, categoryId]);
|
||||
};
|
||||
|
||||
// Android methods
|
||||
JPushPlugin.prototype.getConnectionState = function (successCallback) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('getConnectionState', [], successCallback)
|
||||
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)
|
||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setBasicPushNotificationBuilder", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setCustomPushNotificationBuilder', [], null)
|
||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setCustomPushNotificationBuilder", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function (data) {
|
||||
if (device.platform === 'Android') {
|
||||
data = JSON.stringify(data)
|
||||
var event = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.receiveRegistrationId', event)
|
||||
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function(data) {
|
||||
if (device.platform === "Android") {
|
||||
data = JSON.stringify(data);
|
||||
var event = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.receiveRegistrationId", event);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) {
|
||||
data = JSON.stringify(data)
|
||||
this.receiveMessage = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.receiveMessage', this.receiveMessage)
|
||||
}
|
||||
JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) {
|
||||
data = JSON.stringify(data);
|
||||
this.receiveMessage = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.receiveMessage", this.receiveMessage);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.openNotificationInAndroidCallback = function (data) {
|
||||
data = JSON.stringify(data)
|
||||
this.openNotification = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.openNotification', this.openNotification)
|
||||
}
|
||||
JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) {
|
||||
data = JSON.stringify(data);
|
||||
this.openNotification = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.openNotification", this.openNotification);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.receiveNotificationInAndroidCallback = function (data) {
|
||||
data = JSON.stringify(data)
|
||||
this.receiveNotification = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.receiveNotification', this.receiveNotification)
|
||||
}
|
||||
JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data) {
|
||||
data = JSON.stringify(data);
|
||||
this.receiveNotification = JSON.parse(data);
|
||||
cordova.fireDocumentEvent(
|
||||
"jpush.receiveNotification",
|
||||
this.receiveNotification
|
||||
);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearAllNotification = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('clearAllNotification', [], null)
|
||||
JPushPlugin.prototype.clearAllNotification = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("clearAllNotification", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearNotificationById = function (id) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('clearNotificationById', [id], null)
|
||||
JPushPlugin.prototype.clearNotificationById = function(id) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("clearNotificationById", [id], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setLatestNotificationNum = function (num) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setLatestNotificationNum', [num], null)
|
||||
JPushPlugin.prototype.setLatestNotificationNum = function(num) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setLatestNotificationNum", [num], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
|
||||
notificationID, broadcastTime, extras) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('addLocalNotification',
|
||||
[builderId, content, title, notificationID, broadcastTime, extras], null)
|
||||
JPushPlugin.prototype.addLocalNotification = function(
|
||||
builderId,
|
||||
content,
|
||||
title,
|
||||
notificationID,
|
||||
broadcastTime,
|
||||
extras
|
||||
) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative(
|
||||
"addLocalNotification",
|
||||
[builderId, content, title, notificationID, broadcastTime, extras],
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.removeLocalNotification = function (notificationID) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('removeLocalNotification', [notificationID], null)
|
||||
JPushPlugin.prototype.removeLocalNotification = function(notificationID) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("removeLocalNotification", [notificationID], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('reportNotificationOpened', [msgID], null)
|
||||
JPushPlugin.prototype.reportNotificationOpened = function(msgID) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("reportNotificationOpened", [msgID], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 用于在 Android 6.0 及以上系统,申请一些权限
|
||||
* 具体可看:http://docs.jpush.io/client/android_api/#android-60
|
||||
*/
|
||||
JPushPlugin.prototype.requestPermission = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('requestPermission', [], null)
|
||||
JPushPlugin.prototype.requestPermission = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("requestPermission", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null)
|
||||
JPushPlugin.prototype.setSilenceTime = function(
|
||||
startHour,
|
||||
startMinute,
|
||||
endHour,
|
||||
endMinute
|
||||
) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative(
|
||||
"setSilenceTime",
|
||||
[startHour, startMinute, endHour, endMinute],
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setPushTime', [weekdays, startHour, endHour], null)
|
||||
JPushPlugin.prototype.setPushTime = function(weekdays, startHour, endHour) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setPushTime", [weekdays, startHour, endHour], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setGeofenceInterval = function(interval) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setGeofenceInterval", [interval], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setMaxGeofenceNumber = function(maxNumber) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setMaxGeofenceNumber", [maxNumber], null);
|
||||
}
|
||||
};
|
||||
|
||||
//设置角标
|
||||
JPushPlugin.prototype.setBadgeNumber = function(badgeNumb) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setBadgeNumber", [badgeNumb], null);
|
||||
}
|
||||
};
|
||||
|
||||
if (!window.plugins) {
|
||||
window.plugins = {}
|
||||
window.plugins = {};
|
||||
}
|
||||
|
||||
if (!window.plugins.jPushPlugin) {
|
||||
window.plugins.jPushPlugin = new JPushPlugin()
|
||||
window.plugins.jPushPlugin = new JPushPlugin();
|
||||
}
|
||||
|
||||
module.exports = new JPushPlugin()
|
||||
module.exports = new JPushPlugin();
|
||||
|
||||
Reference in New Issue
Block a user