forked from github/jpush-phonegap-plugin
Compare commits
71 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
263a372663 | ||
|
|
43a4917f23 | ||
|
|
e4b4aa1271 | ||
|
|
cac2944516 | ||
|
|
795242e0c9 | ||
|
|
f140784c9c | ||
|
|
0d64cb853b | ||
|
|
13c59302f4 | ||
|
|
aae5380195 | ||
|
|
679f68c7fd | ||
|
|
71b4bbe93f | ||
|
|
ea985d4d5f | ||
|
|
9f0deb0285 | ||
|
|
7fafe5aea3 | ||
|
|
c4ec7f3c2a | ||
|
|
49d40c12b4 | ||
|
|
87808d953a | ||
|
|
768d54f2e4 | ||
|
|
001ce88d2a | ||
|
|
3523dfaa83 | ||
|
|
c242aa4318 | ||
|
|
f0b00a2d53 | ||
|
|
0a53660cd9 | ||
|
|
b5b35428e9 | ||
|
|
10c2287c5a | ||
|
|
9aa897a173 | ||
|
|
abb4b6432b | ||
|
|
00599ca0bc | ||
|
|
3faac1945c | ||
|
|
145b75d90a | ||
|
|
56d9417dbc | ||
|
|
6932b84f4e | ||
|
|
048c12d8dd | ||
|
|
04891c4fa1 | ||
|
|
6876a58138 | ||
|
|
86dcd351cd | ||
|
|
88fe3a4a24 | ||
|
|
b3faac2a77 | ||
|
|
4a711b3a93 | ||
|
|
fa116c665b | ||
|
|
4300730073 | ||
|
|
76d6c5ddb1 | ||
|
|
521422cac0 | ||
|
|
c629dcc033 | ||
|
|
aeee619eab | ||
|
|
bc9e441fe2 | ||
|
|
fad4745e01 | ||
|
|
10b29611c5 | ||
|
|
03429474c0 | ||
|
|
e56a05c64b | ||
|
|
a50bafcf3e | ||
|
|
60176c1ea6 | ||
|
|
c929496721 | ||
|
|
bdd9a8beea | ||
|
|
511eee622f | ||
|
|
2f4669471f | ||
|
|
85e3a23f88 | ||
|
|
206f2ac89e | ||
|
|
57b9364279 | ||
|
|
e0db803818 | ||
|
|
e140dc3b77 | ||
|
|
a26822b894 | ||
|
|
7dd7a4a86c | ||
|
|
b7a2a74d88 | ||
|
|
2f8234c29f | ||
|
|
a9b5af06a5 | ||
|
|
ddfb952bcf | ||
|
|
74fea46b1c | ||
|
|
b2f79c6234 | ||
|
|
9e23995555 | ||
|
|
a7455240a1 |
150
.cursor/commands/update_sdk.md
Normal file
150
.cursor/commands/update_sdk.md
Normal file
@@ -0,0 +1,150 @@
|
||||
# 更新 SDK
|
||||
|
||||
根据**输入的需要更新的 SDK 版本号**,同时更新本插件的 **iOS** 与 **Android** 依赖。本插件 Android 使用 Maven 集成、iOS 使用 CocoaPods 集成,无需下载或替换本地 SDK 包,只需在 `plugin.xml` 中修改两端的依赖版本号。
|
||||
|
||||
## 输入
|
||||
|
||||
执行本命令时请提供**目标 SDK 版本号**(如 `5.9.1`、`6.0.0`)。该版本号将用于:
|
||||
- **iOS**:CocoaPods 的 JPush pod 版本(`plugin.xml` 中的 `spec`)
|
||||
- **Android**:Maven 的 `cn.jiguang.sdk:jpush` 版本(`plugin.xml` 中的 `framework src`)
|
||||
|
||||
若 iOS 与 Android 官方发布的版本号不一致,请分别说明「iOS 目标版本」与「Android 目标版本」。
|
||||
|
||||
## 更新步骤
|
||||
|
||||
### 1. 更新 iOS SDK 版本(CocoaPods)
|
||||
|
||||
根据输入的版本号,在 `plugin.xml` 的 iOS 平台下修改 `<pod name="JPush" spec="..." />` 中的版本号。
|
||||
|
||||
**位置**:约第 51–55 行,`<podspec><pods>` 内。
|
||||
|
||||
**示例**:
|
||||
```xml
|
||||
<!-- 固定版本,如 6.0.0、6.0.1 -->
|
||||
<pod name="JPush" spec="6.0.0" />
|
||||
```
|
||||
|
||||
**说明**:CocoaPods 上 JPush 官方 pod 的版本以 [CocoaPods JPush](https://cocoapods.org/pods/jpush) 为准。修改后执行 `cordova build ios` 或进入 `platforms/ios` 执行 `pod install` 即可拉取对应版本。
|
||||
|
||||
### 2. 更新 Android SDK 版本(Maven)
|
||||
|
||||
根据输入的版本号,在 `plugin.xml` 的 Android 平台下修改 `<framework src="cn.jiguang.sdk:jpush:x.x.x" />` 中的版本号。
|
||||
|
||||
**位置**:约第 252–253 行。
|
||||
|
||||
**示例**:
|
||||
```xml
|
||||
<!-- 更新为 5.9.1 -->
|
||||
<framework src="cn.jiguang.sdk:jpush:5.9.1" />
|
||||
```
|
||||
|
||||
**说明**:依赖从 Maven Central 拉取,无需替换本地 jar。修改后执行 `cordova build android` 即可使用新版本。
|
||||
|
||||
### 3. 查找 SDK 新增 API
|
||||
|
||||
**⚠️ 重要:必须逐项查看更新日志,不要因为看到「更新各厂商 SDK」等描述就跳过新增 API 的检查。**
|
||||
|
||||
执行本步时按文末「文档内容获取方式」获取下方更新日志页面的内容,逐条阅读,不要仅依赖网页搜索。
|
||||
|
||||
#### Android SDK
|
||||
- 访问 [极光推送 Android SDK 更新日志](https://docs.jiguang.cn/jpush/jpush_changelog/updates_Android) 查找目标版本的新增对外 API。
|
||||
- **检查方法**:
|
||||
1. 找到目标版本(如 5.9.0)的更新内容。
|
||||
2. **逐条阅读**每一条,不要跳过。
|
||||
3. 重点看包含「新增」「新增接口」「新增 API」「新增方法」或 Java 方法签名的条目。
|
||||
4. 对每个疑似新增 API,记录:方法名、完整方法签名、功能说明。
|
||||
- 在 [Android SDK API 文档](https://docs.jiguang.cn/jpush/client/Android/android_api) 中确认用法、参数和示例。
|
||||
|
||||
#### iOS SDK
|
||||
- 访问 [极光推送 iOS SDK 更新说明](https://docs.jiguang.cn/jpush/jpush_changelog/updates_iOS) 查找目标版本的新增对外 API。
|
||||
- **检查方法**:
|
||||
1. 找到目标版本的更新内容。
|
||||
2. **逐条阅读**每一条。
|
||||
3. 重点看包含「新增」「新增接口」「新增 API」或 Objective-C 方法签名的条目。
|
||||
4. 对每个疑似新增 API,记录:方法名、完整方法签名、功能说明。
|
||||
- 在 [iOS SDK API 文档](https://docs.jiguang.cn/jpush/client/iOS/ios_api) 中确认用法、参数和示例。
|
||||
|
||||
**检查清单**(完成后勾选):
|
||||
- [ ] 已找到目标版本的更新日志
|
||||
- [ ] 已逐条阅读所有更新内容(含次要更新)
|
||||
- [ ] 已识别所有含「新增」「API」「接口」「方法」等的条目
|
||||
- [ ] 已记录所有新增 API 的方法名和签名
|
||||
- [ ] 已在对应平台 API 文档中确认每个新增 API 的用法
|
||||
- [ ] 已区分「需在插件中封装的对外 API」与「仅内部实现、无需封装」的更新
|
||||
|
||||
**常见误区**:
|
||||
- ❌ 看到「更新各厂商 SDK」就认为没有新增 API → ✅ 仍要逐条检查
|
||||
- ❌ 只扫一眼主要更新 → ✅ 必须逐条检查
|
||||
- ❌ 靠搜索判断有没有新增 API → ✅ 以官方更新日志为准
|
||||
- ❌ 文档有缺字/错字时直接忽略 → ✅ 需到官方文档核实
|
||||
|
||||
### 4. 封装新增 API(如有)
|
||||
|
||||
**⚠️ 若无新增 API,需明确写「经检查,该版本无新增对外 API」,再跳过本步。**
|
||||
|
||||
若有新增 API,需在插件中封装:
|
||||
- 在 `www/JPushPlugin.js` 中增加 JavaScript 接口
|
||||
- 在 `src/android/JPushPlugin.java` 中实现 Android 逻辑
|
||||
- 在 `src/ios/Plugins/JPushPlugin.m` 或 `AppDelegate+JPush.m` 中实现 iOS 逻辑
|
||||
|
||||
**封装原则**:
|
||||
- Android 与 iOS 为同一功能时,封装为一个插件方法
|
||||
- 不同功能分别封装
|
||||
- **直接调用 SDK API,不要用反射**
|
||||
- 若无新增 API,**必须写明「已检查并确认无新增 API」后跳过**
|
||||
|
||||
**封装步骤**:
|
||||
1. 确认 API 的完整签名与参数类型
|
||||
2. 确认调用时机(是否需在 init 之前调用)
|
||||
3. 在对应平台实现
|
||||
4. 在 JS 层增加方法,风格与现有 API 一致
|
||||
5. 补充必要的错误处理与日志
|
||||
|
||||
### 5. 更新 API 文档
|
||||
|
||||
若新增了插件方法,需更新文档:
|
||||
- `doc/Common_detail_api.md`:通用或跨平台方法
|
||||
- `doc/Android_detail_api.md`:仅 Android 方法
|
||||
- `doc/iOS_API.md`:仅 iOS 方法
|
||||
|
||||
若无新增方法,跳过此步。
|
||||
|
||||
### 6. 在 example/index.html 中添加示例(若有新增 API)
|
||||
|
||||
**若有新增插件方法**,需在示例工程中增加可操作示例,便于开发者验证与参考:
|
||||
|
||||
- 在 `example/index.html` 中为每个新增 API 增加:
|
||||
1. **按钮**:在合适位置的 `<div data-role="fieldcontain">` 中增加 `<input type="button" id="xxx" value="Xxx" />`(id 与 API 含义对应)。
|
||||
2. **点击逻辑**:在 `initiateUI` 内用 `$("#xxx").click(...)` 调用 `window.JPush.新方法(...)`,在回调中用 `alert` 或 `$("#某结果区").html(...)` 展示结果。
|
||||
3. 若有结果展示,可复用已有结果区域或新增 `<label id="xxxResult">` 等。
|
||||
|
||||
风格与现有示例保持一致(如 setTags、getAlias、setMobileNumber 等),便于用户对照文档在真机/模拟器上点击验证。
|
||||
|
||||
若无新增方法,跳过此步。
|
||||
|
||||
### 7. 更新插件版本号
|
||||
|
||||
**⚠️ 重要:`plugin.xml` 与 `package.json` 中的版本号需一致。**
|
||||
|
||||
本插件版本号与 **Android SDK 版本号** 对齐(如 SDK 5.9.0 → 插件 5.9.0)。
|
||||
|
||||
- 在 `plugin.xml` 根节点 `version` 中更新版本号(约第 5 行)
|
||||
- 在 `package.json` 的 `version` 中更新为相同版本号
|
||||
|
||||
**示例**:
|
||||
- 当前插件版本:5.9.0,本次升级 Android SDK 到 5.9.1 → 插件版本改为 **5.9.1**
|
||||
- 若仅升级 CocoaPods 侧 JPush 版本、且希望插件版本与 Android 一致,可继续使用当前 Android SDK 版本作为插件版本
|
||||
|
||||
## 文档内容获取方式
|
||||
|
||||
文档中的链接(极光更新日志、API 文档、CocoaPods 等)需要获取内容时:用 **curl 拉取对应 URL**,在返回的 HTML 里用 **grep 或搜索** 定位所需段落(极光页面为服务端渲染,内容均在 HTML 中,无需执行 JS)。
|
||||
|
||||
## 注意事项
|
||||
|
||||
- **必须逐条检查更新日志,避免遗漏新增 API**
|
||||
- 确保 Android(Maven)与 iOS(CocoaPods)使用的 SDK 版本符合预期
|
||||
- 新增 API 的封装风格需与现有 API 一致
|
||||
- 更新后建议做一次完整构建与功能验证
|
||||
- **若更新日志有缺字、错字,以极光官方文档为准**
|
||||
- **`plugin.xml` 与 `package.json` 的版本号必须一致**
|
||||
- 本插件不包含本地 SDK 包,所有依赖通过 Maven(Android)和 CocoaPods(iOS)拉取
|
||||
2
.npmignore
Normal file
2
.npmignore
Normal file
@@ -0,0 +1,2 @@
|
||||
cursor.md
|
||||
.cursor/
|
||||
@@ -18,6 +18,8 @@
|
||||
>如果需要安装之前版本的插件,请先安装 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)
|
||||
>
|
||||
>**集成方式说明**:Android 通过 Maven 拉取 `cn.jiguang.sdk:jpush`,iOS 通过 CocoaPods 拉取 `JPush` pod,无需再依赖插件内的本地 SDK 包。
|
||||
## Install
|
||||
|
||||
> 注意:
|
||||
@@ -32,6 +34,7 @@
|
||||
|
||||
- 或直接通过 url 安装:
|
||||
|
||||
|
||||
```shell
|
||||
cordova plugin add https://github.com/jpush/jpush-phonegap-plugin.git --variable APP_KEY=your_jpush_appkey
|
||||
```
|
||||
|
||||
30
cursor.md
Normal file
30
cursor.md
Normal file
@@ -0,0 +1,30 @@
|
||||
|
||||
使用方法:修改需求里的内容,将需求和步骤内容作为指令让cursor进行执行。
|
||||
|
||||
|
||||
需求:
|
||||
1. 更新iOS JPush SDK 到 x.x.x 版本, JPush SDK 包的路径是:xxx
|
||||
2. 更新Android JPush SDK 到 x.x.x 版本, JPush SDK 包的路径是:xxx
|
||||
3. 将原生iOS、Android SDK 新增的方法,封装在插件中。
|
||||
原生SDK新增方法一:
|
||||
iOS:
|
||||
```
|
||||
```
|
||||
|
||||
Android:
|
||||
```
|
||||
```
|
||||
|
||||
统一封装为 方法名为 "" 的对外方法。
|
||||
|
||||
|
||||
请按照以下步骤完成:
|
||||
|
||||
1. iOS 使用 CocoaPods 集成:在 plugin.xml 的 iOS 平台下修改 `<pod name="JPush" spec="x.x.x" />` 中的版本号(固定版本,如 6.0.0)即可。
|
||||
2. Android 使用 Maven 集成:在 plugin.xml 的 Android 平台下修改 `<framework src="cn.jiguang.sdk:jpush:x.x.x" />` 中的版本号即可。
|
||||
3. 封装新增的方法。(如果没有新增的方法就不用执行这一步)
|
||||
4. 在 plugin.xml 中更新插件版本号,使用安卓 SDK 包的版本号。
|
||||
5. 在 package.json 中更新插件版本号,使用安卓 SDK 包的版本号。
|
||||
|
||||
|
||||
|
||||
@@ -245,4 +245,52 @@ window.JPush.setMaxGeofenceNumber(maxNumber)
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- maxNumber: 最多允许保存的地理围栏个数
|
||||
- maxNumber: 最多允许保存的地理围栏个数
|
||||
|
||||
|
||||
### API - setBadgeNumber
|
||||
|
||||
设置App角标,目前仅华为系手机支持。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setBadgeNumber(badgeNumb)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- badgeNumb: 角标显示数字,小于或等0,角标显示数字清楚
|
||||
|
||||
### API - setAuth
|
||||
|
||||
设置用户是否同意隐私协议
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setAuth(isAuth)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- isAuth: 是否同意隐私协议,true 已同意;false未同意
|
||||
|
||||
#### 调用逻辑
|
||||
|
||||
- 宿主 APP 在首次安装,冷启动
|
||||
- 用户隐私协议告知
|
||||
- 用户确认授权
|
||||
- 告知极光授权结果
|
||||
|
||||
同意隐私协议:
|
||||
|
||||
```js
|
||||
window.JPush.setAuth(true)
|
||||
```
|
||||
|
||||
不同意隐私协议:
|
||||
|
||||
```js
|
||||
window.JPush.setAuth(false)
|
||||
```
|
||||
@@ -7,6 +7,7 @@
|
||||
- [stopPush](#stoppush)
|
||||
- [resumePush](#resumepush)
|
||||
- [isPushStopped](#ispushstopped)
|
||||
- [getPushStatus](#getpushstatus)
|
||||
- [开启 Debug 模式](#开启-debug-模式)
|
||||
- [setDebugMode](#setdebugmode)
|
||||
- [获取 RegistrationID](#获取-registrationid)
|
||||
@@ -21,6 +22,8 @@
|
||||
- [cleanTags](#cleantags)
|
||||
- [getAllTags](#getalltags)
|
||||
- [checkTagBindState](#checktagbindstate)
|
||||
- [设置手机号](#设置手机号)
|
||||
- [setMobileNumber](#setMobileNumber)
|
||||
- [获取点击通知内容](#获取点击通知内容)
|
||||
- [event - jpush.openNotification](#event---jpushopennotification)
|
||||
- [获取通知内容](#获取通知内容)
|
||||
@@ -129,6 +132,37 @@ window.JPush.isPushStopped(function (result) {
|
||||
})
|
||||
```
|
||||
|
||||
### getPushStatus
|
||||
|
||||
- **Android 6.0.0+ / iOS 6.0.0+**:推荐使用本接口替代 `isPushStopped`,用于检查推送是否被停止。
|
||||
- 回调结果为 `{ code: number, isStopped: 0|1 }`:`code` 为 0 表示成功,非 0 表示错误码;**`isStopped` 仅在 `code === 0` 时有效**(0 表示推送未停止,1 表示推送已停止),当 `code !== 0` 时请勿依赖 `isStopped` 做业务判断。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.getPushStatus(callback)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- callback: 回调函数,参数为 `(result)`,result 为 `{ code: number, isStopped: 0|1 }`。**注意:`isStopped` 仅在 `code === 0` 时有效。**
|
||||
|
||||
#### 代码示例
|
||||
|
||||
```js
|
||||
window.JPush.getPushStatus(function (result) {
|
||||
if (result.code !== 0) {
|
||||
// 获取状态失败,不解析 isStopped
|
||||
return;
|
||||
}
|
||||
if (result.isStopped === 0) {
|
||||
// 推送未停止
|
||||
} else if (result.isStopped === 1) {
|
||||
// 推送已停止
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
## 开启 Debug 模式
|
||||
### setDebugMode
|
||||
用于开启 Debug 模式,显示更多的日志信息。
|
||||
@@ -396,6 +430,37 @@ window.JPush.checkTagBindState({ sequence: 1, tag: 'tag1' },
|
||||
- sequence: number。用户自定义的操作序列号, 同操作结果一起返回,用来标识一次操作的唯一性。
|
||||
- tag: string,待查询的 tag。
|
||||
|
||||
## 设置手机号
|
||||
|
||||
提供设置手机号码的接口,用于短信补充功能。
|
||||
|
||||
注:短信补充仅支持国内业务,号码格式为 11 位数字,有无 +86 前缀皆可。
|
||||
|
||||
### setMobileNumber
|
||||
|
||||
调用此 API 设置手机号码。该接口会控制调用频率,频率为 10s 之内最多 3 次。
|
||||
|
||||
#### 代码示例
|
||||
|
||||
```js
|
||||
window.JPush.setMobileNumber({ sequence: 5, mobileNumber: '111111' },
|
||||
(result) => {
|
||||
var sequence = result.sequence
|
||||
var number = result.mobileNumber
|
||||
}, (error) => {
|
||||
var sequence = error.sequence
|
||||
var errorCode = error.code
|
||||
})
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- sequence: number。用户自定义的操作序列号, 同操作结果一起返回,用来标识一次操作的唯一性。
|
||||
- mobileNumber: string
|
||||
- 手机号码。如果传空串则为解除号码绑定操作。
|
||||
- 限制:只能以 “+” 或者 数字开头;后面的内容只能包含 “-” 和数字。
|
||||
|
||||
|
||||
## 获取点击通知内容
|
||||
|
||||
### event - jpush.openNotification
|
||||
@@ -553,6 +618,27 @@ document.addEventListener("jpush.receiveMessage", function (event) {
|
||||
}
|
||||
```
|
||||
|
||||
## 获取通知点击的参数 (Android only)
|
||||
|
||||
### event - jpush.receiveNotifyButtonClick
|
||||
|
||||
#### 代码示例
|
||||
|
||||
- 在你需要接收通知的的 js 文件中加入:
|
||||
|
||||
```js
|
||||
document.addEventListener("jpush.receiveNotifyButtonClick", function (event) {
|
||||
if(device.platform == "Android") {
|
||||
var msgId = event.msgId;
|
||||
var platform = event.platform;
|
||||
var name = event.name;
|
||||
var actionType = event.actionType;
|
||||
var action = event.action;
|
||||
var data = event.data;
|
||||
}
|
||||
}, false)
|
||||
```
|
||||
|
||||
## 判断系统设置中是否允许当前应用推送
|
||||
### API - getUserNotificationSettings
|
||||
判断系统设置中是否允许当前应用推送。
|
||||
|
||||
BIN
example/css/.DS_Store
vendored
BIN
example/css/.DS_Store
vendored
Binary file not shown.
@@ -49,6 +49,7 @@
|
||||
}
|
||||
};
|
||||
|
||||
var badgeNumb = 0;
|
||||
var onOpenNotification = function(event) {
|
||||
try {
|
||||
var alertContent;
|
||||
@@ -57,6 +58,11 @@
|
||||
} 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);
|
||||
@@ -72,6 +78,9 @@
|
||||
alertContent = event.aps.alert;
|
||||
}
|
||||
$("#notificationResult").html(alertContent);
|
||||
|
||||
badgeNumb = badgeNumb + 1;
|
||||
window.JPush.setBadgeNumber(badgeNumb);
|
||||
} catch (exception) {
|
||||
console.log(exception)
|
||||
}
|
||||
@@ -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();
|
||||
@@ -178,12 +200,33 @@
|
||||
alert(error.code)
|
||||
})
|
||||
});
|
||||
|
||||
$("#setMobileNumber").click(function (event) {
|
||||
var number = $("#mobileNumberText").val()
|
||||
window.JPush.setMobileNumber({ sequence: 5, mobileNumber: number },
|
||||
function (result) {
|
||||
$("#mobileNumberResult").html(result.mobileNumber)
|
||||
}, function (error){
|
||||
alert(error.code)
|
||||
})
|
||||
})
|
||||
|
||||
$("#getPushStatus").click(function (event) {
|
||||
window.JPush.getPushStatus(function (result) {
|
||||
var text = "code: " + result.code + ", isStopped: " + result.isStopped;
|
||||
if (result.code !== 0) {
|
||||
text += " (isStopped 仅当 code 为 0 时有效)";
|
||||
}
|
||||
$("#pushStatusResult").html(text);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
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>
|
||||
|
||||
@@ -228,6 +271,14 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<label>MobileNumber: </label>
|
||||
<table>
|
||||
<tr>
|
||||
<td>
|
||||
<input type="number" id="mobileNumberText" />
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
@@ -242,6 +293,14 @@
|
||||
<input type="button" id="deleteAlias" value="Delete alias" />
|
||||
</div>
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<input type="button" id="setMobileNumber" value="Set mobileNumber" />
|
||||
</div>
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<input type="button" id="getPushStatus" value="Get push status" />
|
||||
</div>
|
||||
|
||||
<div data-role="fieldcontain">
|
||||
<label id="tagsPrompt">设置 Tag 的结果:</label>
|
||||
<label id="tagsResult">null</label>
|
||||
@@ -250,6 +309,14 @@
|
||||
<label id="aliasPrompt">设置 Alias 的结果:</label>
|
||||
<label id="aliasResult">null</label>
|
||||
</div>
|
||||
<div data-role="fieldcontain">
|
||||
<label id="mobileNumberPrompt">设置手机号的结果:</label>
|
||||
<label id="mobileNumberResult">null</label>
|
||||
</div>
|
||||
<div data-role="fieldcontain">
|
||||
<label id="pushStatusPrompt">Get push status 结果 (code=0 成功, isStopped 仅当 code 为 0 时有效):</label>
|
||||
<label id="pushStatusResult">null</label>
|
||||
</div>
|
||||
<div data-role="fieldcontain">
|
||||
<label id="notificationPrompt">接受的通知内容:</label>
|
||||
<label id="notificationResult">null</label>
|
||||
|
||||
@@ -47,6 +47,9 @@ export class JPush extends IonicNativePlugin {
|
||||
@Cordova()
|
||||
isPushStopped(): Promise<any> { return; }
|
||||
|
||||
@Cordova()
|
||||
getPushStatus(): Promise<{ code: number; isStopped: 0 | 1 }> { return; }
|
||||
|
||||
@Cordova()
|
||||
setTags(params: TagOptions): Promise<any> { return; }
|
||||
|
||||
|
||||
2
ionic/jpush/index.d.ts
vendored
2
ionic/jpush/index.d.ts
vendored
@@ -42,6 +42,8 @@ export declare class JPushOriginal extends IonicNativePlugin {
|
||||
stopPush(): Promise<any>;
|
||||
resumePush(): Promise<any>;
|
||||
isPushStopped(): Promise<any>;
|
||||
/** 检查推送是否被停止(SDK 6.0+ 推荐),返回 { code: number, isStopped: 0|1 }。isStopped 仅在 code 为 0 时有效 */
|
||||
getPushStatus(): Promise<{ code: number; isStopped: 0 | 1 }>;
|
||||
setTags(params: TagOptions): Promise<any>;
|
||||
addTags(params: TagOptions): Promise<any>;
|
||||
deleteTags(params: TagOptions): Promise<any>;
|
||||
|
||||
@@ -24,6 +24,7 @@ var JPushOriginal = /** @class */ (function (_super) {
|
||||
JPushOriginal.prototype.stopPush = function () { return cordova(this, "stopPush", {}, arguments); };
|
||||
JPushOriginal.prototype.resumePush = function () { return cordova(this, "resumePush", {}, arguments); };
|
||||
JPushOriginal.prototype.isPushStopped = function () { return cordova(this, "isPushStopped", {}, arguments); };
|
||||
JPushOriginal.prototype.getPushStatus = function () { return cordova(this, "getPushStatus", {}, arguments); };
|
||||
JPushOriginal.prototype.setTags = function (params) { return cordova(this, "setTags", {}, arguments); };
|
||||
JPushOriginal.prototype.addTags = function (params) { return cordova(this, "addTags", {}, arguments); };
|
||||
JPushOriginal.prototype.deleteTags = function (params) { return cordova(this, "deleteTags", {}, arguments); };
|
||||
|
||||
2
ionic/jpush/ngx/index.d.ts
vendored
2
ionic/jpush/ngx/index.d.ts
vendored
@@ -42,6 +42,8 @@ export declare class JPush extends IonicNativePlugin {
|
||||
stopPush(): Promise<any>;
|
||||
resumePush(): Promise<any>;
|
||||
isPushStopped(): Promise<any>;
|
||||
/** isStopped 仅在 code 为 0 时有效 */
|
||||
getPushStatus(): Promise<{ code: number; isStopped: 0 | 1 }>;
|
||||
setTags(params: TagOptions): Promise<any>;
|
||||
addTags(params: TagOptions): Promise<any>;
|
||||
deleteTags(params: TagOptions): Promise<any>;
|
||||
|
||||
@@ -42,6 +42,7 @@ var JPush = /** @class */ (function (_super) {
|
||||
JPush.prototype.stopPush = function () { return cordova(this, "stopPush", {}, arguments); };
|
||||
JPush.prototype.resumePush = function () { return cordova(this, "resumePush", {}, arguments); };
|
||||
JPush.prototype.isPushStopped = function () { return cordova(this, "isPushStopped", {}, arguments); };
|
||||
JPush.prototype.getPushStatus = function () { return cordova(this, "getPushStatus", {}, arguments); };
|
||||
JPush.prototype.setTags = function (params) { return cordova(this, "setTags", {}, arguments); };
|
||||
JPush.prototype.addTags = function (params) { return cordova(this, "addTags", {}, arguments); };
|
||||
JPush.prototype.deleteTags = function (params) { return cordova(this, "deleteTags", {}, arguments); };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.7.2",
|
||||
"version": "6.0.1",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
@@ -23,7 +23,7 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"cordova-plugin-device": "*",
|
||||
"cordova-plugin-jcore": ">=1.3.0"
|
||||
"cordova-plugin-jcore": ">=4.2.2"
|
||||
},
|
||||
"author": "JiGuang",
|
||||
"license": "MIT",
|
||||
|
||||
229
plugin.xml
229
plugin.xml
@@ -1,8 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
id="jpush-phonegap-plugin"
|
||||
version="3.7.2">
|
||||
version="6.0.1">
|
||||
|
||||
<name>JPush</name>
|
||||
<description>JPush for cordova plugin</description>
|
||||
@@ -48,8 +49,12 @@
|
||||
<header-file src="src/ios/Plugins/AppDelegate+JPush.h" />
|
||||
<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.2.1.a" framework="true" />
|
||||
<!-- JPush SDK 通过 CocoaPods 集成 -->
|
||||
<podspec>
|
||||
<pods>
|
||||
<pod name="JPush" spec="6.0.0" />
|
||||
</pods>
|
||||
</podspec>
|
||||
<resource-file src="src/ios/JPushConfig.plist" />
|
||||
|
||||
<framework src="CFNetwork.framework" weak="true" />
|
||||
@@ -64,6 +69,8 @@
|
||||
<framework src="AdSupport.framework" weak="true" />
|
||||
<framework src="UserNotifications.framework" weak="true" />
|
||||
<framework src="libresolv.tbd" weak="true" />
|
||||
<framework src="StoreKit.framework" weak="true" />
|
||||
<framework src="Network.framework" weak="true" />
|
||||
|
||||
<config-file target="*JPushConfig.plist" parent="Appkey">
|
||||
<string>$APP_KEY</string>
|
||||
@@ -71,200 +78,143 @@
|
||||
</platform>
|
||||
|
||||
<platform name="android">
|
||||
<!-- aar 合并时与 cn.jiguang.sdk:jpush 的 meta-data 冲突,需声明 tools 并用 tools:replace 覆盖 -->
|
||||
<edit-config file="AndroidManifest.xml" target="/manifest" mode="merge">
|
||||
<manifest xmlns:tools="http://schemas.android.com/tools" />
|
||||
</edit-config>
|
||||
|
||||
<config-file target="res/xml/config.xml" parent="/*">
|
||||
<feature name="JPushPlugin">
|
||||
<param name="android-package" value="cn.jiguang.cordova.push.JPushPlugin" />
|
||||
</feature>
|
||||
</config-file>
|
||||
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest" mode="merge">
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest">
|
||||
<!-- 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.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.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
|
||||
|
||||
<!-- 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"/>
|
||||
<!-- vivo 角标 -->
|
||||
<uses-permission android:name="com.vivo.notification.permission.BADGE_ICON" />
|
||||
<!--honor 角标-->
|
||||
<uses-permission android:name="com.hihonor.android.launcher.permission.CHANGE_BADGE" />
|
||||
</config-file>
|
||||
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest/application" mode="merge">
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest/application">
|
||||
|
||||
|
||||
<!-- 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: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" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- Required SDK 核心功能-->
|
||||
<!-- 可配置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" />
|
||||
<action android:name="cn.jpush.android.intent.PushService" />
|
||||
<action android:name="cn.jpush.android.intent.PUSH_TIME" />
|
||||
</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">
|
||||
<intent-filter android:priority="1000">
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!--Required 显示通知栏 -->
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.USER_PRESENT" />
|
||||
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
||||
</intent-filter>
|
||||
<!-- Optional -->
|
||||
<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>
|
||||
|
||||
<!-- 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">
|
||||
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||
<action android:name="cn.jpush.android.intent.RECEIVER_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:process=":pushcore"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jiguang.user.service.action" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
|
||||
<receiver
|
||||
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" />
|
||||
<!-- <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>
|
||||
<!-- <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="$CHANNEL"/>
|
||||
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" /> <!-- </>值来自开发者平台取得的AppKey-->
|
||||
|
||||
<!-- Required:SDK 从合并后的 AndroidManifest 读取。aar 内也有同名 meta-data,用 tools:replace 覆盖占位符 -->
|
||||
<meta-data android:name="JPUSH_CHANNEL" android:value="$CHANNEL" tools:replace="android:value" />
|
||||
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" tools:replace="android:value" />
|
||||
<provider
|
||||
android:name="cn.jpush.android.service.InitProvider"
|
||||
android:authorities="${applicationId}.jiguang.InitProvider"
|
||||
android:exported="false"
|
||||
android:readPermission="${applicationId}.permission.JPUSH_MESSAGE"
|
||||
android:writePermission="${applicationId}.permission.JPUSH_MESSAGE" />
|
||||
</config-file>
|
||||
|
||||
<lib-file src="src/android/libs/jpush-android-3.3.4.jar" />
|
||||
<!-- JPush SDK 通过 Maven 集成,替代本地 jar -->
|
||||
<framework src="cn.jiguang.sdk:jpush:6.0.1" />
|
||||
|
||||
<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/JLogger.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_btn_blue_bg.xml"
|
||||
target="res/drawable/jpush_btn_blue_bg.xml" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_btn_grey_bg.xml"
|
||||
target="res/drawable/jpush_btn_grey_bg.xml" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_cancel_btn_bg.xml"
|
||||
target="res/drawable/jpush_cancel_btn_bg.xml" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_close.xml"
|
||||
target="res/drawable/jpush_close.xml" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_contain_bg.xml"
|
||||
target="res/drawable/jpush_contain_bg.xml" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_interstitial_bg.xml"
|
||||
target="res/drawable/jpush_interstitial_bg.xml" />
|
||||
|
||||
|
||||
|
||||
<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" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_btn_bg_green_playable.xml"
|
||||
target="res/drawable-hdpi/jpush_btn_bg_green_playable.xml" />
|
||||
|
||||
<resource-file src="src/android/res/layout/jpush_popwin_layout.xml"
|
||||
target="res/layout/jpush_popwin_layout.xml" />
|
||||
@@ -272,6 +222,29 @@
|
||||
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" />
|
||||
<resource-file src="src/android/res/layout/push_download_notification_layout.xml"
|
||||
target="res/layout/push_download_notification_layout.xml" />
|
||||
|
||||
<resource-file src="src/android/res/layout/jpush_interstitial.xml"
|
||||
target="res/layout/jpush_interstitial.xml" />
|
||||
<resource-file src="src/android/res/layout/jpush_full.xml"
|
||||
target="res/layout/jpush_full.xml" />
|
||||
<resource-file src="src/android/res/layout/jpush_banner.xml"
|
||||
target="res/layout/jpush_banner.xml" />
|
||||
|
||||
|
||||
<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" />
|
||||
|
||||
<resource-file src="src/android/res/values/jpush_style.xml"
|
||||
target="res/values/jpush_style.xml" />
|
||||
@@ -280,5 +253,7 @@
|
||||
|
||||
<resource-file src="src/android/res/values-zh/jpush_string.xml"
|
||||
target="res/values-zh/jpush_string.xml" />
|
||||
<resource-file src="src/android/res/xml/jpush_file_paths.xml"
|
||||
target="res/xml/jpush_file_paths.xml" />
|
||||
</platform>
|
||||
</plugin>
|
||||
|
||||
46
src/android/JLogger.java
Normal file
46
src/android/JLogger.java
Normal file
@@ -0,0 +1,46 @@
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import android.util.Log;
|
||||
|
||||
public class JLogger {
|
||||
|
||||
public static final String TAG = "[Cordova-JPush]";
|
||||
|
||||
private static boolean isLoggerEnable = false;
|
||||
|
||||
public static void setLoggerEnable(boolean loggerEnable) {
|
||||
Log.d(TAG, "setLoggerEnable:" + loggerEnable);
|
||||
isLoggerEnable = loggerEnable;
|
||||
}
|
||||
|
||||
public static void i(String tag,String msg) {
|
||||
if (isLoggerEnable) {
|
||||
Log.i(TAG+tag, msg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void d(String tag,String msg) {
|
||||
if (isLoggerEnable) {
|
||||
Log.d(TAG+tag, msg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void v(String tag,String msg) {
|
||||
if (isLoggerEnable) {
|
||||
Log.v(TAG+tag, msg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void w(String tag,String msg) {
|
||||
if (isLoggerEnable) {
|
||||
Log.w(TAG+tag, msg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void e(String tag,String error) {
|
||||
if (isLoggerEnable) {
|
||||
Log.e(TAG+tag, error);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -10,13 +10,19 @@ import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import cn.jpush.android.api.CmdMessage;
|
||||
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.api.NotificationCustomButton;
|
||||
import cn.jpush.android.helper.Logger;
|
||||
import cn.jpush.android.local.JPushConstants;
|
||||
import cn.jpush.android.service.JPushMessageReceiver;
|
||||
|
||||
public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
@@ -26,100 +32,239 @@ 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();
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onTagOperatorResult:"+jPushMessage);
|
||||
|
||||
int sequence = jPushMessage.getSequence();
|
||||
try {
|
||||
resultJson.put("sequence", sequence);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
CallbackContext callback = JPushPlugin.eventCallbackMap.get(sequence);
|
||||
|
||||
if (callback == null) {
|
||||
Log.i(TAG, "Unexpected error, callback is null!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (jPushMessage.getErrorCode() == 0) { // success
|
||||
Set<String> tags = jPushMessage.getTags();
|
||||
JSONArray tagsJsonArr = new JSONArray();
|
||||
for (String tag : tags) {
|
||||
tagsJsonArr.put(tag);
|
||||
}
|
||||
|
||||
try {
|
||||
tryCallback(jPushMessage, new SuccessCallback() {
|
||||
@Override
|
||||
public void onSuccessCallback(JSONObject resultJson) throws JSONException {
|
||||
Set<String> tags = jPushMessage.getTags();
|
||||
JSONArray tagsJsonArr = new JSONArray();
|
||||
for (String tag : tags) {
|
||||
tagsJsonArr.put(tag);
|
||||
}
|
||||
if (tagsJsonArr.length() != 0) {
|
||||
resultJson.put("tags", tagsJsonArr);
|
||||
}
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
|
||||
}
|
||||
|
||||
callback.success(resultJson);
|
||||
|
||||
} else {
|
||||
try {
|
||||
resultJson.put("code", jPushMessage.getErrorCode());
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
callback.error(resultJson);
|
||||
}
|
||||
|
||||
JPushPlugin.eventCallbackMap.remove(sequence);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onCheckTagOperatorResult(context, jPushMessage);
|
||||
|
||||
//Log.e(TAG,"onCheckTagOperatorResult:"+jPushMessage);
|
||||
JSONObject resultJson = new JSONObject();
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onCheckTagOperatorResult:"+jPushMessage);
|
||||
|
||||
int sequence = jPushMessage.getSequence();
|
||||
try {
|
||||
resultJson.put("sequence", sequence);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
CallbackContext callback = JPushPlugin.eventCallbackMap.get(sequence);
|
||||
|
||||
if (callback == null) {
|
||||
Log.i(TAG, "Unexpected error, callback is null!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (jPushMessage.getErrorCode() == 0) {
|
||||
try {
|
||||
tryCallback(jPushMessage, new SuccessCallback() {
|
||||
@Override
|
||||
public void onSuccessCallback(JSONObject resultJson) throws JSONException {
|
||||
resultJson.put("tag", jPushMessage.getCheckTag());
|
||||
resultJson.put("isBind", jPushMessage.getTagCheckStateResult());
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
callback.success(resultJson);
|
||||
|
||||
} else {
|
||||
try {
|
||||
resultJson.put("code", jPushMessage.getErrorCode());
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
callback.error(resultJson);
|
||||
}
|
||||
|
||||
JPushPlugin.eventCallbackMap.remove(sequence);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onAliasOperatorResult(context, jPushMessage);
|
||||
|
||||
//Log.e(TAG,"onAliasOperatorResult:"+jPushMessage);
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onAliasOperatorResult:"+jPushMessage);
|
||||
|
||||
tryCallback(jPushMessage, new SuccessCallback() {
|
||||
@Override
|
||||
public void onSuccessCallback(JSONObject resultJson) throws JSONException {
|
||||
if (!TextUtils.isEmpty(jPushMessage.getAlias())) {
|
||||
resultJson.put("alias", jPushMessage.getAlias());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRegister(Context context, String regId) {
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onRegister:"+regId);
|
||||
cn.jiguang.cordova.push.JPushPlugin.transmitReceiveRegistrationId(regId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCommandResult(Context context, CmdMessage cmdMessage) {
|
||||
super.onCommandResult(context, cmdMessage);
|
||||
if (cmdMessage == null) return;
|
||||
// cmd 2003: getPushStatus / isPushStopped 状态回调。errorCode: 0=未停止, 1=已停止, 其他=异常
|
||||
if (cmdMessage.cmd == 2003) {
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG, "[onCommandResult] getPushStatus, errorCode=" + cmdMessage.errorCode);
|
||||
cn.jiguang.cordova.push.JPushPlugin.onGetPushStatusResult(cmdMessage.errorCode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMessage(Context context, CustomMessage customMessage) {
|
||||
// super.onMessage(context,customMessage);
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onMessage:"+customMessage);
|
||||
try {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
jsonObject.put("message", customMessage.message);
|
||||
jsonObject.put("alert", customMessage.title);
|
||||
jsonObject.put(JPushInterface.EXTRA_EXTRA, stringToMap(customMessage.extra));
|
||||
jsonObject.put(JPushInterface.EXTRA_MSG_ID, customMessage.messageId);
|
||||
jsonObject.put(JPushInterface.EXTRA_CONTENT_TYPE, customMessage.contentType);
|
||||
if (JPushConstants.SDK_VERSION_CODE >= 387) {
|
||||
jsonObject.put(JPushInterface.EXTRA_TYPE_PLATFORM, customMessage.platform);
|
||||
}
|
||||
cn.jiguang.cordova.push.JPushPlugin.transmitNotificationReceive(jsonObject);
|
||||
}catch (Throwable throwable){
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onMessage throwable:"+throwable);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
|
||||
// super.onNotifyMessageArrived(context, notificationMessage);
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onNotifyMessageArrived:"+notificationMessage);
|
||||
try {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
jsonObject.put("title", notificationMessage.notificationTitle);
|
||||
jsonObject.put("alert", notificationMessage.notificationContent);
|
||||
getExtras(jsonObject,notificationMessage);
|
||||
JPushPlugin.notificationJson = jsonObject;
|
||||
cn.jiguang.cordova.push.JPushPlugin.transmitNotificationReceive(jsonObject);
|
||||
}catch (Throwable throwable){
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onNotifyMessageArrived throwable:"+throwable);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
|
||||
// super.onNotifyMessageOpened(context, notificationMessage);
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onNotifyMessageOpened:"+notificationMessage);
|
||||
|
||||
try {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
jsonObject.put("title", notificationMessage.notificationTitle);
|
||||
jsonObject.put("alert", notificationMessage.notificationContent);
|
||||
getExtras(jsonObject,notificationMessage);
|
||||
JPushPlugin.openNotificationJson = jsonObject;
|
||||
cn.jiguang.cordova.push.JPushPlugin.transmitNotificationOpen(jsonObject);
|
||||
}catch (Throwable throwable){
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onNotifyMessageOpened throwable:"+throwable);
|
||||
|
||||
}
|
||||
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);
|
||||
context.startActivity(launch);
|
||||
}
|
||||
}
|
||||
private void getExtras(JSONObject extras,NotificationMessage notificationMessage) {
|
||||
try {
|
||||
extras.put(JPushInterface.EXTRA_MSG_ID, notificationMessage.msgId);
|
||||
extras.put(JPushInterface.EXTRA_NOTIFICATION_ID, notificationMessage.notificationId);
|
||||
extras.put(JPushInterface.EXTRA_ALERT_TYPE, notificationMessage.notificationAlertType + "");
|
||||
extras.put(JPushInterface.EXTRA_EXTRA, stringToMap(notificationMessage.notificationExtras));
|
||||
if (notificationMessage.notificationStyle == 1 && !TextUtils.isEmpty(notificationMessage.notificationBigText)) {
|
||||
extras.put(JPushInterface.EXTRA_BIG_TEXT, notificationMessage.notificationBigText);
|
||||
} else if (notificationMessage.notificationStyle == 2 && !TextUtils.isEmpty(notificationMessage.notificationInbox)) {
|
||||
extras.put(JPushInterface.EXTRA_INBOX, notificationMessage.notificationInbox);
|
||||
} else if ((notificationMessage.notificationStyle == 3) && !TextUtils.isEmpty(notificationMessage.notificationBigPicPath)) {
|
||||
extras.put(JPushInterface.EXTRA_BIG_PIC_PATH, notificationMessage.notificationBigPicPath);
|
||||
}
|
||||
if (!(notificationMessage.notificationPriority == 0)) {
|
||||
extras.put(JPushInterface.EXTRA_NOTI_PRIORITY, notificationMessage.notificationPriority + "");
|
||||
}
|
||||
if (!TextUtils.isEmpty(notificationMessage.notificationCategory)) {
|
||||
extras.put(JPushInterface.EXTRA_NOTI_CATEGORY, notificationMessage.notificationCategory);
|
||||
}
|
||||
if (!TextUtils.isEmpty(notificationMessage.notificationSmallIcon)) {
|
||||
extras.put(JPushInterface.EXTRA_NOTIFICATION_SMALL_ICON, notificationMessage.notificationSmallIcon);
|
||||
}
|
||||
if (!TextUtils.isEmpty(notificationMessage.notificationLargeIcon)) {
|
||||
extras.put(JPushInterface.EXTRA_NOTIFICATION_LARGET_ICON, notificationMessage.notificationLargeIcon);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
Log.e(TAG, "[onNotifyMessageUnShow] e:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onMobileNumberOperatorResult(context, jPushMessage);
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onMobileNumberOperatorResult:"+jPushMessage);
|
||||
|
||||
tryCallback(jPushMessage, new SuccessCallback() {
|
||||
@Override
|
||||
public void onSuccessCallback(JSONObject resultJson) throws JSONException {
|
||||
if (!TextUtils.isEmpty(jPushMessage.getMobileNumber())) {
|
||||
resultJson.put("mobileNumber", jPushMessage.getMobileNumber());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onMultiActionClicked(Context context, Intent intent) {
|
||||
super.onMultiActionClicked(context, intent);
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onMultiActionClicked:"+intent);
|
||||
}
|
||||
@Override
|
||||
public void onInAppMessageShow(Context context,final NotificationMessage message) {
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG, "[onInAppMessageShow], " + message.toString());
|
||||
try {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
jsonObject.put("title", message.inAppMsgTitle);
|
||||
jsonObject.put("alert", message.inAppMsgContentBody);
|
||||
jsonObject.put("messageId", message.msgId);
|
||||
jsonObject.put("inAppShowTarget", message.inAppExtras);
|
||||
jsonObject.put("inAppClickAction", message.inAppClickAction);
|
||||
jsonObject.put("inAppExtras", message.inAppExtras);
|
||||
cn.jiguang.cordova.push.JPushPlugin.transmitInAppMessageShow(jsonObject);
|
||||
|
||||
}catch (Throwable throwable){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInAppMessageClick(Context context,final NotificationMessage message) {
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG, "[onInAppMessageClick], " + message.toString());
|
||||
try {
|
||||
JSONObject jsonObject=new JSONObject();
|
||||
jsonObject.put("title", message.inAppMsgTitle);
|
||||
jsonObject.put("alert", message.inAppMsgContentBody);
|
||||
jsonObject.put("messageId", message.msgId);
|
||||
jsonObject.put("inAppShowTarget", message.inAppExtras);
|
||||
jsonObject.put("inAppClickAction", message.inAppClickAction);
|
||||
jsonObject.put("inAppExtras", message.inAppExtras);
|
||||
cn.jiguang.cordova.push.JPushPlugin.transmitInAppMessageClick(jsonObject);
|
||||
|
||||
}catch (Throwable throwable){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotifyButtonClick(Context context, NotificationCustomButton notificationCustomButton) {
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG, "[onNotifyButtonClick], " + notificationCustomButton.toString());
|
||||
try {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("msgId", notificationCustomButton.a);
|
||||
jsonObject.put("platform", notificationCustomButton.b);
|
||||
jsonObject.put("name", notificationCustomButton.c);
|
||||
jsonObject.put("actionType", notificationCustomButton.d);
|
||||
jsonObject.put("action", notificationCustomButton.e);
|
||||
jsonObject.put("data", notificationCustomButton.f);
|
||||
cn.jiguang.cordova.push.JPushPlugin.transmitNotifyButtonClick(jsonObject);
|
||||
} catch (Throwable throwable) {
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG, "[onNotifyButtonClick] throwable:" + throwable);
|
||||
}
|
||||
}
|
||||
interface SuccessCallback{
|
||||
void onSuccessCallback(JSONObject resultJson) throws JSONException;
|
||||
}
|
||||
public void tryCallback(JPushMessage jPushMessage,SuccessCallback successCallback){
|
||||
JSONObject resultJson = new JSONObject();
|
||||
|
||||
int sequence = jPushMessage.getSequence();
|
||||
@@ -129,22 +274,19 @@ public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
CallbackContext callback = JPushPlugin.eventCallbackMap.get(sequence);
|
||||
CallbackContext callback = cn.jiguang.cordova.push.JPushPlugin.eventCallbackMap.get(sequence);
|
||||
|
||||
if (callback == null) {
|
||||
Log.i(TAG, "Unexpected error, callback is null!");
|
||||
Logger.i(TAG, "Unexpected error, callback is null!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (jPushMessage.getErrorCode() == 0) { // success
|
||||
if (jPushMessage.getErrorCode() == 0) {
|
||||
try {
|
||||
if (!TextUtils.isEmpty(jPushMessage.getAlias())) {
|
||||
resultJson.put("alias", jPushMessage.getAlias());
|
||||
}
|
||||
successCallback.onSuccessCallback(resultJson);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
callback.success(resultJson);
|
||||
|
||||
} else {
|
||||
@@ -153,50 +295,38 @@ public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
callback.error(resultJson);
|
||||
}
|
||||
|
||||
JPushPlugin.eventCallbackMap.remove(sequence);
|
||||
cn.jiguang.cordova.push.JPushPlugin.eventCallbackMap.remove(sequence);
|
||||
|
||||
}
|
||||
public Map<String, Object> stringToMap(String extra) {
|
||||
Map<String, Object> useExtra = new HashMap<String, Object>();
|
||||
try {
|
||||
if (TextUtils.isEmpty(extra)) {
|
||||
return useExtra;
|
||||
}
|
||||
JSONObject object = new JSONObject(extra);
|
||||
Iterator<String> keys = object.keys();
|
||||
while (keys.hasNext()) {
|
||||
try {
|
||||
String key = keys.next();
|
||||
Object value = object.get(key);
|
||||
if (value instanceof Integer
|
||||
|| value instanceof Long
|
||||
|| value instanceof Boolean
|
||||
|| value instanceof String) {
|
||||
useExtra.put(key, value);
|
||||
} else {
|
||||
useExtra.put(key, String.valueOf(value));
|
||||
}
|
||||
} catch (Throwable throwable) {
|
||||
|
||||
@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);
|
||||
}
|
||||
}
|
||||
} catch (Throwable throwable) {
|
||||
}
|
||||
return useExtra;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ 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.jiguang.api.utils.JCollectionAuth;
|
||||
|
||||
public class JPushPlugin extends CordovaPlugin {
|
||||
|
||||
@@ -41,16 +42,17 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
private static JPushPlugin instance;
|
||||
private static Activity cordovaActivity;
|
||||
|
||||
static String notificationTitle;
|
||||
static String notificationAlert;
|
||||
static JSONObject notificationJson;
|
||||
static Map<String, Object> notificationExtras = new HashMap<String, Object>();
|
||||
|
||||
static String openNotificationTitle;
|
||||
static String openNotificationAlert;
|
||||
static JSONObject openNotificationJson;
|
||||
static Map<String, Object> openNotificationExtras = new HashMap<String, Object>();
|
||||
|
||||
static Map<Integer, CallbackContext> eventCallbackMap = new HashMap<Integer, CallbackContext>();
|
||||
|
||||
/** getPushStatus 异步结果通过 JPushMessageReceiver.onCommandResult(cmd==2003) 回调,此处暂存 CallbackContext */
|
||||
static CallbackContext getPushStatusCallbackContext;
|
||||
|
||||
public JPushPlugin() {
|
||||
instance = this;
|
||||
}
|
||||
@@ -59,29 +61,28 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
public void initialize(CordovaInterface cordova, CordovaWebView webView) {
|
||||
super.initialize(cordova, webView);
|
||||
mContext = cordova.getActivity().getApplicationContext();
|
||||
Log.d(TAG,"initialize plugin");
|
||||
|
||||
JPushInterface.init(mContext);
|
||||
// JPushInterface.init(mContext);
|
||||
|
||||
cordovaActivity = cordova.getActivity();
|
||||
|
||||
// 如果同时缓存了打开事件 openNotificationAlert 和 消息事件 notificationAlert,只向 UI 发打开事件。
|
||||
// 这样做是为了和 iOS 统一。
|
||||
if (openNotificationAlert != null) {
|
||||
notificationAlert = null;
|
||||
transmitNotificationOpen(openNotificationTitle, openNotificationAlert, openNotificationExtras);
|
||||
if (openNotificationJson != null) {
|
||||
transmitNotificationOpen(openNotificationJson);
|
||||
}
|
||||
if (notificationAlert != null) {
|
||||
transmitNotificationReceive(notificationTitle, notificationAlert, notificationExtras);
|
||||
if (notificationJson != null) {
|
||||
transmitNotificationReceive(notificationJson);
|
||||
}
|
||||
}
|
||||
|
||||
public void onResume(boolean multitasking) {
|
||||
if (openNotificationAlert != null) {
|
||||
notificationAlert = null;
|
||||
transmitNotificationOpen(openNotificationTitle, openNotificationAlert, openNotificationExtras);
|
||||
if (openNotificationJson != null) {
|
||||
transmitNotificationOpen(openNotificationJson);
|
||||
}
|
||||
if (notificationAlert != null) {
|
||||
transmitNotificationReceive(notificationTitle, notificationAlert, notificationExtras);
|
||||
if (notificationJson != null) {
|
||||
transmitNotificationReceive(notificationJson);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -159,11 +160,11 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
return data;
|
||||
}
|
||||
|
||||
static void transmitMessageReceive(String message, Map<String, Object> extras) {
|
||||
static void transmitMessageReceive(JSONObject data) {
|
||||
if (instance == null) {
|
||||
return;
|
||||
}
|
||||
JSONObject data = getMessageObject(message, extras);
|
||||
// JSONObject data = getMessageObject(message, extras);
|
||||
String format = "window.plugins.jPushPlugin.receiveMessageInAndroidCallback(%s);";
|
||||
final String js = String.format(format, data.toString());
|
||||
cordovaActivity.runOnUiThread(new Runnable() {
|
||||
@@ -173,12 +174,53 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static void transmitNotificationOpen(String title, String alert, Map<String, Object> extras) {
|
||||
static void transmitInAppMessageClick( JSONObject data) {
|
||||
if (instance == null) {
|
||||
return;
|
||||
}
|
||||
JSONObject data = getNotificationObject(title, alert, extras);
|
||||
String format = "window.plugins.jPushPlugin.receiveInAppMessageClickCallback(%s);";
|
||||
final String js = String.format(format, data.toString());
|
||||
cordovaActivity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
instance.webView.loadUrl("javascript:" + js);
|
||||
}
|
||||
});
|
||||
}
|
||||
static void transmitInAppMessageShow( JSONObject data) {
|
||||
if (instance == null) {
|
||||
return;
|
||||
}
|
||||
String format = "window.plugins.jPushPlugin.receiveInAppMessageShowCallback(%s);";
|
||||
final String js = String.format(format, data.toString());
|
||||
cordovaActivity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
instance.webView.loadUrl("javascript:" + js);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
static void transmitNotifyButtonClick( JSONObject data) {
|
||||
if (instance == null) {
|
||||
return;
|
||||
}
|
||||
String format = "window.plugins.jPushPlugin.receiveNotifyButtonClickCallback(%s);";
|
||||
final String js = String.format(format, data.toString());
|
||||
cordovaActivity.runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
instance.webView.loadUrl("javascript:" + js);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
static void transmitNotificationOpen(JSONObject data) {
|
||||
if (instance == null) {
|
||||
return;
|
||||
}
|
||||
// JSONObject data = getNotificationObject(title, alert, extras);
|
||||
String format = "window.plugins.jPushPlugin.openNotificationInAndroidCallback(%s);";
|
||||
final String js = String.format(format, data.toString());
|
||||
cordovaActivity.runOnUiThread(new Runnable() {
|
||||
@@ -187,15 +229,14 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
instance.webView.loadUrl("javascript:" + js);
|
||||
}
|
||||
});
|
||||
JPushPlugin.openNotificationTitle = null;
|
||||
JPushPlugin.openNotificationAlert = null;
|
||||
JPushPlugin.openNotificationJson = null;
|
||||
}
|
||||
|
||||
static void transmitNotificationReceive(String title, String alert, Map<String, Object> extras) {
|
||||
static void transmitNotificationReceive(JSONObject data) {
|
||||
if (instance == null) {
|
||||
return;
|
||||
}
|
||||
JSONObject data = getNotificationObject(title, alert, extras);
|
||||
// JSONObject data = getNotificationObject(title, alert, extras);
|
||||
String format = "window.plugins.jPushPlugin.receiveNotificationInAndroidCallback(%s);";
|
||||
final String js = String.format(format, data.toString());
|
||||
cordovaActivity.runOnUiThread(new Runnable() {
|
||||
@@ -204,8 +245,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
instance.webView.loadUrl("javascript:" + js);
|
||||
}
|
||||
});
|
||||
JPushPlugin.notificationTitle = null;
|
||||
JPushPlugin.notificationAlert = null;
|
||||
JPushPlugin.notificationJson = null;
|
||||
}
|
||||
|
||||
static void transmitReceiveRegistrationId(String rId) {
|
||||
@@ -246,6 +286,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
void init(JSONArray data, CallbackContext callbackContext) {
|
||||
JPushInterface.setNotificationCallBackEnable(mContext, true);
|
||||
JPushInterface.init(mContext);
|
||||
}
|
||||
|
||||
@@ -254,6 +295,18 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
try {
|
||||
mode = data.getBoolean(0);
|
||||
JPushInterface.setDebugMode(mode);
|
||||
JLogger.setLoggerEnable(mode);
|
||||
callbackContext.success();
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
void setDataInsightsEnable(JSONArray data, CallbackContext callbackContext) {
|
||||
boolean mode;
|
||||
try {
|
||||
mode = data.getBoolean(0);
|
||||
JPushInterface.setDataInsightsEnable(mContext,mode);
|
||||
callbackContext.success();
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
@@ -279,6 +332,35 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
}
|
||||
|
||||
void getPushStatus(JSONArray data, CallbackContext callbackContext) {
|
||||
getPushStatusCallbackContext = callbackContext;
|
||||
JPushInterface.getPushStatus(mContext);
|
||||
// 结果在 JPushEventReceiver.onCommandResult 中当 cmd==2003 时回调
|
||||
}
|
||||
|
||||
/**
|
||||
* 由 JPushEventReceiver.onCommandResult 在 cmd==2003 时调用,传递 getPushStatus 异步结果。
|
||||
* 与 iOS 对齐:code=0 表示成功,非 0 表示错误码;isStopped=0 未停止,1 已停止。
|
||||
* Android errorCode: 0=未停止, 1=已停止, 其他=异常。
|
||||
*/
|
||||
static void onGetPushStatusResult(int errorCode) {
|
||||
if (getPushStatusCallbackContext == null) return;
|
||||
try {
|
||||
JSONObject result = new JSONObject();
|
||||
if (errorCode == 0 || errorCode == 1) {
|
||||
result.put("code", 0);
|
||||
result.put("isStopped", errorCode == 1 ? 1 : 0);
|
||||
} else {
|
||||
result.put("code", errorCode);
|
||||
result.put("isStopped", 0);
|
||||
}
|
||||
getPushStatusCallbackContext.success(result);
|
||||
} catch (JSONException e) {
|
||||
getPushStatusCallbackContext.error("getPushStatus result error");
|
||||
}
|
||||
getPushStatusCallbackContext = null;
|
||||
}
|
||||
|
||||
void areNotificationEnabled(JSONArray data, final CallbackContext callback) {
|
||||
int isEnabled;
|
||||
if (hasPermission("OP_POST_NOTIFICATION")) {
|
||||
@@ -296,6 +378,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("error reading num json");
|
||||
return;
|
||||
}
|
||||
if (num != -1) {
|
||||
JPushInterface.setLatestNotificationNumber(mContext, num);
|
||||
@@ -364,6 +447,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.setAlias(mContext, sequence, alias);
|
||||
@@ -379,6 +463,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.deleteAlias(mContext, sequence);
|
||||
@@ -394,6 +479,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.getAlias(mContext, sequence);
|
||||
@@ -416,6 +502,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.setTags(mContext, sequence, tags);
|
||||
@@ -438,6 +525,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.addTags(mContext, sequence, tags);
|
||||
@@ -460,6 +548,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.deleteTags(mContext, sequence, tags);
|
||||
@@ -476,6 +565,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.cleanTags(mContext, sequence);
|
||||
@@ -492,6 +582,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.getAllTags(mContext, sequence);
|
||||
@@ -510,6 +601,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.checkTagBindState(mContext, sequence, tag);
|
||||
@@ -637,6 +729,41 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
JPushInterface.setMaxGeofenceNumber(mContext, maxNumber);
|
||||
}
|
||||
|
||||
void setBadgeNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
int badgeNumb = data.getInt(0);
|
||||
JPushInterface.setBadgeNumber(mContext, badgeNumb);
|
||||
}
|
||||
|
||||
void setMobileNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
int sequence = -1;
|
||||
String number = null;
|
||||
|
||||
try {
|
||||
JSONObject params = data.getJSONObject(0);
|
||||
sequence = params.getInt("sequence");
|
||||
number = params.getString("mobileNumber");
|
||||
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
eventCallbackMap.put(sequence, callbackContext);
|
||||
JPushInterface.setMobileNumber(mContext,sequence, number);
|
||||
}
|
||||
|
||||
void setAuth(JSONArray data, CallbackContext callbackContext) {
|
||||
boolean isAuth = false;
|
||||
try {
|
||||
isAuth = data.getBoolean(0);
|
||||
JCollectionAuth.setAuth(mContext, isAuth);
|
||||
callbackContext.success();
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isValidHour(int hour) {
|
||||
return !(hour < 0 || hour > 23);
|
||||
}
|
||||
|
||||
@@ -18,69 +18,69 @@ public class JPushReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (action.equals(JPushInterface.ACTION_REGISTRATION_ID)) {
|
||||
String rId = intent.getStringExtra(JPushInterface.EXTRA_REGISTRATION_ID);
|
||||
JPushPlugin.transmitReceiveRegistrationId(rId);
|
||||
} else if (action.equals(JPushInterface.ACTION_MESSAGE_RECEIVED)) {
|
||||
handlingMessageReceive(intent);
|
||||
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_RECEIVED)) {
|
||||
handlingNotificationReceive(context, intent);
|
||||
} else if (action.equals(JPushInterface.ACTION_NOTIFICATION_OPENED)) {
|
||||
handlingNotificationOpen(context, intent);
|
||||
}
|
||||
// String action = intent.getAction();
|
||||
// if (action.equals(JPushInterface.ACTION_REGISTRATION_ID)) {
|
||||
// String rId = intent.getStringExtra(JPushInterface.EXTRA_REGISTRATION_ID);
|
||||
// JPushPlugin.transmitReceiveRegistrationId(rId);
|
||||
// } else if (action.equals(JPushInterface.ACTION_MESSAGE_RECEIVED)) {
|
||||
// handlingMessageReceive(intent);
|
||||
// } else if (action.equals(JPushInterface.ACTION_NOTIFICATION_RECEIVED)) {
|
||||
// handlingNotificationReceive(context, intent);
|
||||
// } else if (action.equals(JPushInterface.ACTION_NOTIFICATION_OPENED)) {
|
||||
// handlingNotificationOpen(context, intent);
|
||||
// }
|
||||
}
|
||||
|
||||
private void handlingMessageReceive(Intent intent) {
|
||||
String msg = intent.getStringExtra(JPushInterface.EXTRA_MESSAGE);
|
||||
Map<String, Object> extras = getNotificationExtras(intent);
|
||||
JPushPlugin.transmitMessageReceive(msg, extras);
|
||||
}
|
||||
|
||||
private void handlingNotificationOpen(Context context, Intent intent) {
|
||||
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||
JPushPlugin.openNotificationTitle = title;
|
||||
|
||||
String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
|
||||
JPushPlugin.openNotificationAlert = alert;
|
||||
|
||||
Map<String, Object> extras = getNotificationExtras(intent);
|
||||
JPushPlugin.openNotificationExtras = extras;
|
||||
|
||||
JPushPlugin.transmitNotificationOpen(title, alert, extras);
|
||||
|
||||
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);
|
||||
context.startActivity(launch);
|
||||
}
|
||||
}
|
||||
|
||||
private void handlingNotificationReceive(Context context, Intent intent) {
|
||||
String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||
JPushPlugin.notificationTitle = title;
|
||||
|
||||
String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
|
||||
JPushPlugin.notificationAlert = alert;
|
||||
|
||||
Map<String, Object> extras = getNotificationExtras(intent);
|
||||
JPushPlugin.notificationExtras = extras;
|
||||
|
||||
JPushPlugin.transmitNotificationReceive(title, alert, extras);
|
||||
}
|
||||
|
||||
private Map<String, Object> getNotificationExtras(Intent intent) {
|
||||
Map<String, Object> extrasMap = new HashMap<String, Object>();
|
||||
for (String key : intent.getExtras().keySet()) {
|
||||
if (!IGNORED_EXTRAS_KEYS.contains(key)) {
|
||||
if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
|
||||
extrasMap.put(key, intent.getIntExtra(key, 0));
|
||||
} else {
|
||||
extrasMap.put(key, intent.getStringExtra(key));
|
||||
}
|
||||
}
|
||||
}
|
||||
return extrasMap;
|
||||
}
|
||||
// private void handlingMessageReceive(Intent intent) {
|
||||
// String msg = intent.getStringExtra(JPushInterface.EXTRA_MESSAGE);
|
||||
// Map<String, Object> extras = getNotificationExtras(intent);
|
||||
// JPushPlugin.transmitMessageReceive(msg, extras);
|
||||
// }
|
||||
//
|
||||
// private void handlingNotificationOpen(Context context, Intent intent) {
|
||||
// String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||
// JPushPlugin.openNotificationJson = title;
|
||||
//
|
||||
// String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
|
||||
// JPushPlugin.openNotificationAlert = alert;
|
||||
//
|
||||
// Map<String, Object> extras = getNotificationExtras(intent);
|
||||
// JPushPlugin.openNotificationExtras = extras;
|
||||
//
|
||||
// JPushPlugin.transmitNotificationOpen(title, alert, extras);
|
||||
//
|
||||
// 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);
|
||||
// context.startActivity(launch);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private void handlingNotificationReceive(Context context, Intent intent) {
|
||||
// String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
|
||||
// JPushPlugin.notificationTitle = title;
|
||||
//
|
||||
// String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
|
||||
// JPushPlugin.notificationAlert = alert;
|
||||
//
|
||||
// Map<String, Object> extras = getNotificationExtras(intent);
|
||||
// JPushPlugin.notificationExtras = extras;
|
||||
//
|
||||
// JPushPlugin.transmitNotificationReceive(title, alert, extras);
|
||||
// }
|
||||
//
|
||||
// private Map<String, Object> getNotificationExtras(Intent intent) {
|
||||
// Map<String, Object> extrasMap = new HashMap<String, Object>();
|
||||
// for (String key : intent.getExtras().keySet()) {
|
||||
// if (!IGNORED_EXTRAS_KEYS.contains(key)) {
|
||||
// if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
|
||||
// extrasMap.put(key, intent.getIntExtra(key, 0));
|
||||
// } else {
|
||||
// extrasMap.put(key, intent.getStringExtra(key));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// return extrasMap;
|
||||
// }
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="rectangle"
|
||||
>
|
||||
<corners android:radius="6dp" />
|
||||
<solid android:color="#0A9789" />
|
||||
<stroke android:color="#0A9789" android:width="1dp"/>
|
||||
</shape>
|
||||
5
src/android/res/drawable-hdpi/jpush_btn_blue_bg.xml
Normal file
5
src/android/res/drawable-hdpi/jpush_btn_blue_bg.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#ff2c6bff" />
|
||||
<corners android:radius="25dp" />
|
||||
</shape>
|
||||
6
src/android/res/drawable-hdpi/jpush_btn_grey_bg.xml
Normal file
6
src/android/res/drawable-hdpi/jpush_btn_grey_bg.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#ffffffff" />
|
||||
<stroke android:width="0.1dp"/>
|
||||
<corners android:radius="20dp" />
|
||||
</shape>
|
||||
8
src/android/res/drawable-hdpi/jpush_cancel_btn_bg.xml
Normal file
8
src/android/res/drawable-hdpi/jpush_cancel_btn_bg.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#FFFFFF" />
|
||||
<stroke android:width="1dp"
|
||||
android:color="#E2E3E5"
|
||||
/>
|
||||
<corners android:radius="25dp" />
|
||||
</shape>
|
||||
19
src/android/res/drawable-hdpi/jpush_close.xml
Normal file
19
src/android/res/drawable-hdpi/jpush_close.xml
Normal file
@@ -0,0 +1,19 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="30dp"
|
||||
android:height="30dp"
|
||||
android:viewportWidth="30"
|
||||
android:viewportHeight="30">
|
||||
<path
|
||||
android:pathData="M15,15m-15,0a15,15 0,1 1,30 0a15,15 0,1 1,-30 0"
|
||||
android:strokeWidth="1"
|
||||
android:fillColor="#253044"
|
||||
android:fillAlpha="0.68"
|
||||
android:fillType="evenOdd"
|
||||
android:strokeColor="#00000000"/>
|
||||
<path
|
||||
android:pathData="M19.7356,10.2465C20.0722,10.5832 20.0722,11.129 19.7356,11.4656L16.21,14.99L19.7328,18.5129C20.0696,18.8498 20.0696,19.3959 19.7328,19.7328C19.3959,20.0696 18.8498,20.0696 18.5129,19.7328L14.99,16.21L11.4656,19.7356C11.129,20.0722 10.5832,20.0722 10.2465,19.7356C9.9099,19.3989 9.9099,18.8531 10.2465,18.5165L13.771,14.991L10.2493,11.4692C9.9125,11.1323 9.9125,10.5862 10.2493,10.2493C10.5862,9.9125 11.1323,9.9125 11.4692,10.2493L14.991,13.771L18.5165,10.2465C18.8531,9.9099 19.3989,9.9099 19.7356,10.2465Z"
|
||||
android:strokeWidth="1"
|
||||
android:fillColor="#FFFFFF"
|
||||
android:fillType="evenOdd"
|
||||
android:strokeColor="#00000000"/>
|
||||
</vector>
|
||||
5
src/android/res/drawable-hdpi/jpush_contain_bg.xml
Normal file
5
src/android/res/drawable-hdpi/jpush_contain_bg.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#ffffffff" />
|
||||
<corners android:radius="15dp" />
|
||||
</shape>
|
||||
BIN
src/android/res/drawable-hdpi/jpush_ic_action_cancle.png
Executable file
BIN
src/android/res/drawable-hdpi/jpush_ic_action_cancle.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 551 B |
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close.png
Executable file
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 591 B |
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close2.png
Executable file
BIN
src/android/res/drawable-hdpi/jpush_ic_action_close2.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 759 B |
5
src/android/res/drawable-hdpi/jpush_interstitial_bg.xml
Normal file
5
src/android/res/drawable-hdpi/jpush_interstitial_bg.xml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="#ffffffff" />
|
||||
<corners android:topLeftRadius="0dp" android:topRightRadius="0dp" android:bottomLeftRadius="15dp" android:bottomRightRadius="15dp" />
|
||||
</shape>
|
||||
296
src/android/res/layout-v21/push_notification.xml
Executable file
296
src/android/res/layout-v21/push_notification.xml
Executable 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
Executable file
298
src/android/res/layout-v21/push_notification_large.xml
Executable 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
Executable file
298
src/android/res/layout-v21/push_notification_middle.xml
Executable 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>
|
||||
66
src/android/res/layout/jpush_banner.xml
Normal file
66
src/android/res/layout/jpush_banner.xml
Normal file
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@android:color/transparent">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/banner"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
|
||||
<cn.jpush.android.ui.ShadowViewCard
|
||||
android:id="@+id/bg_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
>
|
||||
<RelativeLayout
|
||||
android:id="@+id/banner_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<cn.jpush.android.ui.RoundedImageView
|
||||
android:id="@+id/image_small"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:layout_marginEnd="8dp"
|
||||
android:scaleType="fitXY"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@+id/image_small"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textColor="#ff253044"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/text_title"
|
||||
android:layout_toRightOf="@+id/image_small"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="2"
|
||||
|
||||
android:textColor="#85253044"
|
||||
android:textSize="18sp" />
|
||||
</RelativeLayout>
|
||||
|
||||
</cn.jpush.android.ui.ShadowViewCard>
|
||||
|
||||
|
||||
<cn.jpush.android.ui.RoundedImageView
|
||||
android:id="@+id/image_only"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitXY"
|
||||
android:visibility="gone" />
|
||||
</RelativeLayout>
|
||||
</FrameLayout>
|
||||
46
src/android/res/layout/jpush_full.xml
Normal file
46
src/android/res/layout/jpush_full.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="fitXY"
|
||||
/>
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/countdown_container"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="right"
|
||||
android:layout_marginTop="20dp"
|
||||
android:layout_marginRight="16dp">
|
||||
|
||||
<TextView
|
||||
android:layout_gravity="right"
|
||||
android:id="@+id/btn_countdown"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/jpush_btn_grey_bg"
|
||||
android:paddingLeft="12dp"
|
||||
android:paddingTop="5dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:paddingRight="12dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:text=""
|
||||
android:textColor="#ff2c6bff"
|
||||
android:textSize="20sp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/jpush_close" />
|
||||
</FrameLayout>
|
||||
|
||||
|
||||
</FrameLayout>
|
||||
85
src/android/res/layout/jpush_inapp_banner.xml
Executable file
85
src/android/res/layout/jpush_inapp_banner.xml
Executable 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>
|
||||
148
src/android/res/layout/jpush_interstitial.xml
Normal file
148
src/android/res/layout/jpush_interstitial.xml
Normal file
@@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="#66000000"
|
||||
android:orientation="vertical">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_marginLeft="20dp"
|
||||
android:layout_marginRight="20dp">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/content_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<cn.jpush.android.ui.RoundedImageView
|
||||
android:id="@+id/image"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="140dp"
|
||||
android:scaleType="fitXY"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/bg_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/jpush_interstitial_bg"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/margeview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:gravity="center"
|
||||
android:text=""
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textColor="#ff253044"
|
||||
android:textSize="22sp" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:maxHeight="130dp"
|
||||
android:scrollbars="vertical"
|
||||
android:text=""
|
||||
android:textColor="#ad253044"
|
||||
android:textSize="18sp"
|
||||
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/btn_parent_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/btn_one"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/jpush_cancel_btn_bg"
|
||||
android:gravity="center"
|
||||
android:paddingTop="10dp"
|
||||
android:paddingBottom="10dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:textColor="#d6253044"
|
||||
android:textSize="20sp" />
|
||||
|
||||
|
||||
|
||||
<TextView
|
||||
android:ellipsize="end"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/btn_two"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:background="@drawable/jpush_btn_blue_bg"
|
||||
android:gravity="center"
|
||||
android:paddingTop="9dp"
|
||||
android:paddingBottom="9dp"
|
||||
android:textColor="#ffffffff"
|
||||
android:textSize="20sp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<cn.jpush.android.ui.RoundedImageView
|
||||
android:id="@+id/image_only"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scaleType="fitXY"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_top_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_above="@+id/frame"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:layout_marginBottom="6dp"
|
||||
android:src="@drawable/jpush_close"
|
||||
android:visibility="gone"
|
||||
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/img_bottom_close"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/frame"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_marginTop="16dp"
|
||||
android:src="@drawable/jpush_close"
|
||||
android:visibility="gone" />
|
||||
</RelativeLayout>
|
||||
@@ -2,10 +2,10 @@
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/popLayoutId"
|
||||
style="@style/MyDialogStyle"
|
||||
style="@style/JPushDialogStyle"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="280dp"
|
||||
android:layout_height="250dp" >
|
||||
android:layout_height="380dp" >
|
||||
|
||||
<WebView
|
||||
android:layout_width="match_parent"
|
||||
|
||||
@@ -13,11 +13,13 @@
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/imgRichpushBtnBack"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="9dp"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginRight="9dp"
|
||||
android:layout_marginTop="8dp"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:background="@drawable/jpush_richpush_btn_selector" />
|
||||
|
||||
<ImageView
|
||||
@@ -35,7 +37,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginLeft="7dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginRight="48dp"
|
||||
android:layout_toRightOf="@id/imgView"
|
||||
android:clickable="false"
|
||||
android:text=" "
|
||||
@@ -50,10 +52,10 @@
|
||||
android:progress="0"
|
||||
android:progressDrawable="@drawable/jpush_richpush_progressbar"
|
||||
style="?android:attr/progressBarStyleHorizontal" />
|
||||
<WebView
|
||||
<!--<WebView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:id="@+id/fullWebView"
|
||||
android:background="#000000" />
|
||||
android:background="#000000" />-->
|
||||
|
||||
</cn.jpush.android.ui.FullScreenView>
|
||||
107
src/android/res/layout/push_download_notification_layout.xml
Normal file
107
src/android/res/layout/push_download_notification_layout.xml
Normal file
@@ -0,0 +1,107 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/jad_root_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="64dp"
|
||||
android:orientation="horizontal"
|
||||
android:padding="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/jad_icon"
|
||||
android:layout_width="44dp"
|
||||
android:layout_height="44dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_marginRight="18dp"
|
||||
android:layout_marginEnd="18dp"
|
||||
android:background="#0A9789"
|
||||
android:duplicateParentState="false"
|
||||
android:scaleType="center" />
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/jad_desc"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:textColor="#000000"
|
||||
android:textSize="14sp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/jad_download_success"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/jad_desc"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone">
|
||||
<TextView
|
||||
android:id="@+id/download_success_size"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="12dp"
|
||||
android:layout_marginEnd="12dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start|center"
|
||||
android:singleLine="true"
|
||||
android:textColor="#000000"
|
||||
android:textSize="12sp"/>
|
||||
<TextView
|
||||
android:id="@+id/jad_download_success_status"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start|center"
|
||||
android:singleLine="true"
|
||||
android:textColor="#000000"
|
||||
android:textSize="11sp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/jad_download_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/jad_desc"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="visible">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/jad_download_size"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="3"
|
||||
android:ellipsize="end"
|
||||
android:gravity="start|center"
|
||||
android:maxLines="1"
|
||||
android:textColor="#000000"
|
||||
android:textSize="11sp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/jad_download_status"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="2"
|
||||
android:ellipsize="end"
|
||||
android:gravity="end|center"
|
||||
android:singleLine="true"
|
||||
android:textColor="#000000"
|
||||
android:textSize="11sp"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/jad_action"
|
||||
android:layout_width="55dp"
|
||||
android:layout_height="30dp"
|
||||
android:layout_gravity="end|center"
|
||||
android:layout_marginLeft="18dp"
|
||||
android:layout_marginStart="18dp"
|
||||
android:layout_weight="0"
|
||||
android:gravity="center"
|
||||
android:background="@drawable/jpush_btn_bg_green_playable"
|
||||
android:textColor="#FFFFFF"
|
||||
android:textSize="12sp"/>
|
||||
</LinearLayout>
|
||||
@@ -3,22 +3,21 @@
|
||||
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"
|
||||
android:paddingBottom="4dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingLeft="8dp"
|
||||
android:paddingRight="8dp"
|
||||
>
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_bg"
|
||||
<FrameLayout
|
||||
android:id="@+id/v"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"/>
|
||||
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:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
@@ -32,9 +31,9 @@
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:layout_marginLeft="6dp"
|
||||
android:scaleType="centerInside"/>
|
||||
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"
|
||||
@@ -42,131 +41,257 @@
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="12sp"/>
|
||||
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:text="· "
|
||||
android:textColor="@android:color/black"
|
||||
android:textSize="20sp"/>
|
||||
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:textColor="@android:color/black"
|
||||
android:textSize="12sp"
|
||||
/>
|
||||
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_centerVertical="true"
|
||||
android:layout_marginRight="8dp"
|
||||
android:scaleType="centerInside"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@android:color/black"
|
||||
android:layout_below="@id/push_notification_layout_lefttop"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_marginLeft="6dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@android:color/black"
|
||||
android:layout_below="@id/push_notification_sub_title"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_marginLeft="6dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
android:textColor="@android:color/black"
|
||||
android:layout_below="@id/push_notification_sub_title"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_marginLeft="6dp"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
/>
|
||||
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:visibility="gone"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
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"/>
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:layout_marginLeft="6dp"
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:orientation="vertical"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<RelativeLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:textSize="12sp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
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_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_style_1_date"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</RelativeLayout>
|
||||
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:textColor="@android:color/black"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end" />
|
||||
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
Executable file
297
src/android/res/layout/push_notification_large.xml
Executable 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
Executable file
297
src/android/res/layout/push_notification_middle.xml
Executable 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,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<style name="MyDialogStyle">
|
||||
<style name="JPushDialogStyle">
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
<item name="android:windowFrame">@null</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
@@ -10,4 +10,13 @@
|
||||
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
|
||||
<item name="android:backgroundDimEnabled">true</item>
|
||||
</style>
|
||||
<style name="JPushTheme">
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="android:windowFullscreen">true</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:textAllCaps">false</item>
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
</style>
|
||||
</resources>
|
||||
10
src/android/res/xml/jpush_file_paths.xml
Normal file
10
src/android/res/xml/jpush_file_paths.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<paths>
|
||||
<root-path name="jad_root_path" path="."/>
|
||||
<external-path name="jad_external_path" path="JAdDownload" />
|
||||
<external-files-path name="jad_external_files_path" path="JAdDownload" />
|
||||
<files-path name="jad_files_path" path="JAdDownload" />
|
||||
<cache-path name="jad_cache_path" path="JAdDownload" />
|
||||
</paths>
|
||||
</resources>
|
||||
@@ -16,11 +16,32 @@
|
||||
@implementation AppDelegate (JPush)
|
||||
|
||||
+(void)load{
|
||||
Method origin1;
|
||||
Method swizzle1;
|
||||
origin1 = class_getInstanceMethod([self class],@selector(init));
|
||||
swizzle1 = class_getInstanceMethod([self class], @selector(init_plus));
|
||||
method_exchangeImplementations(origin1, swizzle1);
|
||||
|
||||
static dispatch_once_t onceToken;
|
||||
dispatch_once(&onceToken, ^{
|
||||
Class class = [self class];
|
||||
|
||||
SEL originalSelector = @selector(init);
|
||||
SEL swizzledSelector = @selector(init_plus);
|
||||
|
||||
Method origin = class_getInstanceMethod(class, originalSelector);
|
||||
Method swizzle = class_getInstanceMethod(class, swizzledSelector);
|
||||
|
||||
BOOL didAddMethod =
|
||||
class_addMethod(class,
|
||||
originalSelector,
|
||||
method_getImplementation(swizzle),
|
||||
method_getTypeEncoding(swizzle));
|
||||
|
||||
if (didAddMethod) {
|
||||
class_replaceMethod(class,
|
||||
swizzledSelector,
|
||||
method_getImplementation(origin),
|
||||
method_getTypeEncoding(origin));
|
||||
} else {
|
||||
method_exchangeImplementations(origin, swizzle);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
-(instancetype)init_plus{
|
||||
|
||||
@@ -52,6 +52,8 @@ static NSMutableDictionary *_jpushEventCache;
|
||||
-(void)stopPush:(CDVInvokedUrlCommand*)command;
|
||||
-(void)resumePush:(CDVInvokedUrlCommand*)command;
|
||||
-(void)isPushStopped:(CDVInvokedUrlCommand*)command;
|
||||
// 检查推送是否被停止(iOS 6.0.0+ 推荐,替代 isPushStopped)
|
||||
-(void)getPushStatus:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
//开关日志
|
||||
-(void)setDebugModeFromIos:(CDVInvokedUrlCommand*)command;
|
||||
@@ -73,10 +75,17 @@ static NSMutableDictionary *_jpushEventCache;
|
||||
-(void)addDismissActions:(CDVInvokedUrlCommand*)command;
|
||||
-(void)addNotificationActions:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
// 设置手机号
|
||||
-(void)setMobileNumber:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
// 设置进入后台是否允许长连接 (iOS 5.9.0+)
|
||||
-(void)setBackgroundEnable:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
/*
|
||||
* 以下为js中可监听到的事件
|
||||
* jpush.openNotification 点击推送消息启动或唤醒app
|
||||
* jpush.receiveMessage 收到自定义消息
|
||||
* jpush.receiveNotifyButtonClick 收到通知栏自定义按钮点击事件
|
||||
* jpush.receiveNotification 前台收到推送
|
||||
* jpush.backgroundNotification 后台收到推送
|
||||
*/
|
||||
|
||||
@@ -48,6 +48,18 @@
|
||||
[self handleResultWithValue:result command:command];
|
||||
}
|
||||
|
||||
-(void)getPushStatus:(CDVInvokedUrlCommand*)command{
|
||||
WEAK_SELF(weakSelf)
|
||||
[JPUSHService getPushStatus:^(NSInteger iResCode, BOOL isStopped) {
|
||||
NSDictionary *result = @{
|
||||
@"code": @(iResCode),
|
||||
@"isStopped": isStopped ? @1 : @0
|
||||
};
|
||||
CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:result];
|
||||
[weakSelf.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)initial:(CDVInvokedUrlCommand*)command{
|
||||
//do nithng,because Cordova plugin use lazy load mode.
|
||||
}
|
||||
@@ -61,7 +73,7 @@
|
||||
|
||||
#else
|
||||
|
||||
- (CDVPlugin*)initWithWebView:(UIWebView*)theWebView{
|
||||
- (CDVPlugin*)initWithWebView:(WKWebView*)theWebView{
|
||||
NSLog(@"### initWithWebView ");
|
||||
if (self=[super initWithWebView:theWebView]) {
|
||||
}
|
||||
@@ -510,6 +522,35 @@
|
||||
[[UNUserNotificationCenter currentNotificationCenter] setNotificationCategories:[NSSet setWithObject:category]];
|
||||
}
|
||||
|
||||
#pragma mark - 设置手机号
|
||||
-(void)setMobileNumber:(CDVInvokedUrlCommand *)command {
|
||||
NSDictionary* params = [command.arguments objectAtIndex:0];
|
||||
NSNumber* sequence = params[@"sequence"];
|
||||
NSString* number = params[@"mobileNumber"];
|
||||
[JPUSHService setMobileNumber:number completion:^(NSError *error) {
|
||||
NSMutableDictionary* dic = [[NSMutableDictionary alloc] init];
|
||||
[dic setObject:sequence forKey:@"sequence"];
|
||||
CDVPluginResult* result;
|
||||
if (error) {
|
||||
[dic setValue:[NSNumber numberWithUnsignedInteger:error.code] forKey:@"code"];
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:dic];
|
||||
}
|
||||
else {
|
||||
// success
|
||||
[dic setObject:number forKey:@"mobileNumber"];
|
||||
result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:dic];
|
||||
}
|
||||
[self.commandDelegate sendPluginResult:result callbackId:command.callbackId];
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - 设置进入后台是否允许长连接 (iOS 5.9.0+)
|
||||
-(void)setBackgroundEnable:(CDVInvokedUrlCommand *)command {
|
||||
NSNumber* isEnable = [command argumentAtIndex:0];
|
||||
[JPUSHService setBackgroundEnable:[isEnable boolValue]];
|
||||
}
|
||||
|
||||
#pragma mark - 内部方法
|
||||
|
||||
+(void)setupJPushSDK:(NSDictionary*)userInfo{
|
||||
|
||||
@@ -1,686 +0,0 @@
|
||||
/*
|
||||
* | | | | \ \ / / | | | | / _______|
|
||||
* | |____| | \ \/ / | |____| | / /
|
||||
* | |____| | \ / | |____| | | | _____
|
||||
* | | | | / \ | | | | | | |____ |
|
||||
* | | | | / /\ \ | | | | \ \______| |
|
||||
* | | | | /_/ \_\ | | | | \_________|
|
||||
*
|
||||
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
|
||||
*/
|
||||
|
||||
#define JPUSH_VERSION_NUMBER 3.2.1
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class CLRegion;
|
||||
@class UILocalNotification;
|
||||
@class CLLocation;
|
||||
@class UNNotificationCategory;
|
||||
@class UNNotificationSettings;
|
||||
@class UNNotificationRequest;
|
||||
@class UNNotification;
|
||||
@protocol JPUSHRegisterDelegate;
|
||||
@protocol JPUSHGeofenceDelegate;
|
||||
|
||||
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);
|
||||
|
||||
extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
|
||||
extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
|
||||
extern NSString *const kJPFNetworkDidCloseNotification; // 关闭连接
|
||||
extern NSString *const kJPFNetworkDidRegisterNotification; // 注册成功
|
||||
extern NSString *const kJPFNetworkFailedRegisterNotification; //注册失败
|
||||
extern NSString *const kJPFNetworkDidLoginNotification; // 登录成功
|
||||
extern NSString *const kJPFNetworkDidReceiveMessageNotification; // 收到消息(非APNS)
|
||||
extern NSString *const kJPFServiceErrorNotification; // 错误提示
|
||||
|
||||
typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
JPAuthorizationOptionNone = 0, // the application may not present any UI upon a notification being received
|
||||
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.
|
||||
|
||||
};
|
||||
|
||||
/*!
|
||||
* 通知注册实体类
|
||||
*/
|
||||
@interface JPUSHRegisterEntity : NSObject
|
||||
|
||||
/*!
|
||||
* 支持的类型
|
||||
* badge,sound,alert
|
||||
*/
|
||||
@property (nonatomic, assign) NSInteger types;
|
||||
/*!
|
||||
* 注入的类别
|
||||
* iOS10 UNNotificationCategory
|
||||
* iOS8-iOS9 UIUserNotificationCategory
|
||||
*/
|
||||
@property (nonatomic, strong) NSSet *categories;
|
||||
@end
|
||||
|
||||
/*!
|
||||
* 进行删除、查找推送实体类
|
||||
*/
|
||||
@interface JPushNotificationIdentifier : NSObject<NSCopying, NSCoding>
|
||||
|
||||
@property (nonatomic, copy) NSArray<NSString *> *identifiers; // 推送的标识数组
|
||||
@property (nonatomic, copy) UILocalNotification *notificationObj NS_DEPRECATED_IOS(4_0, 10_0); // iOS10以下可以传UILocalNotification对象数据,iOS10以上无效
|
||||
@property (nonatomic, assign) BOOL delivered NS_AVAILABLE_IOS(10_0); // 在通知中心显示的或待推送的标志,默认为NO,YES表示在通知中心显示的,NO表示待推送的
|
||||
@property (nonatomic, copy) void (^findCompletionHandler)(NSArray *results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组)
|
||||
|
||||
@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
|
||||
|
||||
|
||||
/*!
|
||||
* 推送内容实体类
|
||||
*/
|
||||
@interface JPushNotificationContent : NSObject<NSCopying, NSCoding>
|
||||
|
||||
@property (nonatomic, copy) NSString *title; // 推送标题
|
||||
@property (nonatomic, copy) NSString *subtitle; // 推送副标题
|
||||
@property (nonatomic, copy) NSString *body; // 推送内容
|
||||
@property (nonatomic, copy) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1)
|
||||
@property (nonatomic, copy) NSString *action NS_DEPRECATED_IOS(8_0, 10_0); // 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动",iOS10以上无效)
|
||||
@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以上有效。
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
* 推送触发方式实体类
|
||||
* 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数
|
||||
*/
|
||||
@interface JPushNotificationTrigger : NSObject<NSCopying, NSCoding>
|
||||
|
||||
@property (nonatomic, assign) BOOL repeat; // 设置是否重复,默认为NO
|
||||
@property (nonatomic, copy) NSDate *fireDate NS_DEPRECATED_IOS(2_0, 10_0); // 用来设置触发推送的时间,iOS10以上无效
|
||||
@property (nonatomic, copy) CLRegion *region NS_AVAILABLE_IOS(8_0); // 用来设置触发推送的位置,iOS8以上有效,iOS10以上优先级为I,应用需要有允许使用定位的授权
|
||||
@property (nonatomic, copy) NSDateComponents *dateComponents NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的日期时间,iOS10以上有效,优先级为II
|
||||
@property (nonatomic, assign) NSTimeInterval timeInterval NS_AVAILABLE_IOS(10_0); // 用来设置触发推送的时间,iOS10以上有效,优先级为III
|
||||
|
||||
@end
|
||||
|
||||
/*!
|
||||
* 注册或更新推送实体类
|
||||
*/
|
||||
@interface JPushNotificationRequest : NSObject<NSCopying, NSCoding>
|
||||
|
||||
@property (nonatomic, copy) NSString *requestIdentifier; // 推送请求标识
|
||||
@property (nonatomic, copy) JPushNotificationContent *content; // 设置推送的具体内容
|
||||
@property (nonatomic, copy) JPushNotificationTrigger *trigger; // 设置推送的触发方式
|
||||
@property (nonatomic, copy) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil
|
||||
|
||||
@end
|
||||
|
||||
/*!
|
||||
* JPush 核心头文件
|
||||
*/
|
||||
@interface JPUSHService : NSObject
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Setup 启动相关
|
||||
///----------------------------------------------------
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 启动SDK
|
||||
*
|
||||
* @param launchingOption 启动参数.
|
||||
* @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识.
|
||||
* @param channel 发布渠道. 可选.
|
||||
* @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
|
||||
* App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致.
|
||||
*
|
||||
* @discussion 提供SDK启动必须的参数, 来启动 SDK.
|
||||
* 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
|
||||
*/
|
||||
+ (void)setupWithOption:(NSDictionary *)launchingOption
|
||||
appKey:(NSString *)appKey
|
||||
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
|
||||
apsForProduction:(BOOL)isProduction
|
||||
advertisingIdentifier:(NSString *)advertisingId;
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name APNs about 通知相关
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 注册要处理的远程通知类型
|
||||
*
|
||||
* @param types 通知类型
|
||||
* @param categories 类别组
|
||||
*
|
||||
*/
|
||||
+ (void)registerForRemoteNotificationTypes:(NSUInteger)types
|
||||
categories:(NSSet *)categories;
|
||||
/*!
|
||||
* @abstract 新版本的注册方法(兼容iOS10)
|
||||
*
|
||||
* @param config 注册通知配置
|
||||
* @param delegate 代理
|
||||
*
|
||||
*/
|
||||
+ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(id<JPUSHRegisterDelegate>)delegate;
|
||||
|
||||
|
||||
+ (void)registerDeviceToken:(NSData *)deviceToken;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 处理收到的 APNs 消息
|
||||
*/
|
||||
+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
|
||||
|
||||
/*!
|
||||
* Tags操作接口
|
||||
* 支持增加/覆盖/删除/清空/查询操作
|
||||
* 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
|
||||
*/
|
||||
|
||||
/**
|
||||
增加tags
|
||||
|
||||
@param tags 需要增加的tags集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)addTags:(NSSet<NSString *> *)tags
|
||||
completion:(JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
覆盖tags
|
||||
调用该接口会覆盖用户所有的tags
|
||||
|
||||
@param tags 需要设置的tags集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setTags:(NSSet<NSString *> *)tags
|
||||
completion:(JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
删除指定tags
|
||||
|
||||
@param tags 需要删除的tags集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteTags:(NSSet<NSString *> *)tags
|
||||
completion:(JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
清空所有tags
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)cleanTags:(JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
查询全部tags
|
||||
|
||||
@param completion 响应回调,请在回调中获取查询结果
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)getAllTags:(JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
验证tag是否绑定
|
||||
|
||||
@param completion 响应回调,回调中查看是否绑定
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)validTag:(NSString *)tag
|
||||
completion:(JPUSHTagValidOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
设置Alias
|
||||
|
||||
@param alias 需要设置的alias
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setAlias:(NSString *)alias
|
||||
completion:(JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
删除alias
|
||||
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteAlias:(JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
查询当前alias
|
||||
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)getAlias:(JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 过滤掉无效的 tags
|
||||
*
|
||||
* @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags.
|
||||
* 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤.
|
||||
*/
|
||||
+ (NSSet *)filterValidTags:(NSSet *)tags;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Stats 统计功能
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 开始记录页面停留
|
||||
*
|
||||
* @param pageName 页面名称
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 停止记录页面停留
|
||||
*
|
||||
* @param pageName 页面
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (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 __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 开启Crash日志收集
|
||||
*
|
||||
* @discussion 默认是关闭状态.
|
||||
*/
|
||||
+ (void)crashLogON;
|
||||
|
||||
/*!
|
||||
* @abstract 地理位置上报
|
||||
*
|
||||
* @param latitude 纬度.
|
||||
* @param longitude 经度.
|
||||
*
|
||||
*/
|
||||
+ (void)setLatitude:(double)latitude longitude:(double)longitude;
|
||||
|
||||
/*!
|
||||
* @abstract 地理位置上报
|
||||
*
|
||||
* @param location 直接传递 CLLocation * 型的地理信息
|
||||
*
|
||||
* @discussion 需要链接 CoreLocation.framework 并且 #import <CoreLocation/CoreLocation.h>
|
||||
*/
|
||||
+ (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 本地通知
|
||||
///----------------------------------------------------
|
||||
/*!
|
||||
* @abstract 注册或更新推送 (支持iOS10,并兼容iOS10以下版本)
|
||||
*
|
||||
* JPush 2.1.9新接口
|
||||
* @param request JPushNotificationRequest类型,设置推送的属性,设置已有推送的request.requestIdentifier即更新已有的推送,否则为注册新推送,更新推送仅仅在iOS10以上有效,结果通过request.completionHandler返回
|
||||
* @discussion 旧的注册本地推送接口被废弃,使用此接口可以替换
|
||||
*
|
||||
*/
|
||||
+ (void)addNotification:(JPushNotificationRequest *)request;
|
||||
|
||||
/*!
|
||||
* @abstract 移除推送 (支持iOS10,并兼容iOS10以下版本)
|
||||
*
|
||||
* JPush 2.1.9新接口
|
||||
* @param identifier JPushNotificationIdentifier类型,iOS10以上identifier设置为nil,则移除所有在通知中心显示推送和待推送请求,也可以通过设置identifier.delivered和identifier.identifiers来移除相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则移除相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier设置为nil,则移除所有推送,identifier.delivered属性无效,另外可以通过identifier.notificationObj传入特定推送对象来移除此推送。
|
||||
* @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换
|
||||
*
|
||||
*/
|
||||
+ (void)removeNotification:(JPushNotificationIdentifier *)identifier;
|
||||
|
||||
/*!
|
||||
* @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)返回相应对象数组。
|
||||
* @discussion 旧的查找推送接口被废弃,使用此接口可以替换
|
||||
*
|
||||
*/
|
||||
+ (void)findNotification:(JPushNotificationIdentifier *)identifier;
|
||||
|
||||
/*!
|
||||
* @abstract 本地推送,最多支持64个
|
||||
*
|
||||
* @param fireDate 本地推送触发的时间
|
||||
* @param alertBody 本地推送需要显示的内容
|
||||
* @param badge 角标的数字。如果不需要改变角标传-1
|
||||
* @param alertAction 弹框的按钮显示的内容(IOS 8默认为"打开", 其他默认为"启动")
|
||||
* @param notificationKey 本地推送标示符
|
||||
* @param userInfo 自定义参数,可以用来标识推送和增加附加信息
|
||||
* @param soundName 自定义通知声音,设置为nil为默认声音
|
||||
*
|
||||
* @discussion 最多支持 64 个定义,此方法被[addNotification:]方法取代
|
||||
*/
|
||||
+ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
|
||||
alertBody:(NSString *)alertBody
|
||||
badge:(int)badge
|
||||
alertAction:(NSString *)alertAction
|
||||
identifierKey:(NSString *)notificationKey
|
||||
userInfo:(NSDictionary *)userInfo
|
||||
soundName:(NSString *)soundName __attribute__((deprecated("JPush 2.1.9 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 本地推送 (支持 iOS8 新参数)
|
||||
*
|
||||
* IOS8新参数
|
||||
* @param region 自定义参数
|
||||
* @param regionTriggersOnce 自定义参数
|
||||
* @param category 自定义参数
|
||||
* @discussion 此方法被[addNotification:]方法取代
|
||||
*/
|
||||
+ (UILocalNotification *)setLocalNotification:(NSDate *)fireDate
|
||||
alertBody:(NSString *)alertBody
|
||||
badge:(int)badge
|
||||
alertAction:(NSString *)alertAction
|
||||
identifierKey:(NSString *)notificationKey
|
||||
userInfo:(NSDictionary *)userInfo
|
||||
soundName:(NSString *)soundName
|
||||
region:(CLRegion *)region
|
||||
regionTriggersOnce:(BOOL)regionTriggersOnce
|
||||
category:(NSString *)category NS_AVAILABLE_IOS(8_0) __attribute__((deprecated("JPush 2.1.9 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 前台展示本地推送
|
||||
*
|
||||
* @param notification 本地推送对象
|
||||
* @param notificationKey 需要前台显示的本地推送通知的标示符
|
||||
*
|
||||
* @discussion 默认App在前台运行时不会进行弹窗,在程序接收通知调用此接口可实现指定的推送弹窗。--iOS10以下还可继续使用,iOS10以上在[UNUserNotificationCenterDelegate willPresentNotification:withCompletionHandler:]方法中调用completionHandler(UNNotificationPresentationOptionSound | UNNotificationPresentationOptionAlert);即可
|
||||
*/
|
||||
+ (void)showLocalNotificationAtFront:(UILocalNotification *)notification
|
||||
identifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
|
||||
/*!
|
||||
* @abstract 删除本地推送定义
|
||||
*
|
||||
* @param notificationKey 本地推送标示符
|
||||
* @discussion 此方法被[removeNotification:]方法取代
|
||||
*/
|
||||
+ (void)deleteLocalNotificationWithIdentifierKey:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 删除本地推送定义
|
||||
* @discussion 此方法被[removeNotification:]方法取代
|
||||
*/
|
||||
+ (void)deleteLocalNotification:(UILocalNotification *)localNotification __attribute__((deprecated("JPush 2.1.9 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 获取指定通知
|
||||
*
|
||||
* @param notificationKey 本地推送标示符
|
||||
* @return 本地推送对象数组, [array count]为0时表示没找到
|
||||
* @discussion 此方法被[findNotification:]方法取代
|
||||
*/
|
||||
+ (NSArray *)findLocalNotificationWithIdentifier:(NSString *)notificationKey __attribute__((deprecated("JPush 2.1.9 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 清除所有本地推送对象
|
||||
* @discussion 此方法被[removeNotification:]方法取代
|
||||
*/
|
||||
+ (void)clearAllLocalNotifications __attribute__((deprecated("JPush 2.1.9 版本已过期")));
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Server badge 服务器端 badge 功能
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 设置角标(到服务器)
|
||||
*
|
||||
* @param value 新的值. 会覆盖服务器上保存的值(这个用户)
|
||||
*
|
||||
* @discussion 本接口不会改变应用本地的角标值.
|
||||
* 本地仍须调用 UIApplication:setApplicationIconBadgeNumber 函数来设置脚标.
|
||||
*
|
||||
* 本接口用于配合 JPush 提供的服务器端角标功能.
|
||||
* 该功能解决的问题是, 服务器端推送 APNs 时, 并不知道客户端原来已经存在的角标是多少, 指定一个固定的数字不太合理.
|
||||
*
|
||||
* JPush 服务器端脚标功能提供:
|
||||
*
|
||||
* - 通过本 API 把当前客户端(当前这个用户的) 的实际 badge 设置到服务器端保存起来;
|
||||
* - 调用服务器端 API 发 APNs 时(通常这个调用是批量针对大量用户),
|
||||
* 使用 "+1" 的语义, 来表达需要基于目标用户实际的 badge 值(保存的) +1 来下发通知时带上新的 badge 值;
|
||||
*/
|
||||
+ (BOOL)setBadge:(NSInteger)value;
|
||||
|
||||
/*!
|
||||
* @abstract 重置脚标(为0)
|
||||
*
|
||||
* @discussion 相当于 [setBadge:0] 的效果.
|
||||
* 参考 [JPUSHService setBadge:] 说明来理解其作用.
|
||||
*/
|
||||
+ (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 日志与其他
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract JPush标识此设备的 registrationID
|
||||
*
|
||||
* @discussion SDK注册成功后, 调用此接口获取到 registrationID 才能够获取到.
|
||||
*
|
||||
* JPush 支持根据 registrationID 来进行推送.
|
||||
* 如果你需要此功能, 应该通过此接口获取到 registrationID 后, 上报到你自己的服务器端, 并保存下来.
|
||||
* registrationIDCompletionHandler:是新增的获取registrationID的方法,需要在block中获取registrationID,resCode为返回码,模拟器调用此接口resCode返回1011,registrationID返回nil.
|
||||
* 更多的理解请参考 JPush 的文档网站.
|
||||
*/
|
||||
+ (NSString *)registrationID;
|
||||
|
||||
+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
|
||||
|
||||
/*!
|
||||
* @abstract 打开日志级别到 Debug
|
||||
*
|
||||
* @discussion JMessage iOS 的日志系统参考 Android 设计了级别.
|
||||
* 从低到高是: Verbose, Debug, Info, Warning, Error.
|
||||
* 对日志级别的进一步理解, 请参考 Android 相关的说明.
|
||||
*
|
||||
* SDK 默认开启的日志级别为: Info. 只显示必要的信息, 不打印调试日志.
|
||||
*
|
||||
* 请在SDK启动后调用本接口,调用本接口可打开日志级别为: Debug, 打印调试日志.
|
||||
*/
|
||||
+ (void)setDebugMode;
|
||||
|
||||
/*!
|
||||
* @abstract 关闭日志
|
||||
*
|
||||
* @discussion 关于日志级别的说明, 参考 [JPUSHService setDebugMode]
|
||||
*
|
||||
* 虽说是关闭日志, 但还是会打印 Warning, Error 日志. 这二种日志级别, 在程序运行正常时, 不应有打印输出.
|
||||
*
|
||||
* 建议在发布的版本里, 调用此接口, 关闭掉日志打印.
|
||||
*/
|
||||
+ (void)setLogOFF;
|
||||
|
||||
///----------------------------------------------------
|
||||
///********************下列方法已过期********************
|
||||
///**************请使用新版tag/alias操作接口**************
|
||||
///----------------------------------------------------
|
||||
/// @name Tag alias setting 设置别名与标签
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* 下面的接口是可选的
|
||||
* 设置标签和(或)别名(若参数为nil,则忽略;若是空对象,则清空;详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
|
||||
* setTags:alias:fetchCompletionHandle:是新的设置标签别名的方法,不再需要显示声明回调函数,只需要在block里面处理设置结果即可.
|
||||
* WARN: 使用block时需要注意循环引用问题
|
||||
*/
|
||||
+ (void) setTags:(NSSet *)tags
|
||||
alias:(NSString *)alias
|
||||
callbackSelector:(SEL)cbSelector
|
||||
target:(id)theTarget __attribute__((deprecated("JPush 2.1.1 版本已过期")));
|
||||
+ (void) setTags:(NSSet *)tags
|
||||
alias:(NSString *)alias
|
||||
callbackSelector:(SEL)cbSelector
|
||||
object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
|
||||
+ (void) setTags:(NSSet *)tags
|
||||
callbackSelector:(SEL)cbSelector
|
||||
object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
|
||||
+ (void)setTags:(NSSet *)tags
|
||||
alias:(NSString *)alias
|
||||
fetchCompletionHandle:(void (^)(int iResCode, NSSet *iTags, NSString *iAlias))completionHandler __attribute__((deprecated("JPush 3.0.6 版本已过期")));
|
||||
+ (void) setTags:(NSSet *)tags
|
||||
aliasInbackground:(NSString *)alias __attribute__((deprecated("JPush 3.0.6 版本已过期")));
|
||||
+ (void)setAlias:(NSString *)alias
|
||||
callbackSelector:(SEL)cbSelector
|
||||
object:(id)theTarget __attribute__((deprecated("JPush 3.0.6 版本已过期")));
|
||||
|
||||
@end
|
||||
|
||||
@class UNUserNotificationCenter;
|
||||
@class UNNotificationResponse;
|
||||
|
||||
@protocol JPUSHRegisterDelegate <NSObject>
|
||||
|
||||
/*
|
||||
* @brief handle UserNotifications.framework [willPresentNotification:withCompletionHandler:]
|
||||
* @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
|
||||
* @param notification 前台得到的的通知对象
|
||||
* @param completionHandler 该callback中的options 请使用UNNotificationPresentationOptions
|
||||
*/
|
||||
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger options))completionHandler;
|
||||
/*
|
||||
* @brief handle UserNotifications.framework [didReceiveNotificationResponse:withCompletionHandler:]
|
||||
* @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
|
||||
* @param response 通知响应对象
|
||||
* @param 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:(nullable UNNotification *)notification NS_AVAILABLE_IOS(12.0);
|
||||
|
||||
@end
|
||||
|
||||
@protocol JPUSHGeofenceDelegate <NSObject>
|
||||
|
||||
/**
|
||||
进入地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString * _Nonnull)geofenceId didEnterRegion:(NSDictionary * _Nullable)userInfo error:(NSError * _Nullable)error;
|
||||
|
||||
/**
|
||||
离开地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString * _Nonnull)geofenceId didExitRegion:(NSDictionary * _Nullable)userInfo error:(NSError * _Nullable)error;
|
||||
|
||||
@end
|
||||
Binary file not shown.
@@ -5,6 +5,7 @@ var JPushPlugin = function() {};
|
||||
JPushPlugin.prototype.receiveMessage = {};
|
||||
JPushPlugin.prototype.openNotification = {};
|
||||
JPushPlugin.prototype.receiveNotification = {};
|
||||
JPushPlugin.prototype.notifyButtonClick = {};
|
||||
|
||||
JPushPlugin.prototype.isPlatformIOS = function() {
|
||||
return (
|
||||
@@ -59,6 +60,12 @@ JPushPlugin.prototype.setDebugMode = function(mode) {
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setDataInsightsEnable = function(mode) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setDataInsightsEnable", [mode], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.getRegistrationID = function(successCallback) {
|
||||
this.callNative("getRegistrationID", [], successCallback);
|
||||
};
|
||||
@@ -75,6 +82,14 @@ JPushPlugin.prototype.isPushStopped = function(successCallback) {
|
||||
this.callNative("isPushStopped", [], successCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 检查推送是否被停止(推荐,SDK 6.0+ 新增接口,替代 isPushStopped)
|
||||
* @param successCallback 回调 (result) => {},result 为 { code: number, isStopped: 0|1 },code 为 0 表示成功,isStopped 为 1 表示已停止
|
||||
*/
|
||||
JPushPlugin.prototype.getPushStatus = function(successCallback) {
|
||||
this.callNative("getPushStatus", [], successCallback);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearLocalNotifications = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("clearLocalNotifications", [], null);
|
||||
@@ -369,6 +384,28 @@ JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) {
|
||||
this.receiveMessage = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.receiveMessage", this.receiveMessage);
|
||||
};
|
||||
JPushPlugin.prototype.receiveInAppMessageClickCallback = function(data) {
|
||||
if (device.platform === "Android") {
|
||||
data = JSON.stringify(data);
|
||||
this.receiveMessage = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.receiveInAppMessageClick", this.receiveMessage);
|
||||
}
|
||||
};
|
||||
JPushPlugin.prototype.receiveInAppMessageShowCallback = function(data) {
|
||||
if (device.platform === "Android") {
|
||||
data = JSON.stringify(data);
|
||||
this.receiveMessage = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.receiveInAppMessageShow", this.receiveMessage);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.receiveNotifyButtonClickCallback = function(data) {
|
||||
if (device.platform === "Android") {
|
||||
data = JSON.stringify(data);
|
||||
this.notifyButtonClick = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.receiveNotifyButtonClick", this.notifyButtonClick);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) {
|
||||
data = JSON.stringify(data);
|
||||
@@ -475,6 +512,45 @@ JPushPlugin.prototype.setMaxGeofenceNumber = function(maxNumber) {
|
||||
}
|
||||
};
|
||||
|
||||
//设置角标
|
||||
JPushPlugin.prototype.setBadgeNumber = function(badgeNumb) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setBadgeNumber", [badgeNumb], null);
|
||||
}
|
||||
};
|
||||
|
||||
//设备是否同意隐私协议
|
||||
JPushPlugin.prototype.setAuth = function(isAuth){
|
||||
if(device.platform === "Android"){
|
||||
this.callNative("setAuth", [isAuth], null);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置手机号。
|
||||
*
|
||||
* @param params = { 'sequence': number, 'mobileNumber': string }
|
||||
*/
|
||||
JPushPlugin.prototype.setMobileNumber = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("setMobileNumber", [params], successCallback, errorCallback);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* 设置进入后台是否允许长连接 (iOS 5.9.0+)
|
||||
*
|
||||
* @param isEnable boolean 是否允许长连接
|
||||
*/
|
||||
JPushPlugin.prototype.setBackgroundEnable = function(isEnable) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative("setBackgroundEnable", [isEnable], null);
|
||||
}
|
||||
};
|
||||
|
||||
if (!window.plugins) {
|
||||
window.plugins = {};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user