mirror of
https://github.com/jpush/jpush-phonegap-plugin.git
synced 2025-05-25 06:24:46 +08:00
Compare commits
187 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
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 | ||
![]() |
07466a8718 | ||
![]() |
2b5d59e32e | ||
![]() |
e4b70a561a | ||
![]() |
da8c6c29e9 | ||
![]() |
2ebacad254 | ||
![]() |
9751b15bf0 | ||
![]() |
b5fd5aa51a | ||
![]() |
ee3e6b9e75 | ||
![]() |
72407b0b9c | ||
![]() |
2a427c70f9 | ||
![]() |
bc12d3c606 | ||
![]() |
9b1bff2ce1 | ||
![]() |
3b5fc629dd | ||
![]() |
fa4f3ac0d7 | ||
![]() |
3ad9a415e9 | ||
![]() |
d76d01c856 | ||
![]() |
b7d4ba5111 | ||
![]() |
7c326599aa | ||
![]() |
2adbba2943 | ||
![]() |
5b22d798cb | ||
![]() |
eb624a7bb2 | ||
![]() |
e29f00f77f | ||
![]() |
1ecb2b273a | ||
![]() |
6767af7488 | ||
![]() |
03eab0c59e | ||
![]() |
23ae6ad342 | ||
![]() |
ccfffc9a69 | ||
![]() |
16c3c96844 | ||
![]() |
b2e818e88d | ||
![]() |
5a8a926c50 | ||
![]() |
0903b58270 | ||
![]() |
f0dc403ca8 | ||
![]() |
5c53749171 | ||
![]() |
68bb0ebfdf | ||
![]() |
30fc85fc8d | ||
![]() |
fa0ca5f335 | ||
![]() |
8de93a3a07 | ||
![]() |
a4c17d3882 | ||
![]() |
1d420b5bb6 | ||
![]() |
d69f50915c | ||
![]() |
e26d8448a0 | ||
![]() |
387eaa1aff | ||
![]() |
45785a569c | ||
![]() |
0c8a6d25a6 | ||
![]() |
529f08df88 | ||
![]() |
e60d7c2b8c | ||
![]() |
265d88e766 | ||
![]() |
894c7d7ac1 | ||
![]() |
aabc1453b8 | ||
![]() |
6f78522cca | ||
![]() |
ff735854ec | ||
![]() |
e63f9d1774 | ||
![]() |
f9a5cef603 | ||
![]() |
ef8b1a7b4c | ||
![]() |
82d68c3562 | ||
![]() |
bdaeb5dbec | ||
![]() |
0677094086 | ||
![]() |
1d0d972737 | ||
![]() |
3186de6111 | ||
![]() |
9cb75a85db | ||
![]() |
c022a06461 | ||
![]() |
cc7328ad77 | ||
![]() |
b5d3661240 | ||
![]() |
1ae98e13e6 | ||
![]() |
27cdf61ff3 | ||
![]() |
1fb87d8fba | ||
![]() |
a0e408f05f | ||
![]() |
2d71db888f | ||
![]() |
1bfd8a2836 | ||
![]() |
6c80b47bad | ||
![]() |
179220874e | ||
![]() |
5e85c6b5b0 | ||
![]() |
c526a26231 | ||
![]() |
0380fbdc60 | ||
![]() |
9c888aa964 | ||
![]() |
14f03abce6 | ||
![]() |
4b554fa2ca | ||
![]() |
4085787f95 | ||
![]() |
1eaf73a8d3 | ||
![]() |
6c2bc206e3 | ||
![]() |
10b457d489 | ||
![]() |
5b0613628b | ||
![]() |
6f77da5f41 | ||
![]() |
24328f2ac9 | ||
![]() |
8ccdbd525b | ||
![]() |
67421b5091 | ||
![]() |
54b653e442 | ||
![]() |
8487d9c823 | ||
![]() |
7549e347b7 | ||
![]() |
a6fc0bc7a1 | ||
![]() |
7a4943e820 | ||
![]() |
05b3fb1b82 | ||
![]() |
f6ece7dd1e | ||
![]() |
b282d70b2f | ||
![]() |
82c6532d12 | ||
![]() |
b8f79dd130 | ||
![]() |
1e2a4ce0e4 | ||
![]() |
c708f396bd | ||
![]() |
8b2a0daecc | ||
![]() |
469af4fcd3 | ||
![]() |
494df2e527 | ||
![]() |
031acb9631 | ||
![]() |
8d098d29b1 | ||
![]() |
a9343ac776 | ||
![]() |
de58071773 | ||
![]() |
13341fd68a | ||
![]() |
edf29bbc8d | ||
![]() |
ae54960da4 | ||
![]() |
ea6011635f | ||
![]() |
0829104534 | ||
![]() |
592d5a5fb9 | ||
![]() |
4753174bda | ||
![]() |
3f077e32fd | ||
![]() |
5c569d00da | ||
![]() |
c5f7963425 | ||
![]() |
a4eaf51455 | ||
![]() |
04fae7d538 | ||
![]() |
8e087e102a | ||
![]() |
35c09c0c92 | ||
![]() |
f0a87962e7 |
.gitignoreREADME.md
doc
example
ionic
package.jsonplugin.xmlsrc
android
JLogger.javaJPushEventReceiver.javaJPushPlugin.javaJPushReceiver.javaPushService.java
libs
res
drawable-hdpi
jpush_btn_bg_green_playable.xmljpush_btn_blue_bg.xmljpush_btn_grey_bg.xmljpush_cancel_btn_bg.xmljpush_close.xmljpush_contain_bg.xmljpush_ic_action_cancle.pngjpush_ic_action_close.pngjpush_ic_action_close2.pngjpush_ic_richpush_actionbar_back.pngjpush_ic_richpush_actionbar_divider.pngjpush_interstitial_bg.xmljpush_richpush_btn_selector.xmljpush_richpush_progressbar.xml
layout-v21
layout
jpush_banner.xmljpush_full.xmljpush_inapp_banner.xmljpush_interstitial.xmljpush_popwin_layout.xmljpush_webview_layout.xmlpush_download_notification_layout.xmlpush_notification.xmlpush_notification_large.xmlpush_notification_middle.xmltest_notification_layout.xml
values-zh
values
xml
ios
www
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,5 +1,5 @@
|
||||
# Created by https://www.gitignore.io/api/macos,apachecordova
|
||||
|
||||
.idea
|
||||
### ApacheCordova ###
|
||||
# Apache Cordova generated files and directories
|
||||
bin/*
|
||||
|
45
README.md
45
README.md
@ -1,7 +1,7 @@
|
||||
# JPush PhoneGap / Cordova Plugin
|
||||
|
||||
[](https://travis-ci.org/jpush/jpush-phonegap-plugin)
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin/releases)
|
||||
[](https://github.com/jpush/jpush-phonegap-plugin)
|
||||
[](http://weibo.com/jpush?refer_flag=1001030101_&is_all=1)
|
||||
|
||||
@ -11,12 +11,16 @@
|
||||
- 如需要短信验证码功能插件,可关注 [cordova-plugin-jsms](https://github.com/jpush/cordova-plugin-jsms)
|
||||
- 如需要统计分析功能插件,可关注 [cordova-plugin-janalytics](https://github.com/jpush/cordova-plugin-janalytics)
|
||||
|
||||
注意:目前插件暂未支持 cordova-android 7.0.0,因此在添加 android platform 时,请指定 7.0.0 以下版本,例如 6.4.0。
|
||||
|
||||
>注意:插件从 v3.4.0 开始支持 cordova-android 7.0.0,因 cordova-android 7.0.0 修改了 Android 项目结构,因此不兼容之前的版本,升级前请务必注意。
|
||||
>
|
||||
>如果需要在cordova-android 7.0.0之前版本集成最新插件,参照[这篇文章](https://www.jianshu.com/p/23b117ca27a6)
|
||||
>
|
||||
>如果需要安装之前版本的插件,请先安装 v1.2.0 以下版本(建议安装 v1.1.12)的 [cordova-plugin-jcore](https://github.com/jpush/cordova-plugin-jcore),再安装旧版本插件(比如 v3.3.2),否则运行会报错。
|
||||
>
|
||||
>[Cordova Android版本与原生版本对应表](http://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#requirements-and-support)
|
||||
## Install
|
||||
|
||||
> 注意:
|
||||
>
|
||||
> - 应用的包名一定要和 APP_KEY 对应应用的包名一致,否则极光推送服务无法注册成功。
|
||||
> - 在使用 8 或以上版本的 Xcode 调试 iOS 项目时,需要先在项目配置界面的 Capabilities 中打开 Push Notifications 开关。
|
||||
|
||||
@ -38,18 +42,45 @@
|
||||
cordova plugin add Your_Plugin_Path --variable APP_KEY=your_jpush_appkey
|
||||
```
|
||||
|
||||
|
||||
### 参数
|
||||
|
||||
- APP_KEY: 必须设置,JPush 上注册的包名对应的 Appkey
|
||||
|
||||
```shell
|
||||
--variable APP_KEY=your_jpush_appkey
|
||||
```
|
||||
|
||||
- CHANNEL: 可以不设置,v3.6.0+ 版本开始支持(Android Only),方便开发者统计 APK 分发渠道,默认为 developer-default.
|
||||
|
||||
```shell
|
||||
--variable CHANNEL=your_channel
|
||||
```
|
||||
|
||||
- 同时动态配置 APP_KEY 和 CHANNEL 示例
|
||||
|
||||
```shell
|
||||
cordova plugin add jpush-phonegap-plugin --variable APP_KEY=your_jpush_appkey --variable CHANNEL=your_channel
|
||||
```
|
||||
|
||||
### Ionic
|
||||
|
||||
如果使用了 Ionic,可以再安装 @jiguang-ionic/jpush 包,适配 ionic-native:
|
||||
|
||||
```shell
|
||||
npm install --save @jiguang-ionic/jpush
|
||||
npm install --save @jiguang-ionic/jpush@1.0.2
|
||||
|
||||
# npm install --save @jiguang-ionic/jpush@2.0.0 for ionic4+
|
||||
```
|
||||
|
||||
然后在 *app.module.ts* 中增加:
|
||||
|
||||
```js
|
||||
// @jiguang-ionic/jpush@1.0.0+
|
||||
import { JPush } from '@jiguang-ionic/jpush';
|
||||
|
||||
// @jiguang-ionic/jpush@2.0.0+
|
||||
import { JPush } from '@jiguang-ionic/jpush/ngx';
|
||||
...
|
||||
providers: [
|
||||
...
|
||||
@ -119,6 +150,10 @@ Android 的推送通过长连接的方式实现,只有在保持连接的情况
|
||||
|
||||
### iOS
|
||||
|
||||
#### XCode 10 收不到推送怎么办?
|
||||
|
||||
打开 xcode -> file -> WorkSpace Settings… -> Build System 改成 Legacy Build System 然后卸载 App 重新运行。
|
||||
|
||||
#### 打包时遇到 i386 打包失败怎么办?
|
||||
|
||||
```shell
|
||||
|
@ -6,6 +6,8 @@
|
||||
- [通知栏样式定制](#通知栏样式定制)
|
||||
- [设置保留最近通知条数](#设置保留最近通知条数)
|
||||
- [本地通知](#本地通知)
|
||||
- [获取推送连接状态](#获取推送连接状态)
|
||||
- [地理围栏](#地理围栏)
|
||||
|
||||
## 获取集成日志(同时适用于 iOS)
|
||||
|
||||
@ -186,3 +188,109 @@ window.JPush.clearLocalNotifications() // 同时适用于 iOS
|
||||
- notificationID: 设置本地通知的 ID(不要为 0)。
|
||||
- broadcastTime: 设置本地通知触发时间,为距离当前时间的数值,单位是毫秒。
|
||||
- extras: 设置额外的数据信息 extras 为 json 字符串。
|
||||
|
||||
## 获取推送连接状态
|
||||
|
||||
### API - getConnectionState
|
||||
|
||||
开发者可以使用此功能获取当前 Push 服务的连接状态
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.getConnectionState(callback)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- callback: 回调函数,用来通知 JPush 的推送服务是否开启。
|
||||
|
||||
#### 代码示例
|
||||
|
||||
```js
|
||||
window.JPush.getConnectionState(function (result) {
|
||||
if (result == 0) {
|
||||
// 链接状态
|
||||
} else {
|
||||
// 断开状态
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
## 地理围栏
|
||||
|
||||
### API - setGeofenceInterval
|
||||
|
||||
设置地理围栏监控周期,最小3分钟,最大1天。默认为15分钟,当距离地理围栏边界小于1000米周期自动调整为3分钟。设置成功后一直使用设置周期,不会进行调整。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setGeofenceInterval(interval)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- interval: 监控周期,单位是毫秒。
|
||||
|
||||
### API - setMaxGeofenceNumber
|
||||
|
||||
设置最多允许保存的地理围栏数量,超过最大限制后,如果继续创建先删除最早创建的地理围栏。默认数量为10个,允许设置最小1个,最大100个。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setMaxGeofenceNumber(maxNumber)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- maxNumber: 最多允许保存的地理围栏个数
|
||||
|
||||
|
||||
### API - setBadgeNumber
|
||||
|
||||
设置App角标,目前仅华为系手机支持。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setBadgeNumber(badgeNumb)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- badgeNumb: 角标显示数字,小于或等0,角标显示数字清楚
|
||||
|
||||
### API - setAuth
|
||||
|
||||
设置用户是否同意隐私协议
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
window.JPush.setAuth(isAuth)
|
||||
```
|
||||
|
||||
#### 参数说明
|
||||
|
||||
- isAuth: 是否同意隐私协议,true 已同意;false未同意
|
||||
|
||||
#### 调用逻辑
|
||||
|
||||
- 宿主 APP 在首次安装,冷启动
|
||||
- 用户隐私协议告知
|
||||
- 用户确认授权
|
||||
- 告知极光授权结果
|
||||
|
||||
同意隐私协议:
|
||||
|
||||
```js
|
||||
window.JPush.setAuth(true)
|
||||
```
|
||||
|
||||
不同意隐私协议:
|
||||
|
||||
```js
|
||||
window.JPush.setAuth(false)
|
||||
```
|
@ -21,6 +21,8 @@
|
||||
- [cleanTags](#cleantags)
|
||||
- [getAllTags](#getalltags)
|
||||
- [checkTagBindState](#checktagbindstate)
|
||||
- [设置手机号](#设置手机号)
|
||||
- [setMobileNumber](#setMobileNumber)
|
||||
- [获取点击通知内容](#获取点击通知内容)
|
||||
- [event - jpush.openNotification](#event---jpushopennotification)
|
||||
- [获取通知内容](#获取通知内容)
|
||||
@ -396,6 +398,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
|
||||
@ -577,5 +610,6 @@ window.JPush.getUserNotificationSettings(function(result) {
|
||||
// 系统设置中已关闭应用推送。
|
||||
} else if(result > 0) {
|
||||
// 系统设置中打开了应用推送。
|
||||
}
|
||||
})
|
||||
```
|
||||
|
@ -47,14 +47,6 @@ window.JPush.startJPushSDK()
|
||||
|
||||
调用此 API,用来开启 JPush SDK 提供的推送服务。
|
||||
|
||||
开发者 App 可以通过调用停止推送服务 API 来停止极光推送服务,当又需要使用极光推送服务时,则必须要调用恢复推送服务 API。
|
||||
|
||||
本功能是一个完全本地的状态操作。也就是说:停止推送服务的状态不会保存到服务器上。
|
||||
如果停止推送服务后,开发者 App 被重新安装,或者被清除数据,
|
||||
JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数据被清除掉了)。
|
||||
本功能其行为类似于网络中断的效果,即:推送服务停止期间推送的消息,
|
||||
恢复推送服务后,如果推送的消息还在保留的时长范围内,则客户端是会收到离线消息。
|
||||
|
||||
#### 接口定义
|
||||
|
||||
```js
|
||||
@ -63,6 +55,14 @@ window.JPush.init()
|
||||
|
||||
### API - stopPush
|
||||
|
||||
开发者 App 可以通过调用停止推送服务 API 来停止极光推送服务,当又需要使用极光推送服务时,则必须要调用恢复推送服务 API。
|
||||
|
||||
本功能是一个完全本地的状态操作。也就是说:停止推送服务的状态不会保存到服务器上。
|
||||
如果停止推送服务后,开发者 App 被重新安装,或者被清除数据,
|
||||
JPush SDK 会恢复正常的默认行为。(因为保存在本地的状态数据被清除掉了)。
|
||||
本功能其行为类似于网络中断的效果,即:推送服务停止期间推送的消息,
|
||||
恢复推送服务后,如果推送的消息还在保留的时长范围内,则客户端是会收到离线消息。
|
||||
|
||||
- 不推荐调用,因为这个 API 只是让你的 DeviceToken 失效,在 设置-通知 中您的应用程序没有任何变化。
|
||||
- 推荐:设置一个 UI 界面,提醒用户在 设置-通知 中关闭推送服务。
|
||||
|
||||
|
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();
|
||||
@ -123,7 +145,7 @@
|
||||
|
||||
window.JPush.setTags({ sequence: 1, tags: tags },
|
||||
function (result) {
|
||||
$("#tagsResult").html(result.tags)
|
||||
$("#tagsResult").html(JSON.stringify(result.tags))
|
||||
}, function (error) {
|
||||
alert(error.code)
|
||||
})
|
||||
@ -135,7 +157,7 @@
|
||||
$("#getAllTags").click(function (event) {
|
||||
window.JPush.getAllTags({ sequence: 2 },
|
||||
function (result) {
|
||||
$("#tagsResult").html(result.tags)
|
||||
$("#tagsResult").html(JSON.stringify(result.tags))
|
||||
}, function (error) {
|
||||
alert(error.code)
|
||||
})
|
||||
@ -178,12 +200,23 @@
|
||||
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)
|
||||
})
|
||||
})
|
||||
};
|
||||
|
||||
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 +261,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 +283,10 @@
|
||||
<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">
|
||||
<label id="tagsPrompt">设置 Tag 的结果:</label>
|
||||
<label id="tagsResult">null</label>
|
||||
@ -250,6 +295,10 @@
|
||||
<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="notificationPrompt">接受的通知内容:</label>
|
||||
<label id="notificationResult">null</label>
|
||||
|
@ -1,14 +1,13 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { NavController } from 'ionic-angular';
|
||||
import { JPush } from '@jiguang-ionic/jpush';
|
||||
import { Device } from '@ionic-native/device';
|
||||
import { Component } from "@angular/core";
|
||||
import { NavController } from "ionic-angular";
|
||||
import { JPush } from "@jiguang-ionic/jpush";
|
||||
import { Device } from "@ionic-native/device";
|
||||
|
||||
@Component({
|
||||
selector: 'page-home',
|
||||
templateUrl: 'home.html'
|
||||
selector: "page-home",
|
||||
templateUrl: "home.html"
|
||||
})
|
||||
export class HomePage {
|
||||
|
||||
public registrationId: string;
|
||||
|
||||
devicePlatform: string;
|
||||
@ -17,130 +16,161 @@ export class HomePage {
|
||||
tagResultHandler = function(result) {
|
||||
var sequence: number = result.sequence;
|
||||
var tags: Array<string> = result.tags == null ? [] : result.tags;
|
||||
alert('Success!' + '\nSequence: ' + sequence + '\nTags: ' + tags.toString());
|
||||
alert(
|
||||
"Success!" + "\nSequence: " + sequence + "\nTags: " + tags.toString()
|
||||
);
|
||||
};
|
||||
|
||||
aliasResultHandler = function(result) {
|
||||
var sequence: number = result.sequence;
|
||||
var alias: string = result.alias;
|
||||
alert('Success!' + '\nSequence: ' + sequence + '\nAlias: ' + alias);
|
||||
alert("Success!" + "\nSequence: " + sequence + "\nAlias: " + alias);
|
||||
};
|
||||
|
||||
errorHandler = function(err) {
|
||||
var sequence: number = err.sequence;
|
||||
var code = err.code;
|
||||
alert('Error!' + '\nSequence: ' + sequence + '\nCode: ' + code);
|
||||
alert("Error!" + "\nSequence: " + sequence + "\nCode: " + code);
|
||||
};
|
||||
|
||||
constructor(public navCtrl: NavController, public jpush: JPush, device: Device) {
|
||||
|
||||
constructor(
|
||||
public navCtrl: NavController,
|
||||
public jpush: JPush,
|
||||
device: Device
|
||||
) {
|
||||
this.devicePlatform = device.platform;
|
||||
|
||||
document.addEventListener('jpush.receiveNotification', (event: any) => {
|
||||
document.addEventListener(
|
||||
"jpush.receiveNotification",
|
||||
(event: any) => {
|
||||
var content;
|
||||
if (this.devicePlatform == 'Android') {
|
||||
if (this.devicePlatform == "Android") {
|
||||
content = event.alert;
|
||||
} else {
|
||||
content = event.aps.alert;
|
||||
}
|
||||
alert('Receive notification: ' + JSON.stringify(event));
|
||||
}, false);
|
||||
alert("Receive notification: " + JSON.stringify(event));
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
document.addEventListener('jpush.openNotification', (event: any) => {
|
||||
document.addEventListener(
|
||||
"jpush.openNotification",
|
||||
(event: any) => {
|
||||
var content;
|
||||
if (this.devicePlatform == 'Android') {
|
||||
if (this.devicePlatform == "Android") {
|
||||
content = event.alert;
|
||||
} else { // iOS
|
||||
if (event.aps == undefined) { // 本地通知
|
||||
} else {
|
||||
// iOS
|
||||
if (event.aps == undefined) {
|
||||
// 本地通知
|
||||
content = event.content;
|
||||
} else { // APNS
|
||||
} else {
|
||||
// APNS
|
||||
content = event.aps.alert;
|
||||
}
|
||||
}
|
||||
alert('open notification: ' + JSON.stringify(event));
|
||||
}, false);
|
||||
alert("open notification: " + JSON.stringify(event));
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
document.addEventListener('jpush.receiveLocalNotification', (event: any) => {
|
||||
document.addEventListener(
|
||||
"jpush.receiveLocalNotification",
|
||||
(event: any) => {
|
||||
// iOS(*,9) Only , iOS(10,*) 将在 jpush.openNotification 和 jpush.receiveNotification 中触发。
|
||||
var content;
|
||||
if (this.devicePlatform == 'Android') {
|
||||
if (this.devicePlatform == "Android") {
|
||||
} else {
|
||||
content = event.content;
|
||||
}
|
||||
alert('receive local notification: ' + JSON.stringify(event));
|
||||
}, false);
|
||||
alert("receive local notification: " + JSON.stringify(event));
|
||||
},
|
||||
false
|
||||
);
|
||||
}
|
||||
|
||||
getRegistrationID() {
|
||||
this.jpush.getRegistrationID()
|
||||
.then(rId => {
|
||||
this.jpush.getRegistrationID().then(rId => {
|
||||
this.registrationId = rId;
|
||||
});
|
||||
}
|
||||
|
||||
setTags() {
|
||||
this.jpush.setTags({ sequence: this.sequence++, tags: ['Tag1', 'Tag2']})
|
||||
this.jpush
|
||||
.setTags({ sequence: this.sequence++, tags: ["Tag1", "Tag2"] })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
addTags() {
|
||||
this.jpush.addTags({ sequence: this.sequence++, tags: ['Tag3', 'Tag4']})
|
||||
this.jpush
|
||||
.addTags({ sequence: this.sequence++, tags: ["Tag3", "Tag4"] })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
checkTagBindState() {
|
||||
this.jpush.checkTagBindState({ sequence: this.sequence++, tag: 'Tag1' })
|
||||
this.jpush
|
||||
.checkTagBindState({ sequence: this.sequence++, tag: "Tag1" })
|
||||
.then(result => {
|
||||
var sequence = result.sequence;
|
||||
var tag = result.tag;
|
||||
var isBind = result.isBind;
|
||||
alert('Sequence: ' + sequence + '\nTag: ' + tag + '\nIsBind: ' + isBind);
|
||||
}).catch(this.errorHandler);
|
||||
alert(
|
||||
"Sequence: " + sequence + "\nTag: " + tag + "\nIsBind: " + isBind
|
||||
);
|
||||
})
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
deleteTags() {
|
||||
this.jpush.deleteTags({ sequence: this.sequence++, tags: ['Tag4']})
|
||||
this.jpush
|
||||
.deleteTags({ sequence: this.sequence++, tags: ["Tag4"] })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
getAllTags() {
|
||||
this.jpush.getAllTags({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.getAllTags({ sequence: this.sequence++ })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
cleanTags() {
|
||||
this.jpush.cleanTags({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.cleanTags({ sequence: this.sequence++ })
|
||||
.then(this.tagResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
setAlias() {
|
||||
this.jpush.setAlias({ sequence: this.sequence++, alias: 'TestAlias' })
|
||||
this.jpush
|
||||
.setAlias({ sequence: this.sequence++, alias: "TestAlias" })
|
||||
.then(this.aliasResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
getAlias() {
|
||||
this.jpush.getAlias({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.getAlias({ sequence: this.sequence++ })
|
||||
.then(this.aliasResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
deleteAlias() {
|
||||
this.jpush.deleteAlias({ sequence: this.sequence++ })
|
||||
this.jpush
|
||||
.deleteAlias({ sequence: this.sequence++ })
|
||||
.then(this.aliasResultHandler)
|
||||
.catch(this.errorHandler);
|
||||
}
|
||||
|
||||
addLocalNotification() {
|
||||
if (this.devicePlatform == 'Android') {
|
||||
this.jpush.addLocalNotification(0, 'Hello JPush', 'JPush', 1, 5000);
|
||||
if (this.devicePlatform == "Android") {
|
||||
this.jpush.addLocalNotification(0, "Hello JPush", "JPush", 1, 5000);
|
||||
} else {
|
||||
this.jpush.addLocalNotificationForIOS(5, 'Hello JPush', 1, 'localNoti1');
|
||||
this.jpush.addLocalNotificationForIOS(5, "Hello JPush", 1, "localNoti1");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,11 +23,17 @@ export interface AliasOptions {
|
||||
@Injectable()
|
||||
export class JPush extends IonicNativePlugin {
|
||||
|
||||
@Cordova()
|
||||
init(): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS', 'Android']
|
||||
})
|
||||
init(): void { }
|
||||
|
||||
@Cordova()
|
||||
setDebugMode(enable: boolean): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS', 'Android']
|
||||
})
|
||||
setDebugMode(enable: boolean): void { }
|
||||
|
||||
@Cordova()
|
||||
getRegistrationID(): Promise<any> { return; }
|
||||
@ -91,41 +97,74 @@ export class JPush extends IonicNativePlugin {
|
||||
|
||||
// iOS API - start
|
||||
|
||||
@Cordova()
|
||||
setBadge(badge: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
setBadge(badge: number): void { }
|
||||
|
||||
@Cordova()
|
||||
resetBadge(): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
resetBadge(): void { }
|
||||
|
||||
@Cordova()
|
||||
setApplicationIconBadgeNumber(badge: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
setApplicationIconBadgeNumber(badge: number): void { }
|
||||
|
||||
@Cordova()
|
||||
getApplicationIconBadgeNumber(): Promise<any> { return; }
|
||||
|
||||
@Cordova()
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): void { }
|
||||
|
||||
@Cordova()
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): void { }
|
||||
|
||||
@Cordova()
|
||||
addDismissActions(actions: Array<object>, categoryId: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
addDismissActions(actions: Array<object>, categoryId: string): void { }
|
||||
|
||||
@Cordova()
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): void { }
|
||||
|
||||
@Cordova()
|
||||
setLocation(latitude: number, longitude: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
setLocation(latitude: number, longitude: number): void { }
|
||||
|
||||
@Cordova()
|
||||
startLogPageView(pageName: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
startLogPageView(pageName: string): void { return; }
|
||||
|
||||
@Cordova()
|
||||
stopLogPageView(pageName: string): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
stopLogPageView(pageName: string): void { return; }
|
||||
|
||||
@Cordova()
|
||||
beginLogPageView(pageName: string, duration: number): Promise<any> { return; }
|
||||
@Cordova({
|
||||
sync: true,
|
||||
platforms: ['iOS']
|
||||
})
|
||||
beginLogPageView(pageName: string, duration: number): void { return; }
|
||||
|
||||
// iOS API - end
|
||||
|
||||
|
58
ionic/jpush/index.d.ts
vendored
58
ionic/jpush/index.d.ts
vendored
@ -7,9 +7,37 @@ export interface AliasOptions {
|
||||
sequence: number;
|
||||
alias?: string;
|
||||
}
|
||||
export declare class JPush extends IonicNativePlugin {
|
||||
init(): Promise<any>;
|
||||
setDebugMode(enable: boolean): Promise<any>;
|
||||
/**
|
||||
* @name jpush
|
||||
* @description
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { jpush } from '@ionic-native/jpush';
|
||||
*
|
||||
*
|
||||
* constructor(private jpush: jpush) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.jpush.functionName('Hello', 123)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
export declare class JPushOriginal extends IonicNativePlugin {
|
||||
/**
|
||||
* This function does something
|
||||
* @param arg1 {string} Some param to configure something
|
||||
* @param arg2 {number} Another param to configure something
|
||||
* @return {Promise<any>} Returns a promise that resolves when something happens
|
||||
*/
|
||||
functionName(arg1: string, arg2: number): Promise<any>;
|
||||
init(): void;
|
||||
setDebugMode(enable: boolean): void;
|
||||
getRegistrationID(): Promise<any>;
|
||||
stopPush(): Promise<any>;
|
||||
resumePush(): Promise<any>;
|
||||
@ -40,18 +68,18 @@ export declare class JPush extends IonicNativePlugin {
|
||||
*/
|
||||
getUserNotificationSettings(): Promise<any>;
|
||||
clearLocalNotifications(): Promise<any>;
|
||||
setBadge(badge: number): Promise<any>;
|
||||
resetBadge(): Promise<any>;
|
||||
setApplicationIconBadgeNumber(badge: number): Promise<any>;
|
||||
setBadge(badge: number): void;
|
||||
resetBadge(): void;
|
||||
setApplicationIconBadgeNumber(badge: number): void;
|
||||
getApplicationIconBadgeNumber(): Promise<any>;
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): Promise<any>;
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): Promise<any>;
|
||||
addDismissActions(actions: Array<object>, categoryId: string): Promise<any>;
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): Promise<any>;
|
||||
setLocation(latitude: number, longitude: number): Promise<any>;
|
||||
startLogPageView(pageName: string): Promise<any>;
|
||||
stopLogPageView(pageName: string): Promise<any>;
|
||||
beginLogPageView(pageName: string, duration: number): Promise<any>;
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): void;
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): void;
|
||||
addDismissActions(actions: Array<object>, categoryId: string): void;
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): void;
|
||||
setLocation(latitude: number, longitude: number): void;
|
||||
startLogPageView(pageName: string): void;
|
||||
stopLogPageView(pageName: string): void;
|
||||
beginLogPageView(pageName: string, duration: number): void;
|
||||
getConnectionState(): Promise<any>;
|
||||
setBasicPushNotificationBuilder(): Promise<any>;
|
||||
setCustomPushNotificationBuilder(): Promise<any>;
|
||||
@ -65,3 +93,5 @@ export declare class JPush extends IonicNativePlugin {
|
||||
setSilenceTime(startHour: number, startMinute: number, endHour: number, endMinute: number): Promise<any>;
|
||||
setPushTime(weekdays: Array<string>, startHour: number, endHour: number): Promise<any>;
|
||||
}
|
||||
|
||||
export declare const JPush: JPushOriginal;
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
95
ionic/jpush/ngx/index.d.ts
vendored
Normal file
95
ionic/jpush/ngx/index.d.ts
vendored
Normal file
@ -0,0 +1,95 @@
|
||||
import { IonicNativePlugin } from '@ionic-native/core';
|
||||
export interface TagOptions {
|
||||
sequence: number;
|
||||
tags?: Array<string>;
|
||||
}
|
||||
export interface AliasOptions {
|
||||
sequence: number;
|
||||
alias?: string;
|
||||
}
|
||||
/**
|
||||
* @name jpush
|
||||
* @description
|
||||
* This plugin does something
|
||||
*
|
||||
* @usage
|
||||
* ```typescript
|
||||
* import { jpush } from '@ionic-native/jpush';
|
||||
*
|
||||
*
|
||||
* constructor(private jpush: jpush) { }
|
||||
*
|
||||
* ...
|
||||
*
|
||||
*
|
||||
* this.jpush.functionName('Hello', 123)
|
||||
* .then((res: any) => console.log(res))
|
||||
* .catch((error: any) => console.error(error));
|
||||
*
|
||||
* ```
|
||||
*/
|
||||
export declare class JPush extends IonicNativePlugin {
|
||||
/**
|
||||
* This function does something
|
||||
* @param arg1 {string} Some param to configure something
|
||||
* @param arg2 {number} Another param to configure something
|
||||
* @return {Promise<any>} Returns a promise that resolves when something happens
|
||||
*/
|
||||
functionName(arg1: string, arg2: number): Promise<any>;
|
||||
init(): void;
|
||||
setDebugMode(enable: boolean): void;
|
||||
getRegistrationID(): Promise<any>;
|
||||
stopPush(): Promise<any>;
|
||||
resumePush(): Promise<any>;
|
||||
isPushStopped(): Promise<any>;
|
||||
setTags(params: TagOptions): Promise<any>;
|
||||
addTags(params: TagOptions): Promise<any>;
|
||||
deleteTags(params: TagOptions): Promise<any>;
|
||||
cleanTags(params: TagOptions): Promise<any>;
|
||||
getAllTags(params: TagOptions): Promise<any>;
|
||||
/**
|
||||
* @param params { sequence: number, tag: string }
|
||||
*/
|
||||
checkTagBindState(params: object): Promise<any>;
|
||||
setAlias(params: AliasOptions): Promise<any>;
|
||||
deleteAlias(params: AliasOptions): Promise<any>;
|
||||
getAlias(params: AliasOptions): Promise<any>;
|
||||
/**
|
||||
* Determinate whether the application notification has been opened.
|
||||
*
|
||||
* iOS: 0: closed; >1: opened.
|
||||
* UIRemoteNotificationTypeNone = 0,
|
||||
* UIRemoteNotificationTypeBadge = 1 << 0,
|
||||
* UIRemoteNotificationTypeSound = 1 << 1,
|
||||
* UIRemoteNotificationTypeAlert = 1 << 2,
|
||||
* UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3
|
||||
*
|
||||
* Android: 0: closed; 1: opened.
|
||||
*/
|
||||
getUserNotificationSettings(): Promise<any>;
|
||||
clearLocalNotifications(): Promise<any>;
|
||||
setBadge(badge: number): void;
|
||||
resetBadge(): void;
|
||||
setApplicationIconBadgeNumber(badge: number): void;
|
||||
getApplicationIconBadgeNumber(): Promise<any>;
|
||||
addLocalNotificationForIOS(delayTime: number, content: string, badge: number, identifierKey: string, extras?: object): void;
|
||||
deleteLocalNotificationWithIdentifierKeyInIOS(identifierKey: string): void;
|
||||
addDismissActions(actions: Array<object>, categoryId: string): void;
|
||||
addNotificationActions(actions: Array<object>, categoryId: string): void;
|
||||
setLocation(latitude: number, longitude: number): void;
|
||||
startLogPageView(pageName: string): void;
|
||||
stopLogPageView(pageName: string): void;
|
||||
beginLogPageView(pageName: string, duration: number): void;
|
||||
getConnectionState(): Promise<any>;
|
||||
setBasicPushNotificationBuilder(): Promise<any>;
|
||||
setCustomPushNotificationBuilder(): Promise<any>;
|
||||
clearAllNotification(): Promise<any>;
|
||||
clearNotificationById(id: number): Promise<any>;
|
||||
setLatestNotificationNum(num: number): Promise<any>;
|
||||
addLocalNotification(builderId: number, content: string, title: string, notificationId: number, broadcastTime: number, extras?: string): Promise<any>;
|
||||
removeLocalNotification(notificationId: number): Promise<any>;
|
||||
reportNotificationOpened(msgId: number): Promise<any>;
|
||||
requestPermission(): Promise<any>;
|
||||
setSilenceTime(startHour: number, startMinute: number, endHour: number, endMinute: number): Promise<any>;
|
||||
setPushTime(weekdays: Array<string>, startHour: number, endHour: number): Promise<any>;
|
||||
}
|
95
ionic/jpush/ngx/index.js
Normal file
95
ionic/jpush/ngx/index.js
Normal file
File diff suppressed because one or more lines are too long
1
ionic/jpush/ngx/index.metadata.json
Normal file
1
ionic/jpush/ngx/index.metadata.json
Normal file
@ -0,0 +1 @@
|
||||
[{"__symbolic":"module","version":4,"metadata":{"TagOptions":{"__symbolic":"interface"},"AliasOptions":{"__symbolic":"interface"},"JPush":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@ionic-native/core","name":"IonicNativePlugin","line":67,"character":27},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":64,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"functionName":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"setDebugMode":[{"__symbolic":"method"}],"getRegistrationID":[{"__symbolic":"method"}],"stopPush":[{"__symbolic":"method"}],"resumePush":[{"__symbolic":"method"}],"isPushStopped":[{"__symbolic":"method"}],"setTags":[{"__symbolic":"method"}],"addTags":[{"__symbolic":"method"}],"deleteTags":[{"__symbolic":"method"}],"cleanTags":[{"__symbolic":"method"}],"getAllTags":[{"__symbolic":"method"}],"checkTagBindState":[{"__symbolic":"method"}],"setAlias":[{"__symbolic":"method"}],"deleteAlias":[{"__symbolic":"method"}],"getAlias":[{"__symbolic":"method"}],"getUserNotificationSettings":[{"__symbolic":"method"}],"clearLocalNotifications":[{"__symbolic":"method"}],"setBadge":[{"__symbolic":"method"}],"resetBadge":[{"__symbolic":"method"}],"setApplicationIconBadgeNumber":[{"__symbolic":"method"}],"getApplicationIconBadgeNumber":[{"__symbolic":"method"}],"addLocalNotificationForIOS":[{"__symbolic":"method"}],"deleteLocalNotificationWithIdentifierKeyInIOS":[{"__symbolic":"method"}],"addDismissActions":[{"__symbolic":"method"}],"addNotificationActions":[{"__symbolic":"method"}],"setLocation":[{"__symbolic":"method"}],"startLogPageView":[{"__symbolic":"method"}],"stopLogPageView":[{"__symbolic":"method"}],"beginLogPageView":[{"__symbolic":"method"}],"getConnectionState":[{"__symbolic":"method"}],"setBasicPushNotificationBuilder":[{"__symbolic":"method"}],"setCustomPushNotificationBuilder":[{"__symbolic":"method"}],"clearAllNotification":[{"__symbolic":"method"}],"clearNotificationById":[{"__symbolic":"method"}],"setLatestNotificationNum":[{"__symbolic":"method"}],"addLocalNotification":[{"__symbolic":"method"}],"removeLocalNotification":[{"__symbolic":"method"}],"reportNotificationOpened":[{"__symbolic":"method"}],"requestPermission":[{"__symbolic":"method"}],"setSilenceTime":[{"__symbolic":"method"}],"setPushTime":[{"__symbolic":"method"}]}}}}]
|
@ -1,15 +1,15 @@
|
||||
{
|
||||
"name": "@jiguang-ionic/jpush",
|
||||
"version": "1.0.2",
|
||||
"version": "2.0.0",
|
||||
"description": "JPush support for ionic-native",
|
||||
"module": "index.js",
|
||||
"typings": "index.d.ts",
|
||||
"author": "hevin",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@ionic-native/core": "^4.2.0",
|
||||
"@ionic-native/core": "^5.1.0",
|
||||
"@angular/core": "*",
|
||||
"rxjs": "^5.0.1"
|
||||
"rxjs": "^6.3.0"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jpush-phonegap-plugin",
|
||||
"version": "3.3.1",
|
||||
"version": "5.7.0",
|
||||
"description": "JPush for cordova plugin",
|
||||
"cordova": {
|
||||
"id": "jpush-phonegap-plugin",
|
||||
@ -23,7 +23,7 @@
|
||||
],
|
||||
"devDependencies": {
|
||||
"cordova-plugin-device": "*",
|
||||
"cordova-plugin-jcore": "*"
|
||||
"cordova-plugin-jcore": ">=4.2.2"
|
||||
},
|
||||
"author": "JiGuang",
|
||||
"license": "MIT",
|
||||
|
332
plugin.xml
332
plugin.xml
@ -2,7 +2,7 @@
|
||||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
id="jpush-phonegap-plugin"
|
||||
version="3.3.0">
|
||||
version="5.7.0">
|
||||
|
||||
<name>JPush</name>
|
||||
<description>JPush for cordova plugin</description>
|
||||
@ -11,6 +11,7 @@
|
||||
<license>MIT License</license>
|
||||
|
||||
<preference name="APP_KEY" />
|
||||
<preference name="CHANNEL" default="developer-default" />
|
||||
|
||||
<engines>
|
||||
<engine name="cordova" version=">=3.0" />
|
||||
@ -30,15 +31,24 @@
|
||||
<param name="ios-package" value="JPushPlugin" />
|
||||
</feature>
|
||||
</config-file>
|
||||
|
||||
<config-file target="*-Info.plist" parent="UIBackgroundModes">
|
||||
<array>
|
||||
<string>remote-notification</string>
|
||||
</array>
|
||||
</config-file>
|
||||
<config-file target="*-Debug.plist" parent="aps-environment">
|
||||
<string>development</string>
|
||||
</config-file>
|
||||
<config-file target="*-Release.plist" parent="aps-environment">
|
||||
<string>production</string>
|
||||
</config-file>
|
||||
<header-file src="src/ios/Plugins/JPushDefine.h" />
|
||||
<header-file src="src/ios/Plugins/JPushPlugin.h" />
|
||||
<source-file src="src/ios/Plugins/JPushPlugin.m" />
|
||||
<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.0.7.a" framework="true" />
|
||||
<source-file src="src/ios/lib/jpush-ios-5.6.0.xcframework" framework="true" />
|
||||
<resource-file src="src/ios/JPushConfig.plist" />
|
||||
|
||||
<framework src="CFNetwork.framework" weak="true" />
|
||||
@ -53,14 +63,12 @@
|
||||
<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>
|
||||
</config-file>
|
||||
|
||||
<!-- <hook type="after_platform_add" src="hooks/iosEnablePush.js" />
|
||||
<hook type="after_plugin_install" src="hooks/iosEnablePush.js" />
|
||||
<hook type="before_plugin_uninstall" src="hooks/iosDisablePush.js" /> -->
|
||||
</platform>
|
||||
|
||||
<platform name="android">
|
||||
@ -71,30 +79,61 @@
|
||||
</config-file>
|
||||
|
||||
<config-file target="AndroidManifest.xml" parent="/manifest">
|
||||
<!-- Required 一些系统要求的权限,如访问网络等-->
|
||||
<!-- Required 一些系统要求的权限,如访问网络等 -->
|
||||
<permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE"
|
||||
android:protectionLevel="signature" />
|
||||
|
||||
<!-- Required 一些系统要求的权限,如访问网络等-->
|
||||
<uses-permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" />
|
||||
|
||||
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
|
||||
|
||||
<!-- Optional for location -->
|
||||
<uses-permission android:name="android.permission.VIBRATE" />
|
||||
<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.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">
|
||||
|
||||
|
||||
<!-- Rich push 核心功能 since 2.0.6-->
|
||||
<activity
|
||||
android:name="cn.jpush.android.ui.PopWinActivity"
|
||||
android:exported="true"
|
||||
android:theme="@style/JPushDialogStyle" >
|
||||
<intent-filter>
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
|
||||
<action android:name="cn.jpush.android.ui.PopWinActivity" />
|
||||
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<activity android:name="cn.jpush.android.ui.PushActivity"
|
||||
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
||||
android:configChanges="orientation|keyboardHidden">
|
||||
<activity
|
||||
android:name="cn.jpush.android.ui.PushActivity"
|
||||
android:configChanges="orientation|keyboardHidden"
|
||||
android:theme="@android:style/Theme.NoTitleBar"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.ui.PushActivity" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
@ -102,120 +141,187 @@
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- Rich push 核心功能 since 2.0.6-->
|
||||
<activity android:name="cn.jpush.android.ui.PopWinActivity"
|
||||
android:theme="@style/MyDialogStyle"
|
||||
android:exported="false">
|
||||
</activity>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<service android:name="cn.jpush.android.service.DownloadService"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
</service>
|
||||
|
||||
<!-- Required SDK 核心功能-->
|
||||
<service android:name="cn.jpush.android.service.PushService"
|
||||
android:enabled="true"
|
||||
android:exported="false"
|
||||
android:process=":remote">
|
||||
<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>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<receiver android:name="cn.jpush.android.service.PushReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="false">
|
||||
<intent-filter android:priority="1000">
|
||||
<!--Required 显示通知栏 -->
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
|
||||
<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>
|
||||
|
||||
<!-- 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>
|
||||
|
||||
<!-- User defined. For test only 用户自定义的广播接收器 -->
|
||||
<receiver
|
||||
android:name="cn.jiguang.cordova.push.JPushReceiver"
|
||||
android:enabled="true">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.REGISTRATION" />
|
||||
<action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
|
||||
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
|
||||
<action android:name="cn.jpush.android.intent.CONNECTION" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Required SDK核心功能-->
|
||||
<receiver
|
||||
android:name="cn.jpush.android.service.AlarmReceiver"
|
||||
android:exported="false" />
|
||||
|
||||
<!-- since 3.0.9 Required SDK 核心功能-->
|
||||
<provider
|
||||
android:authorities="$PACKAGE_NAME.DataProvider"
|
||||
android:name="cn.jpush.android.service.DataProvider"
|
||||
android:exported="true" />
|
||||
android:process=":pushcore"
|
||||
android:exported="false"
|
||||
/>
|
||||
|
||||
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
|
||||
|
||||
|
||||
<!-- 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>
|
||||
|
||||
</receiver>
|
||||
|
||||
|
||||
<!-- 3.5.0新增,用于定时展示功能 -->
|
||||
<receiver android:name="cn.jpush.android.service.SchedulerReceiver" android:exported="false"/>
|
||||
|
||||
<!--since 3.3.0 接收JPush相关事件-->
|
||||
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.RECEIVER_MESSAGE" />
|
||||
<category android:name="$PACKAGE_NAME"></category>
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<!-- Required. Enable it you can get statistics data with channel -->
|
||||
<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default" />
|
||||
<meta-data android:name="JPUSH_APPKEY" android:value="$APP_KEY" />
|
||||
<!--since 3.3.0 Required SDK核心功能-->
|
||||
|
||||
<!-- since 3.3.0 Required SDK核心功能 -->
|
||||
<activity
|
||||
android:name="cn.jpush.android.service.JNotifyActivity"
|
||||
android:exported="true"
|
||||
android:taskAffinity=""
|
||||
android:theme="@style/JPushTheme" >
|
||||
<intent-filter>
|
||||
<action android:name="cn.jpush.android.intent.JNotifyActivity" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<!-- since 4.6.0 Required SDK核心功能 -->
|
||||
<activity
|
||||
android:name="cn.android.service.JTransitActivity"
|
||||
android:exported="true"
|
||||
android:taskAffinity=""
|
||||
android:theme="@style/JPushTheme" >
|
||||
<intent-filter>
|
||||
<action android:name="cn.android.service.JTransitActivity" />
|
||||
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="$PACKAGE_NAME" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- since 3.3.0 Required SDK 核心功能-->
|
||||
<!-- 可配置android:process参数将PushService放在其他进程中 -->
|
||||
<!--User defined. For test only 继承自cn.jpush.android.service.JCommonService-->
|
||||
<service android:name="cn.jiguang.cordova.push.PushService"
|
||||
android:process=":pushcore"
|
||||
android:exported="false">
|
||||
<intent-filter>
|
||||
<action android:name="cn.jiguang.user.service.action" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<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" />-->
|
||||
|
||||
<!-- <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-->
|
||||
<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>
|
||||
|
||||
<source-file src="src/android/libs/jpush-android-3.1.1.jar" target-dir="libs" />
|
||||
<lib-file src="src/android/libs/jpush-android-5.7.0.jar" />
|
||||
|
||||
<source-file src="src/android/JPushReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/PushService.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/JPushPlugin.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/JPushReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/JPushEventReceiver.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
<source-file src="src/android/JLogger.java" target-dir="src/cn/jiguang/cordova/push" />
|
||||
|
||||
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml"
|
||||
target-dir="res/drawable" />
|
||||
<source-file src="src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml"
|
||||
target-dir="res/drawable" />
|
||||
<resource-file src="src/android/res/drawable-hdpi/jpush_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" />
|
||||
|
||||
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png"
|
||||
target-dir="res/drawable-hdpi" />
|
||||
<source-file src="src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png"
|
||||
target-dir="res/drawable-hdpi" />
|
||||
|
||||
<source-file src="src/android/res/layout/jpush_popwin_layout.xml" target-dir="res/layout" />
|
||||
<source-file src="src/android/res/layout/jpush_webview_layout.xml" target-dir="res/layout" />
|
||||
<source-file src="src/android/res/layout/test_notification_layout.xml" target-dir="res/layout" />
|
||||
|
||||
<source-file src="src/android/res/values/jpush_style.xml" target-dir="res/values" />
|
||||
<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" />
|
||||
<resource-file src="src/android/res/layout/jpush_webview_layout.xml"
|
||||
target="res/layout/jpush_webview_layout.xml" />
|
||||
<resource-file src="src/android/res/layout/push_notification.xml"
|
||||
target="res/layout/push_notification.xml" />
|
||||
<resource-file src="src/android/res/layout/push_notification_large.xml"
|
||||
target="res/layout/push_notification_large.xml" />
|
||||
<resource-file src="src/android/res/layout/push_notification_middle.xml"
|
||||
target="res/layout/push_notification_middle.xml" />
|
||||
<resource-file src="src/android/res/layout/jpush_inapp_banner.xml"
|
||||
target="res/layout/jpush_inapp_banner.xml" />
|
||||
<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" />
|
||||
<resource-file src="src/android/res/values/jpush_string.xml"
|
||||
target="res/values/jpush_string.xml" />
|
||||
|
||||
<resource-file src="src/android/res/values-zh/jpush_string.xml"
|
||||
target="res/values-zh/jpush_string.xml" />
|
||||
<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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
@ -9,12 +10,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.CustomMessage;
|
||||
import cn.jpush.android.api.JPushInterface;
|
||||
import cn.jpush.android.api.JPushMessage;
|
||||
import cn.jpush.android.api.NotificationMessage;
|
||||
import cn.jpush.android.helper.Logger;
|
||||
import cn.jpush.android.local.JPushConstants;
|
||||
import cn.jpush.android.service.JPushMessageReceiver;
|
||||
|
||||
|
||||
public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
|
||||
private static final String TAG = JPushEventReceiver.class.getSimpleName();
|
||||
@ -22,98 +30,211 @@ public class JPushEventReceiver extends JPushMessageReceiver {
|
||||
@Override
|
||||
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
|
||||
super.onTagOperatorResult(context, jPushMessage);
|
||||
cn.jiguang.cordova.push.JLogger.d(TAG,"onTagOperatorResult:"+jPushMessage);
|
||||
|
||||
JSONObject resultJson = new JSONObject();
|
||||
|
||||
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
|
||||
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);
|
||||
}
|
||||
|
||||
try {
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
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 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){
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
interface SuccessCallback{
|
||||
void onSuccessCallback(JSONObject resultJson) throws JSONException;
|
||||
}
|
||||
public void tryCallback(JPushMessage jPushMessage,SuccessCallback successCallback){
|
||||
JSONObject resultJson = new JSONObject();
|
||||
|
||||
int sequence = jPushMessage.getSequence();
|
||||
@ -123,22 +244,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 {
|
||||
@ -147,10 +265,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) {
|
||||
|
||||
}
|
||||
}
|
||||
} catch (Throwable throwable) {
|
||||
}
|
||||
return useExtra;
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.app.Activity;
|
||||
import android.app.AppOpsManager;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.os.Build;
|
||||
@ -20,22 +20,18 @@ import org.json.JSONObject;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import cn.jpush.android.api.BasicPushNotificationBuilder;
|
||||
import cn.jpush.android.api.JPushInterface;
|
||||
import cn.jpush.android.api.TagAliasCallback;
|
||||
import cn.jpush.android.data.JPushLocalNotification;
|
||||
import cn.jpush.android.service.JPushMessageReceiver;
|
||||
import cn.jiguang.api.utils.JCollectionAuth;
|
||||
|
||||
public class JPushPlugin extends CordovaPlugin {
|
||||
|
||||
@ -46,12 +42,10 @@ 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>();
|
||||
@ -64,33 +58,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);
|
||||
// 如果同时缓存了打开事件 openNotificationAlert 和 消息事件 notificationAlert,只向 UI 发打开事件。
|
||||
// 这样做是为了和 iOS 统一。
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -168,11 +157,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() {
|
||||
@ -182,12 +171,39 @@ 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 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() {
|
||||
@ -196,15 +212,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() {
|
||||
@ -213,8 +228,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) {
|
||||
@ -238,14 +252,13 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(final String action, final JSONArray data,
|
||||
final CallbackContext callbackContext) throws JSONException {
|
||||
public boolean execute(final String action, final JSONArray data, final CallbackContext callbackContext)
|
||||
throws JSONException {
|
||||
cordova.getThreadPool().execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
Method method = JPushPlugin.class.getDeclaredMethod(action,
|
||||
JSONArray.class, CallbackContext.class);
|
||||
Method method = JPushPlugin.class.getDeclaredMethod(action, JSONArray.class, CallbackContext.class);
|
||||
method.invoke(JPushPlugin.this, data, callbackContext);
|
||||
} catch (Exception e) {
|
||||
Log.e(TAG, e.toString());
|
||||
@ -256,6 +269,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
void init(JSONArray data, CallbackContext callbackContext) {
|
||||
JPushInterface.setNotificationCallBackEnable(mContext, true);
|
||||
JPushInterface.init(mContext);
|
||||
}
|
||||
|
||||
@ -264,6 +278,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();
|
||||
@ -306,10 +332,10 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("error reading num json");
|
||||
return;
|
||||
}
|
||||
if (num != -1) {
|
||||
JPushInterface.setLatestNotificationNumber(
|
||||
mContext, num);
|
||||
JPushInterface.setLatestNotificationNumber(mContext, num);
|
||||
} else {
|
||||
callbackContext.error("error num");
|
||||
}
|
||||
@ -375,6 +401,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.setAlias(mContext, sequence, alias);
|
||||
@ -390,6 +417,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.deleteAlias(mContext, sequence);
|
||||
@ -405,6 +433,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.getAlias(mContext, sequence);
|
||||
@ -427,6 +456,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.setTags(mContext, sequence, tags);
|
||||
@ -449,6 +479,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.addTags(mContext, sequence, tags);
|
||||
@ -471,6 +502,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.deleteTags(mContext, sequence, tags);
|
||||
@ -487,6 +519,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.cleanTags(mContext, sequence);
|
||||
@ -503,6 +536,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.getAllTags(mContext, sequence);
|
||||
@ -521,6 +555,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("Parameters error.");
|
||||
return;
|
||||
}
|
||||
|
||||
JPushInterface.checkTagBindState(mContext, sequence, tag);
|
||||
@ -529,15 +564,18 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
|
||||
void getConnectionState(JSONArray data, CallbackContext callback) {
|
||||
boolean isConnected = JPushInterface.getConnectionState(cordovaActivity.getApplicationContext());
|
||||
callback.success(String.valueOf(isConnected));
|
||||
if (isConnected) {
|
||||
callback.success(1);
|
||||
} else {
|
||||
callback.success(0);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义通知行为,声音、震动、呼吸灯等。
|
||||
*/
|
||||
void setBasicPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) {
|
||||
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(
|
||||
this.cordova.getActivity());
|
||||
BasicPushNotificationBuilder builder = new BasicPushNotificationBuilder(this.cordova.getActivity());
|
||||
builder.developerArg0 = "Basic builder 1";
|
||||
JPushInterface.setPushNotificationBuilder(1, builder);
|
||||
JSONObject obj = new JSONObject();
|
||||
@ -549,11 +587,9 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* 自定义推送通知栏样式,需要自己实现具体代码。
|
||||
* http://docs.jiguang.cn/client/android_tutorials/#_11
|
||||
* 自定义推送通知栏样式,需要自己实现具体代码。 http://docs.jiguang.cn/client/android_tutorials/#_11
|
||||
*/
|
||||
void setCustomPushNotificationBuilder(JSONArray data,
|
||||
CallbackContext callbackContext) {
|
||||
void setCustomPushNotificationBuilder(JSONArray data, CallbackContext callbackContext) {
|
||||
// CustomPushNotificationBuilder builder = new CustomPushNotificationBuilder(
|
||||
// this.cordova.getActivity(), R.layout.test_notification_layout,
|
||||
// R.id.icon, R.id.title, R.id.text);
|
||||
@ -614,8 +650,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置通知静默时间
|
||||
* http://docs.jpush.io/client/android_api/#api_5
|
||||
* 设置通知静默时间 http://docs.jpush.io/client/android_api/#api_5
|
||||
*/
|
||||
void setSilenceTime(JSONArray data, CallbackContext callbackContext) {
|
||||
try {
|
||||
@ -631,14 +666,58 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
callbackContext.error("结束时间数值错误");
|
||||
return;
|
||||
}
|
||||
JPushInterface.setSilenceTime(this.cordova.getActivity(), startHour, startMinute,
|
||||
endHour, endMinute);
|
||||
JPushInterface.setSilenceTime(this.cordova.getActivity(), startHour, startMinute, endHour, endMinute);
|
||||
} catch (JSONException e) {
|
||||
e.printStackTrace();
|
||||
callbackContext.error("error: reading json data.");
|
||||
}
|
||||
}
|
||||
|
||||
void setGeofenceInterval(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
long interval = data.getLong(0);
|
||||
JPushInterface.setGeofenceInterval(this.cordova.getActivity(), interval);
|
||||
}
|
||||
|
||||
void setMaxGeofenceNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
int maxNumber = data.getInt(0);
|
||||
JPushInterface.setMaxGeofenceNumber(mContext, maxNumber);
|
||||
}
|
||||
|
||||
void setBadgeNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
|
||||
int badgeNumb = data.getInt(0);
|
||||
JPushInterface.setBadgeNumber(mContext, badgeNumb);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
@ -666,8 +745,7 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
data.put("resultCode", code);
|
||||
data.put("tags", tags);
|
||||
data.put("alias", alias);
|
||||
final String jsEvent = String.format(
|
||||
"cordova.fireDocumentEvent('jpush.setTagsWithAlias',%s)",
|
||||
final String jsEvent = String.format("cordova.fireDocumentEvent('jpush.setTagsWithAlias',%s)",
|
||||
data.toString());
|
||||
cordova.getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
@ -681,9 +759,14 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
}
|
||||
};
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
private boolean hasPermission(String appOpsServiceId) {
|
||||
|
||||
Context context = cordova.getActivity().getApplicationContext();
|
||||
if (Build.VERSION.SDK_INT >= 24) {
|
||||
NotificationManager mNotificationManager = (NotificationManager) context
|
||||
.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
return mNotificationManager.areNotificationsEnabled();
|
||||
} else {
|
||||
AppOpsManager mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
|
||||
ApplicationInfo appInfo = context.getApplicationInfo();
|
||||
|
||||
@ -693,8 +776,8 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
|
||||
try {
|
||||
appOpsClazz = Class.forName(AppOpsManager.class.getName());
|
||||
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow",
|
||||
Integer.TYPE, Integer.TYPE, String.class);
|
||||
Method checkOpNoThrowMethod = appOpsClazz.getMethod("checkOpNoThrow", Integer.TYPE, Integer.TYPE,
|
||||
String.class);
|
||||
Field opValue = appOpsClazz.getDeclaredField(appOpsServiceId);
|
||||
int value = opValue.getInt(Integer.class);
|
||||
Object result = checkOpNoThrowMethod.invoke(mAppOps, value, uid, pkg);
|
||||
@ -710,6 +793,9 @@ public class JPushPlugin extends CordovaPlugin {
|
||||
} catch (ClassNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -13,80 +13,74 @@ import cn.jpush.android.api.JPushInterface;
|
||||
|
||||
public class JPushReceiver extends BroadcastReceiver {
|
||||
|
||||
private static final List<String> IGNORED_EXTRAS_KEYS =
|
||||
Arrays.asList(
|
||||
"cn.jpush.android.TITLE",
|
||||
"cn.jpush.android.MESSAGE",
|
||||
"cn.jpush.android.APPKEY",
|
||||
"cn.jpush.android.NOTIFICATION_CONTENT_TITLE"
|
||||
);
|
||||
private static final List<String> IGNORED_EXTRAS_KEYS = Arrays.asList("cn.jpush.android.TITLE",
|
||||
"cn.jpush.android.MESSAGE", "cn.jpush.android.APPKEY", "cn.jpush.android.NOTIFICATION_CONTENT_TITLE","key_show_entity","platform");
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
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;
|
||||
// }
|
||||
}
|
||||
|
6
src/android/PushService.java
Normal file
6
src/android/PushService.java
Normal file
@ -0,0 +1,6 @@
|
||||
package cn.jiguang.cordova.push;
|
||||
|
||||
import cn.jpush.android.service.JCommonService;
|
||||
|
||||
public class PushService extends JCommonService {
|
||||
}
|
Binary file not shown.
BIN
src/android/libs/jpush-android-5.7.0.jar
Normal file
BIN
src/android/libs/jpush-android-5.7.0.jar
Normal file
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 ![]() (image error) 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 ![]() (image error) 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 ![]() (image error) Size: 759 B |
0
src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_back.png
Normal file → Executable file
Before ![]() (image error) Size: 695 B After ![]() (image error) Size: 695 B ![]() ![]() |
0
src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_ic_richpush_actionbar_divider.png
Normal file → Executable file
Before ![]() (image error) Size: 181 B After ![]() (image error) Size: 181 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>
|
0
src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_richpush_btn_selector.xml
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml
Normal file → Executable file
0
src/android/res/drawable-hdpi/jpush_richpush_progressbar.xml
Normal file → Executable file
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>
|
4
src/android/res/layout/jpush_popwin_layout.xml
Normal file → Executable file
4
src/android/res/layout/jpush_popwin_layout.xml
Normal file → Executable file
@ -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"
|
||||
|
12
src/android/res/layout/jpush_webview_layout.xml
Normal file → Executable file
12
src/android/res/layout/jpush_webview_layout.xml
Normal file → Executable file
@ -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>
|
297
src/android/res/layout/push_notification.xml
Executable file
297
src/android/res/layout/push_notification.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="wrap_content">
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/v"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
<FrameLayout
|
||||
android:id="@+id/layout_version_2"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_default"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_layout_lefttop"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_small_icon"
|
||||
android:layout_width="18dp"
|
||||
android:layout_height="18dp"
|
||||
android:scaleType="centerInside" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:maxLines="1"
|
||||
android:maxWidth="200dp"
|
||||
android:maxLength="24"
|
||||
android:textSize="12sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_dot"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="4dp"
|
||||
android:textStyle="bold"
|
||||
android:text="·"
|
||||
android:textSize="16sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:maxLines="1"
|
||||
android:id="@+id/push_notification_date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="12sp" />
|
||||
</LinearLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_height="0dp"/>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_above="@+id/push_notification_for_bottom_margin"
|
||||
android:layout_marginBottom="8dp"
|
||||
android:visibility="gone"
|
||||
android:scaleType="centerCrop" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_main_layout"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@+id/push_notification_banner_icon"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_marginRight="4dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:layout_toLeftOf="@+id/push_notification_big_icon"
|
||||
android:layout_below="@id/push_notification_layout_lefttop">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_sub_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:textSize="13sp"
|
||||
android:visibility="gone" />
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="2"
|
||||
android:textSize="13sp" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_content_one_line"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:textSize="13sp"
|
||||
android:maxLines="1"
|
||||
android:visibility="gone" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_big_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/push_notification_main_layout"
|
||||
android:layout_alignBottom="@+id/push_notification_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_style_1"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:visibility="gone">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="50dp"
|
||||
android:layout_height="50dp"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:scaleType="centerInside" />
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_style_1_main_layout"
|
||||
android:layout_toRightOf="@+id/push_notification_style_1_big_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="vertical">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/push_notification_layout_time"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Title"
|
||||
android:id="@+id/push_notification_style_1_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:maxLines="1"
|
||||
android:layout_marginRight="8dp"
|
||||
android:textSize="12sp"
|
||||
android:textStyle="bold" />
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Time"
|
||||
android:id="@+id/push_notification_style_1_date"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_marginRight="4dp"
|
||||
android:gravity="right"
|
||||
android:textSize="12sp" />
|
||||
<TextView android:id="@+id/push_notification_null"
|
||||
android:layout_width="24dp"
|
||||
android:visibility="gone"
|
||||
android:layout_height="20dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
style="@*android:style/TextAppearance.Material.Notification.Info"
|
||||
android:id="@+id/push_notification_style_1_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="4dp"
|
||||
android:ellipsize="end"
|
||||
android:layout_marginTop="1dp"
|
||||
android:maxLines="1"
|
||||
android:textSize="13sp" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_style_1_banner_icon"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="96dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"
|
||||
android:layout_below="@id/push_notification_style_1_main_layout"
|
||||
android:scaleType="centerInside" />
|
||||
</RelativeLayout>
|
||||
<FrameLayout
|
||||
android:id="@+id/push_notification_banner_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<ImageView
|
||||
android:id="@+id/push_notification_banner_img"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scaleType="centerCrop"
|
||||
android:visibility="gone" />
|
||||
</FrameLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/push_notification_header_neg_fb"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:visibility="gone">
|
||||
<ImageView android:id="@+id/push_notification_header_expand"
|
||||
android:layout_marginRight="2dp"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_width="14dp"
|
||||
android:layout_height="14dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:scaleType="centerInside"
|
||||
android:background="#08000000"
|
||||
android:src="@drawable/jpush_ic_action_close"
|
||||
android:visibility="visible"/>
|
||||
<LinearLayout
|
||||
android:id="@+id/push_notification_fb_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="8dp"
|
||||
android:layout_below="@id/push_notification_header_expand"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:gravity="center">
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="不感兴趣"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="重复收到"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容低质"/>
|
||||
<TextView
|
||||
android:id="@+id/push_notification_fb_content_no_like4"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="#88000000"
|
||||
android:background="#0f000000"
|
||||
android:paddingTop="5dp"
|
||||
android:paddingBottom="5dp"
|
||||
android:paddingLeft="6dp"
|
||||
android:paddingRight="6dp"
|
||||
android:textSize="14sp"
|
||||
android:gravity="center"
|
||||
android:maxLines="1"
|
||||
android:layout_margin="5dp"
|
||||
android:text="内容不宜"/>
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
297
src/android/res/layout/push_notification_large.xml
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,24 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="horizontal" >
|
||||
<ImageView android:id="@+id/icon"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:orientation="vertical"
|
||||
>
|
||||
<TextView android:id="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
<TextView android:id="@+id/text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
7
src/android/res/values-zh/jpush_string.xml
Executable file
7
src/android/res/values-zh/jpush_string.xml
Executable file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="jg_channel_name_p_min">不重要</string>
|
||||
<string name="jg_channel_name_p_low">不重要</string>
|
||||
<string name="jg_channel_name_p_default">普通</string>
|
||||
<string name="jg_channel_name_p_high">重要</string>
|
||||
</resources>
|
8
src/android/res/values/jpush_string.xml
Executable file
8
src/android/res/values/jpush_string.xml
Executable file
@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="jg_channel_name_p_min">LOW</string>
|
||||
<string name="jg_channel_name_p_low">LOW</string>
|
||||
<string name="jg_channel_name_p_default">NORMAL</string>
|
||||
<string name="jg_channel_name_p_high">HIGH</string>
|
||||
|
||||
</resources>
|
11
src/android/res/values/jpush_style.xml
Normal file → Executable file
11
src/android/res/values/jpush_style.xml
Normal file → Executable file
@ -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{
|
||||
@ -40,7 +61,8 @@ NSDictionary *_launchOptions;
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_receiveRegistrationId jsString:[event toJsonString]];
|
||||
}];
|
||||
|
||||
if (notification) {
|
||||
if (notification != nil &&
|
||||
[[UIDevice currentDevice].systemVersion floatValue] < 10.0) {// iOS 10 以后通过 openNotification 这个回调触发事件。
|
||||
if (notification.userInfo) {
|
||||
|
||||
if ([notification.userInfo valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]) {
|
||||
@ -50,14 +72,15 @@ NSDictionary *_launchOptions;
|
||||
|
||||
if ([notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey]) {
|
||||
UILocalNotification *localNotification = [notification.userInfo valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
|
||||
NSMutableDictionary *localNotificationEvent = @{}.mutableCopy;
|
||||
localNotificationEvent[@"content"] = localNotification.alertBody;
|
||||
localNotificationEvent[@"badge"] = @(localNotification.applicationIconBadgeNumber);
|
||||
localNotificationEvent[@"extras"] = localNotification.userInfo;
|
||||
|
||||
NSDictionary* localNotificationEvent = @{@"content":localNotification.alertBody,
|
||||
@"badge": @(localNotification.applicationIconBadgeNumber),
|
||||
@"extras":localNotification.userInfo,
|
||||
};
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_OpenNotification jsString:[localNotificationEvent toJsonString]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[JPUSHService setDebugMode];
|
||||
|
||||
@ -70,7 +93,6 @@ NSDictionary *_launchOptions;
|
||||
if (![delay boolValue]) {
|
||||
[self startJPushSDK];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
-(void)startJPushSDK{
|
||||
@ -136,16 +158,11 @@ NSDictionary *_launchOptions;
|
||||
[JPUSHService handleRemoteNotification:userInfo];
|
||||
NSString *eventName;
|
||||
switch ([UIApplication sharedApplication].applicationState) {
|
||||
case UIApplicationStateInactive:
|
||||
eventName = JPushDocumentEvent_OpenNotification;
|
||||
break;
|
||||
case UIApplicationStateActive:
|
||||
eventName = JPushDocumentEvent_ReceiveNotification;
|
||||
break;
|
||||
case UIApplicationStateBackground:
|
||||
eventName = JPushDocumentEvent_BackgroundNotification;
|
||||
break;
|
||||
default:
|
||||
eventName = JPushDocumentEvent_ReceiveNotification;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -162,33 +179,33 @@ NSDictionary *_launchOptions;
|
||||
userInfo = [self jpushFormatAPNSDic:notification.request.content.userInfo];
|
||||
} else {
|
||||
UNNotificationContent *content = notification.request.content;
|
||||
userInfo = [NSMutableDictionary dictionaryWithDictionary:@{@"content": content.body,
|
||||
@"badge": content.badge,
|
||||
@"extras": content.userInfo
|
||||
}];
|
||||
userInfo[@"content"] = content.body;
|
||||
userInfo[@"badge"] = content.badge;
|
||||
userInfo[@"extras"] = content.userInfo;
|
||||
userInfo[@"identifier"] = notification.request.identifier;
|
||||
}
|
||||
|
||||
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
|
||||
|
||||
if ([userInfo[@"aps"][@"content-available"] isEqualToNumber:@(1)]) {// content-available 当用户开启后台推送是,防止触发两次事件
|
||||
return;
|
||||
}
|
||||
|
||||
[JPushPlugin fireDocumentEvent:JPushDocumentEvent_ReceiveNotification jsString:[userInfo toJsonString]];
|
||||
completionHandler(UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionSound|UNNotificationPresentationOptionAlert);
|
||||
|
||||
}
|
||||
|
||||
-(void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler{
|
||||
UNNotification *notification = response.notification;
|
||||
NSMutableDictionary *userInfo = nil;
|
||||
NSMutableDictionary *userInfo = @{}.mutableCopy;
|
||||
|
||||
if ([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
|
||||
userInfo = [self jpushFormatAPNSDic:notification.request.content.userInfo];
|
||||
} else {
|
||||
UNNotificationContent *content = notification.request.content;
|
||||
userInfo = [NSMutableDictionary dictionaryWithDictionary:@{@"content": content.body,
|
||||
@"badge": content.badge,
|
||||
@"extras": content.userInfo
|
||||
}];
|
||||
userInfo[@"content"] = content.body;
|
||||
userInfo[@"badge"] = content.badge;
|
||||
userInfo[@"extras"] = content.userInfo;
|
||||
userInfo[@"identifier"] = notification.request.identifier;
|
||||
}
|
||||
|
||||
@ -197,10 +214,10 @@ NSDictionary *_launchOptions;
|
||||
}
|
||||
|
||||
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
|
||||
NSDictionary* localNotificationEvent = @{@"content":notification.alertBody,
|
||||
@"badge": @(notification.applicationIconBadgeNumber),
|
||||
@"extras":notification.userInfo,
|
||||
};
|
||||
NSMutableDictionary *localNotificationEvent = @{}.mutableCopy;
|
||||
localNotificationEvent[@"content"] = notification.alertBody;
|
||||
localNotificationEvent[@"badge"] = @(notification.applicationIconBadgeNumber);
|
||||
localNotificationEvent[@"extras"] = notification.userInfo;
|
||||
|
||||
[[NSNotificationCenter defaultCenter] postNotificationName:JPushDocumentEvent_ReceiveLocalNotification object:localNotificationEvent];
|
||||
}
|
||||
|
@ -73,6 +73,9 @@ static NSMutableDictionary *_jpushEventCache;
|
||||
-(void)addDismissActions:(CDVInvokedUrlCommand*)command;
|
||||
-(void)addNotificationActions:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
// 设置手机号
|
||||
-(void)setMobileNumber:(CDVInvokedUrlCommand*)command;
|
||||
|
||||
/*
|
||||
* 以下为js中可监听到的事件
|
||||
* jpush.openNotification 点击推送消息启动或唤醒app
|
||||
|
@ -61,7 +61,7 @@
|
||||
|
||||
#else
|
||||
|
||||
- (CDVPlugin*)initWithWebView:(UIWebView*)theWebView{
|
||||
- (CDVPlugin*)initWithWebView:(WKWebView*)theWebView{
|
||||
NSLog(@"### initWithWebView ");
|
||||
if (self=[super initWithWebView:theWebView]) {
|
||||
}
|
||||
@ -395,13 +395,14 @@
|
||||
}
|
||||
|
||||
JPushNotificationTrigger *trigger = [[JPushNotificationTrigger alloc] init];
|
||||
// 由于 不支持 0 作为传入参数,在传入参数基础上添加一个极小的时间于 android 端保持一致。
|
||||
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 10.0) {
|
||||
if (delay) {
|
||||
trigger.timeInterval = [delay doubleValue];
|
||||
trigger.timeInterval = [delay doubleValue] + 0.000001;
|
||||
}
|
||||
} else {
|
||||
if (delay) {
|
||||
trigger.fireDate = [NSDate dateWithTimeIntervalSinceNow:[[command argumentAtIndex:0] intValue]];
|
||||
trigger.fireDate = [NSDate dateWithTimeIntervalSinceNow:[[command argumentAtIndex:0] doubleValue] + 0.001];
|
||||
}
|
||||
}
|
||||
|
||||
@ -509,6 +510,29 @@
|
||||
[[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 - 内部方法
|
||||
|
||||
+(void)setupJPushSDK:(NSDictionary*)userInfo{
|
||||
|
Binary file not shown.
44
src/ios/lib/jpush-ios-5.6.0.xcframework/Info.plist
Normal file
44
src/ios/lib/jpush-ios-5.6.0.xcframework/Info.plist
Normal file
@ -0,0 +1,44 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>AvailableLibraries</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>HeadersPath</key>
|
||||
<string>Headers</string>
|
||||
<key>LibraryIdentifier</key>
|
||||
<string>ios-arm64_x86_64-simulator</string>
|
||||
<key>LibraryPath</key>
|
||||
<string>libJPush.a</string>
|
||||
<key>SupportedArchitectures</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
<string>x86_64</string>
|
||||
</array>
|
||||
<key>SupportedPlatform</key>
|
||||
<string>ios</string>
|
||||
<key>SupportedPlatformVariant</key>
|
||||
<string>simulator</string>
|
||||
</dict>
|
||||
<dict>
|
||||
<key>HeadersPath</key>
|
||||
<string>Headers</string>
|
||||
<key>LibraryIdentifier</key>
|
||||
<string>ios-arm64</string>
|
||||
<key>LibraryPath</key>
|
||||
<string>libJPush.a</string>
|
||||
<key>SupportedArchitectures</key>
|
||||
<array>
|
||||
<string>arm64</string>
|
||||
</array>
|
||||
<key>SupportedPlatform</key>
|
||||
<string>ios</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XFWK</string>
|
||||
<key>XCFrameworkFormatVersion</key>
|
||||
<string>1.0</string>
|
||||
</dict>
|
||||
</plist>
|
471
src/ios/lib/JPUSHService.h → src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64/Headers/JPUSHService.h
Executable file → Normal file
471
src/ios/lib/JPUSHService.h → src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64/Headers/JPUSHService.h
Executable file → Normal file
@ -9,10 +9,12 @@
|
||||
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
|
||||
*/
|
||||
|
||||
#define JPUSH_VERSION_NUMBER 3.0.7
|
||||
#define JPUSH_VERSION_NUMBER 5.6.0
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class CLRegion;
|
||||
@class UILocalNotification;
|
||||
@class CLLocation;
|
||||
@ -20,11 +22,17 @@
|
||||
@class UNNotificationSettings;
|
||||
@class UNNotificationRequest;
|
||||
@class UNNotification;
|
||||
@class UIView;
|
||||
@protocol JPUSHRegisterDelegate;
|
||||
@protocol JPUSHGeofenceDelegate;
|
||||
@protocol JPUSHNotiInMessageDelegate;
|
||||
@protocol JPUSHInAppMessageDelegate;
|
||||
|
||||
typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq);
|
||||
typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *iTags, NSInteger seq, BOOL isBind);
|
||||
typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *iAlias, NSInteger seq);
|
||||
typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq);
|
||||
typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq, BOOL isBind);
|
||||
typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *_Nullable iAlias, NSInteger seq);
|
||||
typedef void (^JPUSHPropertiesOperationCompletion)(NSInteger iResCode, NSDictionary *_Nullable properties, NSInteger seq);
|
||||
typedef void (^JPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *_Nullable iLiveActivityId, NSData * _Nullable pushToken, NSInteger seq);
|
||||
|
||||
extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
|
||||
extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
|
||||
@ -40,6 +48,18 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
JPAuthorizationOptionBadge = (1 << 0), // the application may badge its icon upon a notification being received
|
||||
JPAuthorizationOptionSound = (1 << 1), // the application may play a sound upon a notification being received
|
||||
JPAuthorizationOptionAlert = (1 << 2), // the application may display an alert upon a notification being received
|
||||
JPAuthorizationOptionCarPlay = (1 << 3), // The ability to display notifications in a CarPlay environment.
|
||||
JPAuthorizationOptionCriticalAlert NS_AVAILABLE_IOS(12.0) = (1 << 4) , //The ability to play sounds for critical alerts.
|
||||
JPAuthorizationOptionProvidesAppNotificationSettings NS_AVAILABLE_IOS(12.0) = (1 << 5) , //An option indicating the system should display a button for in-app notification settings.
|
||||
JPAuthorizationOptionProvisional NS_AVAILABLE_IOS(12.0) = (1 << 6) , //The ability to post noninterrupting notifications provisionally to the Notification Center.
|
||||
JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods.
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) {
|
||||
JPAuthorizationNotDetermined = 0, // The user has not yet made a choice regarding whether the application may post user notifications.
|
||||
JPAuthorizationStatusDenied, // The application is not authorized to post user notifications.
|
||||
JPAuthorizationStatusAuthorized, // The application is authorized to post user notifications.
|
||||
JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0), // The application is authorized to post non-interruptive user notifications.
|
||||
};
|
||||
|
||||
/*!
|
||||
@ -57,7 +77,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* iOS10 UNNotificationCategory
|
||||
* iOS8-iOS9 UIUserNotificationCategory
|
||||
*/
|
||||
@property (nonatomic, strong) NSSet *categories;
|
||||
@property (nonatomic, strong, nullable) NSSet *categories;
|
||||
@end
|
||||
|
||||
/*!
|
||||
@ -65,13 +85,24 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
@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, copy, nullable) NSArray<NSString *> * identifiers; // 推送的标识数组
|
||||
@property (nonatomic, copy, nullable) 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对象数组)
|
||||
@property (nonatomic, copy, nullable) void (^findCompletionHandler)(NSArray * _Nullable results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组)
|
||||
|
||||
@end
|
||||
|
||||
/*!
|
||||
* 推送通知声音实体类
|
||||
* iOS10以上有效
|
||||
*/
|
||||
@interface JPushNotificationSound : NSObject <NSCopying, NSCoding>
|
||||
@property (nonatomic, copy, nullable) NSString *soundName; //普通通知铃声
|
||||
@property (nonatomic, copy, nullable) NSString *criticalSoundName NS_AVAILABLE_IOS(12.0); //警告通知铃声
|
||||
@property (nonatomic, assign) float criticalSoundVolume NS_AVAILABLE_IOS(12.0); //警告通知铃声音量,有效值在0~1之间,默认为1
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
* 推送内容实体类
|
||||
*/
|
||||
@ -80,17 +111,29 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@property (nonatomic, copy) NSString *title; // 推送标题
|
||||
@property (nonatomic, copy) NSString *subtitle; // 推送副标题
|
||||
@property (nonatomic, copy) NSString *body; // 推送内容
|
||||
@property (nonatomic, copy) NSNumber *badge; // 角标的数字。如果不需要改变角标传@(-1)
|
||||
@property (nonatomic, copy, nullable) 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, nullable) NSString *sound; // 声音名称,不设置则为默认声音
|
||||
@property (nonatomic, copy, nullable) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0); //推送声音实体
|
||||
@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型
|
||||
@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组
|
||||
@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到
|
||||
@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。
|
||||
@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。
|
||||
@property (nonatomic, copy, nullable) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification.
|
||||
//iOS15以上的新增属性 interruptionLevel为枚举UNNotificationInterruptionLevel
|
||||
// The interruption level determines the degree of interruption associated with the notification
|
||||
@property (nonatomic, assign) NSUInteger interruptionLevel NS_AVAILABLE_IOS(15.0);
|
||||
// Relevance score determines the sorting for the notification across app notifications. The expected range is between 0.0f and 1.0f.
|
||||
@property (nonatomic, assign) double relevanceScore NS_AVAILABLE_IOS(15.0);
|
||||
// iOS16以上的新增属性
|
||||
@property (nonatomic, copy, nullable) NSString * filterCriteria NS_AVAILABLE_IOS(16.0); // default nil
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
* 推送触发方式实体类
|
||||
* 注:dateComponents、timeInterval、region在iOS10以上可选择其中一个参数传入有效值,如果同时传入值会根据优先级I、II、III使其中一种触发方式生效,fireDate为iOS10以下根据时间触发时须传入的参数
|
||||
@ -113,7 +156,35 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@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
|
||||
@property (nonatomic, copy, nullable) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
* 应用内消息内容实体
|
||||
*/
|
||||
@interface JPushInAppMessage : NSObject
|
||||
|
||||
@property (nonatomic, copy) NSString *mesageId; // 消息id
|
||||
@property (nonatomic, copy) NSString *title; // 标题
|
||||
@property (nonatomic, copy) NSString *content; // 内容
|
||||
@property (nonatomic, strong) NSArray *target; // 目标页面
|
||||
@property (nonatomic, copy) NSString *clickAction; // 跳转地址
|
||||
@property (nonatomic, strong) NSDictionary *extras; // 附加字段
|
||||
|
||||
@end
|
||||
|
||||
@interface JPushCollectControl : NSObject
|
||||
|
||||
/* ssid SSID信息。设置为NO,不采集SSID信息。默认为YES。 */
|
||||
@property (nonatomic, assign) BOOL ssid;
|
||||
/* bssid BSSID信息。设置为NO,不采集BSSID信息。默认为YES。 */
|
||||
@property (nonatomic, assign) BOOL bssid;
|
||||
/* cell 基站信息。设置为NO,不采集基站信息。默认为YES。*/
|
||||
@property (nonatomic, assign) BOOL cell;
|
||||
/* gps 经纬度信息。设置为NO,不采集经纬度信息。默认为YES。 */
|
||||
@property (nonatomic, assign) BOOL gps;
|
||||
|
||||
@end
|
||||
|
||||
@ -127,12 +198,6 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
/// @name Setup 启动相关
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 启动SDK
|
||||
*
|
||||
* @discussion 这是旧版本的启动方法, 依赖于 PushConfig.plist 文件. 建议不要使用, 已经过期.
|
||||
*/
|
||||
+ (void)setupWithOption:(NSDictionary *)launchingOption __attribute__((deprecated("JPush 2.1.0 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 启动SDK
|
||||
@ -142,22 +207,33 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* @param channel 发布渠道. 可选.
|
||||
* @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
|
||||
* App 证书环境取决于profile provision的配置,此处建议与证书环境保持一致.
|
||||
* @param advertisingIdentifier 广告标识符(IDFA) 如果不需要使用IDFA,传nil.
|
||||
*
|
||||
* @discussion 提供SDK启动必须的参数, 来启动 SDK.
|
||||
* 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
|
||||
*/
|
||||
+ (void)setupWithOption:(NSDictionary *)launchingOption
|
||||
+ (void)setupWithOption:(nullable NSDictionary *)launchingOption
|
||||
appKey:(NSString *)appKey
|
||||
channel:(NSString *)channel
|
||||
channel:(nullable NSString *)channel
|
||||
apsForProduction:(BOOL)isProduction;
|
||||
|
||||
|
||||
+ (void)setupWithOption:(NSDictionary *)launchingOption
|
||||
/*!
|
||||
* @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:(nullable NSDictionary *)launchingOption
|
||||
appKey:(NSString *)appKey
|
||||
channel:(NSString *)channel
|
||||
channel:(nullable NSString *)channel
|
||||
apsForProduction:(BOOL)isProduction
|
||||
advertisingIdentifier:(NSString *)advertisingId;
|
||||
advertisingIdentifier:(nullable NSString *)advertisingId;
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
@ -172,7 +248,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*
|
||||
*/
|
||||
+ (void)registerForRemoteNotificationTypes:(NSUInteger)types
|
||||
categories:(NSSet *)categories;
|
||||
categories:(nullable NSSet *)categories;
|
||||
/*!
|
||||
* @abstract 新版本的注册方法(兼容iOS10)
|
||||
*
|
||||
@ -180,17 +256,71 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* @param delegate 代理
|
||||
*
|
||||
*/
|
||||
+ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(id<JPUSHRegisterDelegate>)delegate;
|
||||
+ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(nullable id<JPUSHRegisterDelegate>)delegate;
|
||||
|
||||
|
||||
+ (void)registerDeviceToken:(NSData *)deviceToken;
|
||||
|
||||
/*!
|
||||
* @abstract 上报liveactivity的启动token
|
||||
*
|
||||
* @param activityAttributes 某liveActivity定义的属性类型
|
||||
* @param pushToStartToken 对应该liveactivity的pushToStartToken,如有更新,请及时调用该方法更新pushToStartToken
|
||||
* @param completion 响应回调
|
||||
* @param seq 请求序列号
|
||||
*/
|
||||
+ (void)registerLiveActivity:(NSString *)activityAttributes
|
||||
pushToStartToken:(nullable NSData *)pushToStartToken
|
||||
completion:(nullable JPUSHLiveActivityTokenCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/*!
|
||||
* @abstract 注册liveActivity并上报其pushToken
|
||||
* 在pushToken有变化的时候同步调用该接口。
|
||||
* 在liveActivity结束的时候,请同步调用该接口,pushToken传nil
|
||||
*
|
||||
* @param liveActivityId 标识某一个liveActivity
|
||||
* @param pushToken 对应该liveActivity的pushToken,如有更新,请及时调用该方法更新pushToken
|
||||
* @param completion 响应回调
|
||||
* @param seq 请求序列号
|
||||
*/
|
||||
+ (void)registerLiveActivity:(NSString *)liveActivityId
|
||||
pushToken:(nullable NSData *)pushToken
|
||||
completion:(nullable JPUSHLiveActivityTokenCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/*!
|
||||
* @abstract 处理收到的 APNs 消息
|
||||
*/
|
||||
+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
|
||||
|
||||
/*!
|
||||
* @abstract 向极光服务器提交Token
|
||||
*
|
||||
* @param voipToken 推送使用的Voip Token
|
||||
*/
|
||||
+ (void)registerVoipToken:(NSData *)voipToken;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 处理收到的 Voip 消息
|
||||
*
|
||||
* @param remoteInfo 下发的 Voip 内容
|
||||
*/
|
||||
+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 检测通知授权状态
|
||||
* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus
|
||||
*/
|
||||
+ (void)requestNotificationAuthorization:(nullable void (^)(JPAuthorizationStatus status))completion;
|
||||
|
||||
/*!
|
||||
* @abstract 跳转至系统设置页面,iOS8及以上有效
|
||||
*/
|
||||
+ (void)openSettingsForNotification:(nullable void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0);
|
||||
|
||||
/*!
|
||||
* Tags操作接口
|
||||
* 支持增加/覆盖/删除/清空/查询操作
|
||||
@ -205,7 +335,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)addTags:(NSSet<NSString *> *)tags
|
||||
completion:(JPUSHTagsOperationCompletion)completion
|
||||
completion:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -217,7 +347,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setTags:(NSSet<NSString *> *)tags
|
||||
completion:(JPUSHTagsOperationCompletion)completion
|
||||
completion:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -228,7 +358,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteTags:(NSSet<NSString *> *)tags
|
||||
completion:(JPUSHTagsOperationCompletion)completion
|
||||
completion:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -236,7 +366,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)cleanTags:(JPUSHTagsOperationCompletion)completion
|
||||
+ (void)cleanTags:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -245,7 +375,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param completion 响应回调,请在回调中获取查询结果
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)getAllTags:(JPUSHTagsOperationCompletion)completion
|
||||
+ (void)getAllTags:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -255,7 +385,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)validTag:(NSString *)tag
|
||||
completion:(JPUSHTagValidOperationCompletion)completion
|
||||
completion:(nullable JPUSHTagValidOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -266,7 +396,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setAlias:(NSString *)alias
|
||||
completion:(JPUSHAliasOperationCompletion)completion
|
||||
completion:(nullable JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -275,7 +405,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteAlias:(JPUSHAliasOperationCompletion)completion
|
||||
+ (void)deleteAlias:(nullable JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
@ -284,7 +414,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)getAlias:(JPUSHAliasOperationCompletion)completion
|
||||
+ (void)getAlias:(nullable JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
@ -296,6 +426,85 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (NSSet *)filterValidTags:(NSSet *)tags;
|
||||
|
||||
|
||||
/*!
|
||||
* Property操作接口
|
||||
* 支持增加/删除/清空操作
|
||||
* 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
|
||||
*/
|
||||
|
||||
/**
|
||||
新增/更新用户属性
|
||||
|
||||
如果某个用户属性之前已经存在了,则会更新;不存在,则会新增
|
||||
|
||||
@param properties 需要新增或者更新的的用户属性内容,类型为NSDictionary;
|
||||
Key 为用户属性名称,类型必须是 NSString 类型;Value为用户属性值,只支持 NSString、NSNumber、NSDate类型,如果属性为BOOL类型,传值时请转成NSNumber类型
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setProperties:(NSDictionary *)properties
|
||||
completion:(nullable JPUSHPropertiesOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/**
|
||||
删除指定属性
|
||||
|
||||
@param keys 需要删除的属性名称集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteProperties:(NSSet<NSString *> *)keys
|
||||
completion:(nullable JPUSHPropertiesOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/**
|
||||
清空所有属性
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)cleanProperties:(nullable JPUSHPropertiesOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/*!
|
||||
* 应用内消息接口
|
||||
* 使用应用内消息需要配置以下两个接口。请在进入页面和离开页面的时候相应地配置。以下两个接口请配套调用。
|
||||
*/
|
||||
|
||||
/**
|
||||
进入页面
|
||||
|
||||
请与 + (void)pageLeave:(NSString *)pageName; 方法配套使用
|
||||
|
||||
@param pageName 页面名
|
||||
@discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。
|
||||
*/
|
||||
+ (void)pageEnterTo:(NSString *)pageName;
|
||||
|
||||
|
||||
/**
|
||||
离开页面
|
||||
|
||||
请与 + (void)pageEnterTo:(NSString *)pageName;方法配套使用
|
||||
|
||||
@param pageName 页面名
|
||||
@discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。
|
||||
*/
|
||||
+ (void)pageLeave:(NSString *)pageName;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 设置应用内消息的代理
|
||||
*
|
||||
* @discussion 遵守JPUSHInAppMessageDelegate的代理对象
|
||||
*
|
||||
*/
|
||||
+ (void)setInAppMessageDelegate:(id<JPUSHInAppMessageDelegate>)inAppMessageDelegate;
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Stats 统计功能
|
||||
///----------------------------------------------------
|
||||
@ -304,23 +513,26 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* @abstract 开始记录页面停留
|
||||
*
|
||||
* @param pageName 页面名称
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (void)startLogPageView:(NSString *)pageName;
|
||||
+ (void)startLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 停止记录页面停留
|
||||
*
|
||||
* @param pageName 页面
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (void)stopLogPageView:(NSString *)pageName;
|
||||
+ (void)stopLogPageView:(NSString *)pageName __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 直接上报在页面的停留时间
|
||||
*
|
||||
* @param pageName 页面
|
||||
* @param seconds 停留的秒数
|
||||
* @discussion JCore 1.1.8 版本后,如需统计页面流,请使用 JAnalytics
|
||||
*/
|
||||
+ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds;
|
||||
+ (void)beginLogPageView:(NSString *)pageName duration:(int)seconds __attribute__((deprecated("JCore 1.1.8 版本已过期")));
|
||||
|
||||
/*!
|
||||
* @abstract 开启Crash日志收集
|
||||
@ -347,6 +559,33 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (void)setLocation:(CLLocation *)location;
|
||||
|
||||
/**
|
||||
设置地理围栏的最大个数
|
||||
默认值为 10 ,iOS系统默认地理围栏最大个数为20
|
||||
@param count 个数 count
|
||||
*/
|
||||
+ (void)setGeofeneceMaxCount:(NSInteger)count;
|
||||
|
||||
/**
|
||||
设置地理围栏'圈内'类型的检测周期
|
||||
默认15分钟检测一次
|
||||
*/
|
||||
+ (void)setGeofenecePeriodForInside:(NSInteger)seconds;
|
||||
|
||||
/**
|
||||
注册地理围栏的代理
|
||||
|
||||
@param delegate 代理
|
||||
@param launchOptions app启动完成是收到的字段参数
|
||||
*/
|
||||
+ (void)registerLbsGeofenceDelegate:(id<JPUSHGeofenceDelegate>)delegate withLaunchOptions:(nullable NSDictionary *)launchOptions;
|
||||
|
||||
/**
|
||||
删除地理围栏
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
*/
|
||||
+ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Local Notification 本地通知
|
||||
@ -369,13 +608,13 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
* @discussion 旧的所有删除推送接口被废弃,使用此接口可以替换
|
||||
*
|
||||
*/
|
||||
+ (void)removeNotification:(JPushNotificationIdentifier *)identifier;
|
||||
+ (void)removeNotification:(nullable 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)返回相应对象数组。
|
||||
* @param identifier JPushNotificationIdentifier类型,iOS10以上可以通过设置identifier.delivered和identifier.identifiers来查找相应在通知中心显示推送或待推送请求,identifier.identifiers如果设置为nil或空数组则返回相应标志下所有在通知中心显示推送或待推送请求;iOS10以下identifier.delivered属性无效,identifier.identifiers如果设置nil或空数组则返回所有未触发的推送。须要设置identifier.findCompletionHandler回调才能得到查找结果,通过(NSArray *results)返回相应对象数组。
|
||||
* @discussion 旧的查找推送接口被废弃,使用此接口可以替换
|
||||
*
|
||||
*/
|
||||
@ -493,6 +732,20 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (void)resetBadge;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Other Feature 其他功能
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 设置手机号码(到服务器)
|
||||
*
|
||||
* @param mobileNumber 手机号码. 会与用户信息一一对应。可为空,为空则清除号码
|
||||
* @param completion 响应回调。成功则error为空,失败则error带有错误码及错误信息
|
||||
*
|
||||
* @discussion 设置手机号码后,可实现“推送不到短信到”的通知方式,提高推送达到率。结果信息通过completion异步返回,也可将completion设置为nil不处理结果信息。
|
||||
*
|
||||
*/
|
||||
+ (void)setMobileNumber:(NSString *)mobileNumber completion:(nullable void (^)(NSError *error))completion;
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name Logs and others 日志与其他
|
||||
@ -510,7 +763,7 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (NSString *)registrationID;
|
||||
|
||||
+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString *registrationID))completionHandler;
|
||||
+ (void)registrationIDCompletionHandler:(void(^)(int resCode,NSString * _Nullable registrationID))completionHandler;
|
||||
|
||||
/*!
|
||||
* @abstract 打开日志级别到 Debug
|
||||
@ -536,6 +789,46 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
|
||||
*/
|
||||
+ (void)setLogOFF;
|
||||
|
||||
/*!
|
||||
数据采集控制
|
||||
|
||||
@param control 数据采集配置。
|
||||
*/
|
||||
+ (void)setCollectControl:(JPushCollectControl *)control;
|
||||
|
||||
/*!
|
||||
* @abstract 设置SDK地理位置权限开关
|
||||
*
|
||||
* @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。
|
||||
*
|
||||
*/
|
||||
+ (void)setLocationEanable:(BOOL)isEanble;
|
||||
|
||||
/*!
|
||||
* @abstract 设置PUSH开关
|
||||
*
|
||||
* @discussion 关闭PUSH之后,将接收不到极光通知推送、自定义消息推送、liveActivity消息推送,默认是开启。
|
||||
*
|
||||
*/
|
||||
+ (void)setPushEnable:(BOOL)isEnable completion:(nullable void (^)(NSInteger iResCode))completion;
|
||||
|
||||
/*!
|
||||
* @abstract 设置用户分群推送功能开关
|
||||
*
|
||||
* @param isEnable YES:开启,NO:关闭,默认是开启。
|
||||
*
|
||||
*/
|
||||
+ (void)setSmartPushEnable:(BOOL)isEnable;
|
||||
|
||||
/*!
|
||||
* @abstract 设置应用内提醒消息的代理
|
||||
*
|
||||
* @discussion 遵守JPushNotiInMessageDelegate的代理对象
|
||||
*
|
||||
*/
|
||||
+ (void)setNotiInMessageDelegate:(id<JPUSHNotiInMessageDelegate>)notiInMessageDelegate;
|
||||
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
///********************下列方法已过期********************
|
||||
@ -590,6 +883,100 @@ callbackSelector:(SEL)cbSelector
|
||||
* @param response 通知响应对象
|
||||
* @param completionHandler
|
||||
*/
|
||||
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler;
|
||||
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler;
|
||||
|
||||
/*
|
||||
* @brief handle UserNotifications.framework [openSettingsForNotification:]
|
||||
* @param center [UNUserNotificationCenter currentNotificationCenter] 新特性用户通知中心
|
||||
* @param notification 当前管理的通知对象
|
||||
*/
|
||||
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0);
|
||||
|
||||
/**
|
||||
* 监测通知授权状态返回的结果
|
||||
* @param status 授权通知状态,详见JPAuthorizationStatus
|
||||
* @param info 更多信息,预留参数
|
||||
*/
|
||||
- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(nullable NSDictionary *)info;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JPUSHGeofenceDelegate <NSObject>
|
||||
/**
|
||||
触发地理围栏
|
||||
@param geofence 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceRegion:(nullable NSDictionary *)geofence
|
||||
error:(nullable NSError *)error;
|
||||
|
||||
/**
|
||||
拉取地理围栏列表的回调
|
||||
|
||||
@param geofenceList 地理围栏列表
|
||||
*/
|
||||
- (void)jpushCallbackGeofenceReceived:(nullable NSArray<NSDictionary*> *)geofenceList;
|
||||
|
||||
/**
|
||||
进入地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期")));
|
||||
|
||||
/**
|
||||
离开地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期")));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@protocol JPUSHNotiInMessageDelegate <NSObject>
|
||||
|
||||
/**
|
||||
应用内提醒消息展示的回调
|
||||
|
||||
@param content 应用内提醒消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushNotiInMessageDidShowWithContent:(NSDictionary *)content;
|
||||
|
||||
/**
|
||||
应用内提醒消息点击的回调
|
||||
|
||||
@param content 应用内提醒消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushNotiInMessageDidClickWithContent:(NSDictionary *)content;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@protocol JPUSHInAppMessageDelegate <NSObject>
|
||||
|
||||
/**
|
||||
应用内消息展示的回调
|
||||
|
||||
@param inAppMessage 应用内消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushInAppMessageDidShow:(JPushInAppMessage *)inAppMessage;
|
||||
|
||||
/**
|
||||
应用内消息点击的回调
|
||||
|
||||
@param inAppMessage 应用内消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushInAppMessageDidClick:(JPushInAppMessage *)inAppMessage;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyTrackingDomains</key>
|
||||
<array/>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>CA92.1</string>
|
||||
</array>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
BIN
src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64/libJPush.a
Normal file
BIN
src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64/libJPush.a
Normal file
Binary file not shown.
982
src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h
Normal file
982
src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64_x86_64-simulator/Headers/JPUSHService.h
Normal file
@ -0,0 +1,982 @@
|
||||
/*
|
||||
* | | | | \ \ / / | | | | / _______|
|
||||
* | |____| | \ \/ / | |____| | / /
|
||||
* | |____| | \ / | |____| | | | _____
|
||||
* | | | | / \ | | | | | | |____ |
|
||||
* | | | | / /\ \ | | | | \ \______| |
|
||||
* | | | | /_/ \_\ | | | | \_________|
|
||||
*
|
||||
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
|
||||
*/
|
||||
|
||||
#define JPUSH_VERSION_NUMBER 5.6.0
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class CLRegion;
|
||||
@class UILocalNotification;
|
||||
@class CLLocation;
|
||||
@class UNNotificationCategory;
|
||||
@class UNNotificationSettings;
|
||||
@class UNNotificationRequest;
|
||||
@class UNNotification;
|
||||
@class UIView;
|
||||
@protocol JPUSHRegisterDelegate;
|
||||
@protocol JPUSHGeofenceDelegate;
|
||||
@protocol JPUSHNotiInMessageDelegate;
|
||||
@protocol JPUSHInAppMessageDelegate;
|
||||
|
||||
typedef void (^JPUSHTagsOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq);
|
||||
typedef void (^JPUSHTagValidOperationCompletion)(NSInteger iResCode, NSSet *_Nullable iTags, NSInteger seq, BOOL isBind);
|
||||
typedef void (^JPUSHAliasOperationCompletion)(NSInteger iResCode, NSString *_Nullable iAlias, NSInteger seq);
|
||||
typedef void (^JPUSHPropertiesOperationCompletion)(NSInteger iResCode, NSDictionary *_Nullable properties, NSInteger seq);
|
||||
typedef void (^JPUSHLiveActivityTokenCompletion)(NSInteger iResCode, NSString *_Nullable iLiveActivityId, NSData * _Nullable pushToken, 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.
|
||||
JPAuthorizationOptionAnnouncement NS_AVAILABLE_IOS(13.0) = (1 << 7) , //The ability for Siri to automatically read out messages over AirPods.
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, JPAuthorizationStatus) {
|
||||
JPAuthorizationNotDetermined = 0, // The user has not yet made a choice regarding whether the application may post user notifications.
|
||||
JPAuthorizationStatusDenied, // The application is not authorized to post user notifications.
|
||||
JPAuthorizationStatusAuthorized, // The application is authorized to post user notifications.
|
||||
JPAuthorizationStatusProvisional NS_AVAILABLE_IOS(12.0), // The application is authorized to post non-interruptive user notifications.
|
||||
};
|
||||
|
||||
/*!
|
||||
* 通知注册实体类
|
||||
*/
|
||||
@interface JPUSHRegisterEntity : NSObject
|
||||
|
||||
/*!
|
||||
* 支持的类型
|
||||
* badge,sound,alert
|
||||
*/
|
||||
@property (nonatomic, assign) NSInteger types;
|
||||
/*!
|
||||
* 注入的类别
|
||||
* iOS10 UNNotificationCategory
|
||||
* iOS8-iOS9 UIUserNotificationCategory
|
||||
*/
|
||||
@property (nonatomic, strong, nullable) NSSet *categories;
|
||||
@end
|
||||
|
||||
/*!
|
||||
* 进行删除、查找推送实体类
|
||||
*/
|
||||
@interface JPushNotificationIdentifier : NSObject<NSCopying, NSCoding>
|
||||
|
||||
@property (nonatomic, copy, nullable) NSArray<NSString *> * identifiers; // 推送的标识数组
|
||||
@property (nonatomic, copy, nullable) 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, nullable) void (^findCompletionHandler)(NSArray * _Nullable results); // 用于查询回调,调用[findNotification:]方法前必须设置,results为返回相应对象数组,iOS10以下返回UILocalNotification对象数组;iOS10以上根据delivered传入值返回UNNotification或UNNotificationRequest对象数组(delivered传入YES,则返回UNNotification对象数组,否则返回UNNotificationRequest对象数组)
|
||||
|
||||
@end
|
||||
|
||||
/*!
|
||||
* 推送通知声音实体类
|
||||
* iOS10以上有效
|
||||
*/
|
||||
@interface JPushNotificationSound : NSObject <NSCopying, NSCoding>
|
||||
@property (nonatomic, copy, nullable) NSString *soundName; //普通通知铃声
|
||||
@property (nonatomic, copy, nullable) 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, nullable) 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, nullable) NSString *sound; // 声音名称,不设置则为默认声音
|
||||
@property (nonatomic, copy, nullable) JPushNotificationSound *soundSetting NS_AVAILABLE_IOS(10.0); //推送声音实体
|
||||
@property (nonatomic, copy) NSArray *attachments NS_AVAILABLE_IOS(10_0); // 附件,iOS10以上有效,需要传入UNNotificationAttachment对象数组类型
|
||||
@property (nonatomic, copy) NSString *threadIdentifier NS_AVAILABLE_IOS(10_0); // 线程或与推送请求相关对话的标识,iOS10以上有效,可用来对推送进行分组
|
||||
@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名,iOS10以上有效,从推送启动时将会用到
|
||||
@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。
|
||||
@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。
|
||||
@property (nonatomic, copy, nullable) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification.
|
||||
//iOS15以上的新增属性 interruptionLevel为枚举UNNotificationInterruptionLevel
|
||||
// The interruption level determines the degree of interruption associated with the notification
|
||||
@property (nonatomic, assign) NSUInteger interruptionLevel NS_AVAILABLE_IOS(15.0);
|
||||
// Relevance score determines the sorting for the notification across app notifications. The expected range is between 0.0f and 1.0f.
|
||||
@property (nonatomic, assign) double relevanceScore NS_AVAILABLE_IOS(15.0);
|
||||
// iOS16以上的新增属性
|
||||
@property (nonatomic, copy, nullable) NSString * filterCriteria NS_AVAILABLE_IOS(16.0); // default nil
|
||||
|
||||
@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, nullable) void (^completionHandler)(id result); // 注册或更新推送成功回调,iOS10以上成功则result为UNNotificationRequest对象,失败则result为nil;iOS10以下成功result为UILocalNotification对象,失败则result为nil
|
||||
|
||||
@end
|
||||
|
||||
|
||||
/*!
|
||||
* 应用内消息内容实体
|
||||
*/
|
||||
@interface JPushInAppMessage : NSObject
|
||||
|
||||
@property (nonatomic, copy) NSString *mesageId; // 消息id
|
||||
@property (nonatomic, copy) NSString *title; // 标题
|
||||
@property (nonatomic, copy) NSString *content; // 内容
|
||||
@property (nonatomic, strong) NSArray *target; // 目标页面
|
||||
@property (nonatomic, copy) NSString *clickAction; // 跳转地址
|
||||
@property (nonatomic, strong) NSDictionary *extras; // 附加字段
|
||||
|
||||
@end
|
||||
|
||||
@interface JPushCollectControl : NSObject
|
||||
|
||||
/* ssid SSID信息。设置为NO,不采集SSID信息。默认为YES。 */
|
||||
@property (nonatomic, assign) BOOL ssid;
|
||||
/* bssid BSSID信息。设置为NO,不采集BSSID信息。默认为YES。 */
|
||||
@property (nonatomic, assign) BOOL bssid;
|
||||
/* cell 基站信息。设置为NO,不采集基站信息。默认为YES。*/
|
||||
@property (nonatomic, assign) BOOL cell;
|
||||
/* gps 经纬度信息。设置为NO,不采集经纬度信息。默认为YES。 */
|
||||
@property (nonatomic, assign) BOOL gps;
|
||||
|
||||
@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:(nullable NSDictionary *)launchingOption
|
||||
appKey:(NSString *)appKey
|
||||
channel:(nullable 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:(nullable NSDictionary *)launchingOption
|
||||
appKey:(NSString *)appKey
|
||||
channel:(nullable NSString *)channel
|
||||
apsForProduction:(BOOL)isProduction
|
||||
advertisingIdentifier:(nullable NSString *)advertisingId;
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @name APNs about 通知相关
|
||||
///----------------------------------------------------
|
||||
|
||||
/*!
|
||||
* @abstract 注册要处理的远程通知类型
|
||||
*
|
||||
* @param types 通知类型
|
||||
* @param categories 类别组
|
||||
*
|
||||
*/
|
||||
+ (void)registerForRemoteNotificationTypes:(NSUInteger)types
|
||||
categories:(nullable NSSet *)categories;
|
||||
/*!
|
||||
* @abstract 新版本的注册方法(兼容iOS10)
|
||||
*
|
||||
* @param config 注册通知配置
|
||||
* @param delegate 代理
|
||||
*
|
||||
*/
|
||||
+ (void)registerForRemoteNotificationConfig:(JPUSHRegisterEntity *)config delegate:(nullable id<JPUSHRegisterDelegate>)delegate;
|
||||
|
||||
|
||||
+ (void)registerDeviceToken:(NSData *)deviceToken;
|
||||
|
||||
/*!
|
||||
* @abstract 上报liveactivity的启动token
|
||||
*
|
||||
* @param activityAttributes 某liveActivity定义的属性类型
|
||||
* @param pushToStartToken 对应该liveactivity的pushToStartToken,如有更新,请及时调用该方法更新pushToStartToken
|
||||
* @param completion 响应回调
|
||||
* @param seq 请求序列号
|
||||
*/
|
||||
+ (void)registerLiveActivity:(NSString *)activityAttributes
|
||||
pushToStartToken:(nullable NSData *)pushToStartToken
|
||||
completion:(nullable JPUSHLiveActivityTokenCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/*!
|
||||
* @abstract 注册liveActivity并上报其pushToken
|
||||
* 在pushToken有变化的时候同步调用该接口。
|
||||
* 在liveActivity结束的时候,请同步调用该接口,pushToken传nil
|
||||
*
|
||||
* @param liveActivityId 标识某一个liveActivity
|
||||
* @param pushToken 对应该liveActivity的pushToken,如有更新,请及时调用该方法更新pushToken
|
||||
* @param completion 响应回调
|
||||
* @param seq 请求序列号
|
||||
*/
|
||||
+ (void)registerLiveActivity:(NSString *)liveActivityId
|
||||
pushToken:(nullable NSData *)pushToken
|
||||
completion:(nullable JPUSHLiveActivityTokenCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/*!
|
||||
* @abstract 处理收到的 APNs 消息
|
||||
*/
|
||||
+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
|
||||
|
||||
/*!
|
||||
* @abstract 向极光服务器提交Token
|
||||
*
|
||||
* @param voipToken 推送使用的Voip Token
|
||||
*/
|
||||
+ (void)registerVoipToken:(NSData *)voipToken;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 处理收到的 Voip 消息
|
||||
*
|
||||
* @param remoteInfo 下发的 Voip 内容
|
||||
*/
|
||||
+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 检测通知授权状态
|
||||
* @param completion 授权结果通过status值返回,详见JPAuthorizationStatus
|
||||
*/
|
||||
+ (void)requestNotificationAuthorization:(nullable void (^)(JPAuthorizationStatus status))completion;
|
||||
|
||||
/*!
|
||||
* @abstract 跳转至系统设置页面,iOS8及以上有效
|
||||
*/
|
||||
+ (void)openSettingsForNotification:(nullable void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0);
|
||||
|
||||
/*!
|
||||
* Tags操作接口
|
||||
* 支持增加/覆盖/删除/清空/查询操作
|
||||
* 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
|
||||
*/
|
||||
|
||||
/**
|
||||
增加tags
|
||||
|
||||
@param tags 需要增加的tags集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)addTags:(NSSet<NSString *> *)tags
|
||||
completion:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
覆盖tags
|
||||
调用该接口会覆盖用户所有的tags
|
||||
|
||||
@param tags 需要设置的tags集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setTags:(NSSet<NSString *> *)tags
|
||||
completion:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
删除指定tags
|
||||
|
||||
@param tags 需要删除的tags集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteTags:(NSSet<NSString *> *)tags
|
||||
completion:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
清空所有tags
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)cleanTags:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
查询全部tags
|
||||
|
||||
@param completion 响应回调,请在回调中获取查询结果
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)getAllTags:(nullable JPUSHTagsOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
验证tag是否绑定
|
||||
|
||||
@param completion 响应回调,回调中查看是否绑定
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)validTag:(NSString *)tag
|
||||
completion:(nullable JPUSHTagValidOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
设置Alias
|
||||
|
||||
@param alias 需要设置的alias
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setAlias:(NSString *)alias
|
||||
completion:(nullable JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
删除alias
|
||||
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteAlias:(nullable JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
/**
|
||||
查询当前alias
|
||||
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)getAlias:(nullable JPUSHAliasOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 过滤掉无效的 tags
|
||||
*
|
||||
* @discussion 如果 tags 数量超过限制数量, 则返回靠前的有效的 tags.
|
||||
* 建议设置 tags 前用此接口校验. SDK 内部也会基于此接口来做过滤.
|
||||
*/
|
||||
+ (NSSet *)filterValidTags:(NSSet *)tags;
|
||||
|
||||
|
||||
/*!
|
||||
* Property操作接口
|
||||
* 支持增加/删除/清空操作
|
||||
* 详情请参考文档:https://docs.jiguang.cn/jpush/client/iOS/ios_api/)
|
||||
*/
|
||||
|
||||
/**
|
||||
新增/更新用户属性
|
||||
|
||||
如果某个用户属性之前已经存在了,则会更新;不存在,则会新增
|
||||
|
||||
@param properties 需要新增或者更新的的用户属性内容,类型为NSDictionary;
|
||||
Key 为用户属性名称,类型必须是 NSString 类型;Value为用户属性值,只支持 NSString、NSNumber、NSDate类型,如果属性为BOOL类型,传值时请转成NSNumber类型
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)setProperties:(NSDictionary *)properties
|
||||
completion:(nullable JPUSHPropertiesOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/**
|
||||
删除指定属性
|
||||
|
||||
@param keys 需要删除的属性名称集合
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)deleteProperties:(NSSet<NSString *> *)keys
|
||||
completion:(nullable JPUSHPropertiesOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/**
|
||||
清空所有属性
|
||||
@param completion 响应回调
|
||||
@param seq 请求序列号
|
||||
*/
|
||||
+ (void)cleanProperties:(nullable JPUSHPropertiesOperationCompletion)completion
|
||||
seq:(NSInteger)seq;
|
||||
|
||||
|
||||
/*!
|
||||
* 应用内消息接口
|
||||
* 使用应用内消息需要配置以下两个接口。请在进入页面和离开页面的时候相应地配置。以下两个接口请配套调用。
|
||||
*/
|
||||
|
||||
/**
|
||||
进入页面
|
||||
|
||||
请与 + (void)pageLeave:(NSString *)pageName; 方法配套使用
|
||||
|
||||
@param pageName 页面名
|
||||
@discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。
|
||||
*/
|
||||
+ (void)pageEnterTo:(NSString *)pageName;
|
||||
|
||||
|
||||
/**
|
||||
离开页面
|
||||
|
||||
请与 + (void)pageEnterTo:(NSString *)pageName;方法配套使用
|
||||
|
||||
@param pageName 页面名
|
||||
@discussion 使用应用内消息功能,需要配置pageEnterTo:和pageLeave:函数。
|
||||
*/
|
||||
+ (void)pageLeave:(NSString *)pageName;
|
||||
|
||||
|
||||
/*!
|
||||
* @abstract 设置应用内消息的代理
|
||||
*
|
||||
* @discussion 遵守JPUSHInAppMessageDelegate的代理对象
|
||||
*
|
||||
*/
|
||||
+ (void)setInAppMessageDelegate:(id<JPUSHInAppMessageDelegate>)inAppMessageDelegate;
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
/// @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)setGeofeneceMaxCount:(NSInteger)count;
|
||||
|
||||
/**
|
||||
设置地理围栏'圈内'类型的检测周期
|
||||
默认15分钟检测一次
|
||||
*/
|
||||
+ (void)setGeofenecePeriodForInside:(NSInteger)seconds;
|
||||
|
||||
/**
|
||||
注册地理围栏的代理
|
||||
|
||||
@param delegate 代理
|
||||
@param launchOptions app启动完成是收到的字段参数
|
||||
*/
|
||||
+ (void)registerLbsGeofenceDelegate:(id<JPUSHGeofenceDelegate>)delegate withLaunchOptions:(nullable 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:(nullable 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:(nullable 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 * _Nullable 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;
|
||||
|
||||
/*!
|
||||
数据采集控制
|
||||
|
||||
@param control 数据采集配置。
|
||||
*/
|
||||
+ (void)setCollectControl:(JPushCollectControl *)control;
|
||||
|
||||
/*!
|
||||
* @abstract 设置SDK地理位置权限开关
|
||||
*
|
||||
* @discussion 关闭地理位置之后,SDK地理围栏的相关功能将受到影响,默认是开启。
|
||||
*
|
||||
*/
|
||||
+ (void)setLocationEanable:(BOOL)isEanble;
|
||||
|
||||
/*!
|
||||
* @abstract 设置PUSH开关
|
||||
*
|
||||
* @discussion 关闭PUSH之后,将接收不到极光通知推送、自定义消息推送、liveActivity消息推送,默认是开启。
|
||||
*
|
||||
*/
|
||||
+ (void)setPushEnable:(BOOL)isEnable completion:(nullable void (^)(NSInteger iResCode))completion;
|
||||
|
||||
/*!
|
||||
* @abstract 设置用户分群推送功能开关
|
||||
*
|
||||
* @param isEnable YES:开启,NO:关闭,默认是开启。
|
||||
*
|
||||
*/
|
||||
+ (void)setSmartPushEnable:(BOOL)isEnable;
|
||||
|
||||
/*!
|
||||
* @abstract 设置应用内提醒消息的代理
|
||||
*
|
||||
* @discussion 遵守JPushNotiInMessageDelegate的代理对象
|
||||
*
|
||||
*/
|
||||
+ (void)setNotiInMessageDelegate:(id<JPUSHNotiInMessageDelegate>)notiInMessageDelegate;
|
||||
|
||||
|
||||
|
||||
///----------------------------------------------------
|
||||
///********************下列方法已过期********************
|
||||
///**************请使用新版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:(UNNotification *)notification NS_AVAILABLE_IOS(12.0);
|
||||
|
||||
/**
|
||||
* 监测通知授权状态返回的结果
|
||||
* @param status 授权通知状态,详见JPAuthorizationStatus
|
||||
* @param info 更多信息,预留参数
|
||||
*/
|
||||
- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(nullable NSDictionary *)info;
|
||||
|
||||
@end
|
||||
|
||||
@protocol JPUSHGeofenceDelegate <NSObject>
|
||||
/**
|
||||
触发地理围栏
|
||||
@param geofence 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceRegion:(nullable NSDictionary *)geofence
|
||||
error:(nullable NSError *)error;
|
||||
|
||||
/**
|
||||
拉取地理围栏列表的回调
|
||||
|
||||
@param geofenceList 地理围栏列表
|
||||
*/
|
||||
- (void)jpushCallbackGeofenceReceived:(nullable NSArray<NSDictionary*> *)geofenceList;
|
||||
|
||||
/**
|
||||
进入地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期")));
|
||||
|
||||
/**
|
||||
离开地理围栏区域
|
||||
|
||||
@param geofenceId 地理围栏id
|
||||
@param userInfo 地理围栏触发时返回的信息
|
||||
@param error 错误信息
|
||||
*/
|
||||
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *_Nullable)userInfo error:(NSError *_Nullable)error __attribute__((deprecated("JPush 3.6.0 版本已过期")));
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@protocol JPUSHNotiInMessageDelegate <NSObject>
|
||||
|
||||
/**
|
||||
应用内提醒消息展示的回调
|
||||
|
||||
@param content 应用内提醒消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushNotiInMessageDidShowWithContent:(NSDictionary *)content;
|
||||
|
||||
/**
|
||||
应用内提醒消息点击的回调
|
||||
|
||||
@param content 应用内提醒消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushNotiInMessageDidClickWithContent:(NSDictionary *)content;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@protocol JPUSHInAppMessageDelegate <NSObject>
|
||||
|
||||
/**
|
||||
应用内消息展示的回调
|
||||
|
||||
@param inAppMessage 应用内消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushInAppMessageDidShow:(JPushInAppMessage *)inAppMessage;
|
||||
|
||||
/**
|
||||
应用内消息点击的回调
|
||||
|
||||
@param inAppMessage 应用内消息的内容
|
||||
|
||||
*/
|
||||
- (void)jPushInAppMessageDidClick:(JPushInAppMessage *)inAppMessage;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
23
src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy
Normal file
23
src/ios/lib/jpush-ios-5.6.0.xcframework/ios-arm64_x86_64-simulator/PrivacyInfo.xcprivacy
Normal file
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>NSPrivacyTrackingDomains</key>
|
||||
<array/>
|
||||
<key>NSPrivacyCollectedDataTypes</key>
|
||||
<array/>
|
||||
<key>NSPrivacyTracking</key>
|
||||
<false/>
|
||||
<key>NSPrivacyAccessedAPITypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||
<array>
|
||||
<string>CA92.1</string>
|
||||
</array>
|
||||
<key>NSPrivacyAccessedAPIType</key>
|
||||
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||
</dict>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
Binary file not shown.
@ -1,74 +1,93 @@
|
||||
var JPushPlugin = function () {}
|
||||
var JPushPlugin = function() {};
|
||||
|
||||
// private plugin function
|
||||
|
||||
JPushPlugin.prototype.receiveMessage = {}
|
||||
JPushPlugin.prototype.openNotification = {}
|
||||
JPushPlugin.prototype.receiveNotification = {}
|
||||
JPushPlugin.prototype.receiveMessage = {};
|
||||
JPushPlugin.prototype.openNotification = {};
|
||||
JPushPlugin.prototype.receiveNotification = {};
|
||||
|
||||
JPushPlugin.prototype.isPlatformIOS = function () {
|
||||
return (device.platform === 'iPhone' ||
|
||||
device.platform === 'iPad' ||
|
||||
device.platform === 'iPod touch' ||
|
||||
device.platform === 'iOS')
|
||||
}
|
||||
JPushPlugin.prototype.isPlatformIOS = function() {
|
||||
return (
|
||||
device.platform === "iPhone" ||
|
||||
device.platform === "iPad" ||
|
||||
device.platform === "iPod touch" ||
|
||||
device.platform === "iOS"
|
||||
);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.errorCallback = function (msg) {
|
||||
console.log('JPush Callback Error: ' + msg)
|
||||
}
|
||||
JPushPlugin.prototype.errorCallback = function(msg) {
|
||||
console.log("JPush Callback Error: " + msg);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.callNative = function (name, args, successCallback, errorCallback) {
|
||||
JPushPlugin.prototype.callNative = function(
|
||||
name,
|
||||
args,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
if (errorCallback) {
|
||||
cordova.exec(successCallback, errorCallback, 'JPushPlugin', name, args)
|
||||
cordova.exec(successCallback, errorCallback, "JPushPlugin", name, args);
|
||||
} else {
|
||||
cordova.exec(successCallback, this.errorCallback, 'JPushPlugin', name, args)
|
||||
cordova.exec(
|
||||
successCallback,
|
||||
this.errorCallback,
|
||||
"JPushPlugin",
|
||||
name,
|
||||
args
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Common methods
|
||||
JPushPlugin.prototype.init = function () {
|
||||
JPushPlugin.prototype.init = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('initial', [], null)
|
||||
this.callNative("initial", [], null);
|
||||
} else {
|
||||
this.callNative('init', [], null)
|
||||
this.callNative("init", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setDebugMode = function (mode) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setDebugMode', [mode], null)
|
||||
JPushPlugin.prototype.setDebugMode = function(mode) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setDebugMode", [mode], null);
|
||||
} else {
|
||||
if (mode === true) {
|
||||
this.setDebugModeFromIos()
|
||||
this.setDebugModeFromIos();
|
||||
} else {
|
||||
this.setLogOFF()
|
||||
this.setLogOFF();
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.getRegistrationID = function (successCallback) {
|
||||
this.callNative('getRegistrationID', [], successCallback)
|
||||
}
|
||||
JPushPlugin.prototype.setDataInsightsEnable = function(mode) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setDataInsightsEnable", [mode], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.stopPush = function () {
|
||||
this.callNative('stopPush', [], null)
|
||||
}
|
||||
JPushPlugin.prototype.getRegistrationID = function(successCallback) {
|
||||
this.callNative("getRegistrationID", [], successCallback);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.resumePush = function () {
|
||||
this.callNative('resumePush', [], null)
|
||||
}
|
||||
JPushPlugin.prototype.stopPush = function() {
|
||||
this.callNative("stopPush", [], null);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.isPushStopped = function (successCallback) {
|
||||
this.callNative('isPushStopped', [], successCallback)
|
||||
}
|
||||
JPushPlugin.prototype.resumePush = function() {
|
||||
this.callNative("resumePush", [], null);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearLocalNotifications = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('clearLocalNotifications', [], null)
|
||||
JPushPlugin.prototype.isPushStopped = function(successCallback) {
|
||||
this.callNative("isPushStopped", [], successCallback);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearLocalNotifications = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("clearLocalNotifications", [], null);
|
||||
} else {
|
||||
this.clearAllLocalNotifications()
|
||||
this.clearAllLocalNotifications();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 设置标签。
|
||||
@ -76,54 +95,83 @@ JPushPlugin.prototype.clearLocalNotifications = function () {
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
|
||||
*/
|
||||
JPushPlugin.prototype.setTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('setTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.setTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("setTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 新增标签。
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
|
||||
*/
|
||||
JPushPlugin.prototype.addTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('addTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.addTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("addTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除指定标签。
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tags': ['tag1', 'tag2'] }
|
||||
*/
|
||||
JPushPlugin.prototype.deleteTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('deleteTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.deleteTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("deleteTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 清除所有标签。
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.cleanTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('cleanTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.cleanTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("cleanTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询所有标签。
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.getAllTags = function (params, successCallback, errorCallback) {
|
||||
this.callNative('getAllTags', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.getAllTags = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("getAllTags", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询指定标签与当前用户的绑定状态。
|
||||
*
|
||||
* @param params = { 'sequence': number, 'tag': string }
|
||||
*/
|
||||
JPushPlugin.prototype.checkTagBindState = function (params, successCallback, errorCallback) {
|
||||
this.callNative('checkTagBindState', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.checkTagBindState = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative(
|
||||
"checkTagBindState",
|
||||
[params],
|
||||
successCallback,
|
||||
errorCallback
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* 设置别名。
|
||||
@ -131,27 +179,39 @@ JPushPlugin.prototype.checkTagBindState = function (params, successCallback, err
|
||||
*
|
||||
* @param params = { 'sequence': number, 'alias': string }
|
||||
*/
|
||||
JPushPlugin.prototype.setAlias = function (params, successCallback, errorCallback) {
|
||||
this.callNative('setAlias', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.setAlias = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("setAlias", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除别名。
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.deleteAlias = function (params, successCallback, errorCallback) {
|
||||
this.callNative('deleteAlias', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.deleteAlias = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("deleteAlias", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
/**
|
||||
* 查询当前绑定的别名。
|
||||
*
|
||||
* @param params = { 'sequence': number }
|
||||
*/
|
||||
JPushPlugin.prototype.getAlias = function (params, successCallback, errorCallback) {
|
||||
this.callNative('getAlias', [params], successCallback, errorCallback)
|
||||
}
|
||||
JPushPlugin.prototype.getAlias = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("getAlias", [params], successCallback, errorCallback);
|
||||
};
|
||||
|
||||
// 判断系统设置中是否对本应用启用通知。
|
||||
// iOS: 返回值如果大于 0,代表通知开启;0: 通知关闭。
|
||||
@ -161,224 +221,314 @@ JPushPlugin.prototype.getAlias = function (params, successCallback, errorCallbac
|
||||
// UIRemoteNotificationTypeAlert = 1 << 2,
|
||||
// UIRemoteNotificationTypeNewsstandContentAvailability = 1 << 3,
|
||||
// Android: 返回值 1 代表通知启用;0: 通知关闭。
|
||||
JPushPlugin.prototype.getUserNotificationSettings = function (successCallback) {
|
||||
JPushPlugin.prototype.getUserNotificationSettings = function(successCallback) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('getUserNotificationSettings', [], successCallback)
|
||||
} else if (device.platform === 'Android') {
|
||||
this.callNative('areNotificationEnabled', [], successCallback)
|
||||
this.callNative("getUserNotificationSettings", [], successCallback);
|
||||
} else if (device.platform === "Android") {
|
||||
this.callNative("areNotificationEnabled", [], successCallback);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// iOS methods
|
||||
|
||||
JPushPlugin.prototype.startJPushSDK = function () {
|
||||
this.callNative('startJPushSDK', [], null)
|
||||
}
|
||||
JPushPlugin.prototype.startJPushSDK = function() {
|
||||
this.callNative("startJPushSDK", [], null);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setBadge = function (value) {
|
||||
JPushPlugin.prototype.setBadge = function(value) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setBadge', [value], null)
|
||||
this.callNative("setBadge", [value], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.resetBadge = function () {
|
||||
JPushPlugin.prototype.resetBadge = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('resetBadge', [], null)
|
||||
this.callNative("resetBadge", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setDebugModeFromIos = function () {
|
||||
JPushPlugin.prototype.setDebugModeFromIos = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setDebugModeFromIos', [], null)
|
||||
this.callNative("setDebugModeFromIos", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setLogOFF = function () {
|
||||
JPushPlugin.prototype.setLogOFF = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setLogOFF', [], null)
|
||||
this.callNative("setLogOFF", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setCrashLogON = function () {
|
||||
JPushPlugin.prototype.setCrashLogON = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('crashLogON', [], null)
|
||||
this.callNative("crashLogON", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addLocalNotificationForIOS = function (delayTime, content,
|
||||
badge, notificationID, extras) {
|
||||
JPushPlugin.prototype.addLocalNotificationForIOS = function(
|
||||
delayTime,
|
||||
content,
|
||||
badge,
|
||||
notificationID,
|
||||
extras
|
||||
) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setLocalNotification', [delayTime, content, badge, notificationID, extras], null)
|
||||
this.callNative(
|
||||
"setLocalNotification",
|
||||
[delayTime, content, badge, notificationID, extras],
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function (identifierKey) {
|
||||
JPushPlugin.prototype.deleteLocalNotificationWithIdentifierKeyInIOS = function(
|
||||
identifierKey
|
||||
) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('deleteLocalNotificationWithIdentifierKey', [identifierKey], null)
|
||||
this.callNative(
|
||||
"deleteLocalNotificationWithIdentifierKey",
|
||||
[identifierKey],
|
||||
null
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.clearAllLocalNotifications = function () {
|
||||
JPushPlugin.prototype.clearAllLocalNotifications = function() {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('clearAllLocalNotifications', [], null)
|
||||
this.callNative("clearAllLocalNotifications", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setLocation = function (latitude, longitude) {
|
||||
JPushPlugin.prototype.setLocation = function(latitude, longitude) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setLocation', [latitude, longitude], null)
|
||||
this.callNative("setLocation", [latitude, longitude], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.startLogPageView = function (pageName) {
|
||||
JPushPlugin.prototype.startLogPageView = function(pageName) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('startLogPageView', [pageName], null)
|
||||
this.callNative("startLogPageView", [pageName], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.stopLogPageView = function (pageName) {
|
||||
JPushPlugin.prototype.stopLogPageView = function(pageName) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('stopLogPageView', [pageName], null)
|
||||
this.callNative("stopLogPageView", [pageName], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.beginLogPageView = function (pageName, duration) {
|
||||
JPushPlugin.prototype.beginLogPageView = function(pageName, duration) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('beginLogPageView', [pageName, duration], null)
|
||||
this.callNative("beginLogPageView", [pageName, duration], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setApplicationIconBadgeNumber = function (badge) {
|
||||
JPushPlugin.prototype.setApplicationIconBadgeNumber = function(badge) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('setApplicationIconBadgeNumber', [badge], null)
|
||||
this.callNative("setApplicationIconBadgeNumber", [badge], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.getApplicationIconBadgeNumber = function (callback) {
|
||||
JPushPlugin.prototype.getApplicationIconBadgeNumber = function(callback) {
|
||||
if (this.isPlatformIOS()) {
|
||||
this.callNative('getApplicationIconBadgeNumber', [], callback)
|
||||
this.callNative("getApplicationIconBadgeNumber", [], callback);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addDismissActions = function (actions, categoryId) {
|
||||
this.callNative('addDismissActions', [actions, categoryId])
|
||||
}
|
||||
JPushPlugin.prototype.addDismissActions = function(actions, categoryId) {
|
||||
this.callNative("addDismissActions", [actions, categoryId]);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addNotificationActions = function (actions, categoryId) {
|
||||
this.callNative('addNotificationActions', [actions, categoryId])
|
||||
}
|
||||
JPushPlugin.prototype.addNotificationActions = function(actions, categoryId) {
|
||||
this.callNative("addNotificationActions", [actions, categoryId]);
|
||||
};
|
||||
|
||||
// Android methods
|
||||
JPushPlugin.prototype.getConnectionState = function (successCallback) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('getConnectionState', [], successCallback)
|
||||
JPushPlugin.prototype.getConnectionState = function(successCallback) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("getConnectionState", [], successCallback);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setBasicPushNotificationBuilder', [], null)
|
||||
JPushPlugin.prototype.setBasicPushNotificationBuilder = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setBasicPushNotificationBuilder", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setCustomPushNotificationBuilder', [], null)
|
||||
JPushPlugin.prototype.setCustomPushNotificationBuilder = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setCustomPushNotificationBuilder", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function (data) {
|
||||
if (device.platform === 'Android') {
|
||||
data = JSON.stringify(data)
|
||||
var event = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.receiveRegistrationId', event)
|
||||
JPushPlugin.prototype.receiveRegistrationIdInAndroidCallback = function(data) {
|
||||
if (device.platform === "Android") {
|
||||
data = JSON.stringify(data);
|
||||
var event = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.receiveRegistrationId", event);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.receiveMessageInAndroidCallback = function (data) {
|
||||
data = JSON.stringify(data)
|
||||
this.receiveMessage = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.receiveMessage', this.receiveMessage)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.openNotificationInAndroidCallback = function (data) {
|
||||
data = JSON.stringify(data)
|
||||
this.openNotification = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.openNotification', this.openNotification)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.receiveNotificationInAndroidCallback = function (data) {
|
||||
data = JSON.stringify(data)
|
||||
this.receiveNotification = JSON.parse(data)
|
||||
cordova.fireDocumentEvent('jpush.receiveNotification', this.receiveNotification)
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.clearAllNotification = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('clearAllNotification', [], null)
|
||||
JPushPlugin.prototype.receiveMessageInAndroidCallback = function(data) {
|
||||
data = JSON.stringify(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.clearNotificationById = function (id) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('clearNotificationById', [id], null)
|
||||
};
|
||||
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.setLatestNotificationNum = function (num) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setLatestNotificationNum', [num], null)
|
||||
}
|
||||
}
|
||||
JPushPlugin.prototype.openNotificationInAndroidCallback = function(data) {
|
||||
data = JSON.stringify(data);
|
||||
this.openNotification = JSON.parse(data);
|
||||
cordova.fireDocumentEvent("jpush.openNotification", this.openNotification);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addLocalNotification = function (builderId, content, title,
|
||||
notificationID, broadcastTime, extras) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('addLocalNotification',
|
||||
[builderId, content, title, notificationID, broadcastTime, extras], null)
|
||||
}
|
||||
}
|
||||
JPushPlugin.prototype.receiveNotificationInAndroidCallback = function(data) {
|
||||
data = JSON.stringify(data);
|
||||
this.receiveNotification = JSON.parse(data);
|
||||
cordova.fireDocumentEvent(
|
||||
"jpush.receiveNotification",
|
||||
this.receiveNotification
|
||||
);
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.removeLocalNotification = function (notificationID) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('removeLocalNotification', [notificationID], null)
|
||||
JPushPlugin.prototype.clearAllNotification = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("clearAllNotification", [], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.reportNotificationOpened = function (msgID) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('reportNotificationOpened', [msgID], null)
|
||||
JPushPlugin.prototype.clearNotificationById = function(id) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("clearNotificationById", [id], null);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setLatestNotificationNum = function(num) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setLatestNotificationNum", [num], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.addLocalNotification = function(
|
||||
builderId,
|
||||
content,
|
||||
title,
|
||||
notificationID,
|
||||
broadcastTime,
|
||||
extras
|
||||
) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative(
|
||||
"addLocalNotification",
|
||||
[builderId, content, title, notificationID, broadcastTime, extras],
|
||||
null
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.removeLocalNotification = function(notificationID) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("removeLocalNotification", [notificationID], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.reportNotificationOpened = function(msgID) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("reportNotificationOpened", [msgID], null);
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 用于在 Android 6.0 及以上系统,申请一些权限
|
||||
* 具体可看:http://docs.jpush.io/client/android_api/#android-60
|
||||
*/
|
||||
JPushPlugin.prototype.requestPermission = function () {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('requestPermission', [], null)
|
||||
JPushPlugin.prototype.requestPermission = function() {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("requestPermission", [], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setSilenceTime = function(
|
||||
startHour,
|
||||
startMinute,
|
||||
endHour,
|
||||
endMinute
|
||||
) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative(
|
||||
"setSilenceTime",
|
||||
[startHour, startMinute, endHour, endMinute],
|
||||
null
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setPushTime = function(weekdays, startHour, endHour) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setPushTime", [weekdays, startHour, endHour], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setGeofenceInterval = function(interval) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setGeofenceInterval", [interval], null);
|
||||
}
|
||||
};
|
||||
|
||||
JPushPlugin.prototype.setMaxGeofenceNumber = function(maxNumber) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setMaxGeofenceNumber", [maxNumber], null);
|
||||
}
|
||||
};
|
||||
|
||||
//设置角标
|
||||
JPushPlugin.prototype.setBadgeNumber = function(badgeNumb) {
|
||||
if (device.platform === "Android") {
|
||||
this.callNative("setBadgeNumber", [badgeNumb], null);
|
||||
}
|
||||
};
|
||||
|
||||
//设备是否同意隐私协议
|
||||
JPushPlugin.prototype.setAuth = function(isAuth){
|
||||
if(device.platform === "Android"){
|
||||
this.callNative("setAuth", [isAuth], null);
|
||||
}
|
||||
}
|
||||
|
||||
JPushPlugin.prototype.setSilenceTime = function (startHour, startMinute, endHour, endMinute) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setSilenceTime', [startHour, startMinute, endHour, endMinute], null)
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 设置手机号。
|
||||
*
|
||||
* @param params = { 'sequence': number, 'mobileNumber': string }
|
||||
*/
|
||||
JPushPlugin.prototype.setMobileNumber = function(
|
||||
params,
|
||||
successCallback,
|
||||
errorCallback
|
||||
) {
|
||||
this.callNative("setMobileNumber", [params], successCallback, errorCallback);
|
||||
|
||||
JPushPlugin.prototype.setPushTime = function (weekdays, startHour, endHour) {
|
||||
if (device.platform === 'Android') {
|
||||
this.callNative('setPushTime', [weekdays, startHour, endHour], null)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (!window.plugins) {
|
||||
window.plugins = {}
|
||||
window.plugins = {};
|
||||
}
|
||||
|
||||
if (!window.plugins.jPushPlugin) {
|
||||
window.plugins.jPushPlugin = new JPushPlugin()
|
||||
window.plugins.jPushPlugin = new JPushPlugin();
|
||||
}
|
||||
|
||||
module.exports = new JPushPlugin()
|
||||
module.exports = new JPushPlugin();
|
||||
|
Loading…
x
Reference in New Issue
Block a user