Compare commits

...

71 Commits

Author SHA1 Message Date
0b77c83ec6 解决插件安装时报错,同时未修改配置文件的问题 config file undefined requested for changes no… 2023-01-05 17:56:30 +08:00
李良喜
abb4b6432b 更新JPush版本为v4.8.5 2022-12-23 16:56:39 +08:00
李良喜
00599ca0bc 新增setAuth隐私合规接口 2022-12-23 16:44:25 +08:00
huangshuni
3faac1945c Merge pull request #449 from huangshuni/master
3.8.6
2022-09-09 11:16:09 +08:00
huangshuni
145b75d90a 更新插件版本号为3.8.6 2022-09-06 10:59:31 +08:00
huangshuni
56d9417dbc 更新iOS JPush4.8.1 2022-09-06 10:48:41 +08:00
LcTerry
6932b84f4e Merge pull request #448 from LcTerry/master
更新找不到插件问题,版本号385
2022-08-30 18:31:19 +08:00
Lcterry
048c12d8dd 更新找不到插件问题,版本号385 2022-08-30 18:27:43 +08:00
LcTerry
04891c4fa1 Merge pull request #447 from LcTerry/master
更新Jpush 481+版本号384
2022-08-30 16:59:06 +08:00
Lcterry
6876a58138 版本号384 2022-08-30 16:49:48 +08:00
Lcterry
86dcd351cd 更新Jpush 481+版本号384 2022-08-30 16:47:39 +08:00
LcTerry
88fe3a4a24 Merge pull request #446 from LcTerry/master
更新Jpush 472+版本号483
2022-08-11 10:38:10 +08:00
Lcterry
b3faac2a77 Merge remote-tracking branch 'main/master' 2022-08-11 10:36:42 +08:00
Lcterry
4a711b3a93 更新Jpush 472+版本号483 2022-08-11 10:33:40 +08:00
huangshuni
fa116c665b Merge pull request #445 from huangshuni/master
更新iOS sdk到4.6.6
2022-08-10 17:50:53 +08:00
huangshuni
4300730073 更新iOS sdk到4.6.6 2022-08-10 17:48:46 +08:00
JoshLi
76d6c5ddb1 更新文档 2021-07-28 11:29:04 +08:00
JoshLi
521422cac0 更新插件版本v382 2021-07-28 11:28:51 +08:00
JoshLi
c629dcc033 更新iOSsdk到v374 2021-07-28 11:20:56 +08:00
JoshLi
aeee619eab 更新androidsdk到v428 2021-07-28 11:17:08 +08:00
JoshLi
bc9e441fe2 iOS添加手机号设置接口 2021-07-28 10:58:19 +08:00
JoshLi
fad4745e01 Android添加手机号设置接口 2021-07-27 18:32:54 +08:00
JoshLi
10b29611c5 升级JPush到Android410,iOS352 2021-06-01 17:30:37 +08:00
JoshLi
03429474c0 升级JPush到Android410,iOS352 2021-06-01 17:24:43 +08:00
JoshLi
e56a05c64b Update SDK to Android v3.6.6 iOS v3.3.3 2020-06-10 18:04:30 +08:00
JoshLi
a50bafcf3e Update iOS UIWebView to WKWebView 2020-06-10 18:03:47 +08:00
lilx
60176c1ea6 Merge branch 'dev' 2020-06-03 14:49:59 +08:00
lilx
c929496721 Release v3.7.5 2020-06-03 14:38:40 +08:00
lilx
bdd9a8beea Release v3.7.5 2020-06-03 14:24:58 +08:00
1060420895@qq.com
511eee622f Merge branch 'dev' 2020-04-10 16:42:55 +08:00
1060420895@qq.com
2f4669471f Release v3.7.4 2020-04-10 16:36:49 +08:00
1060420895@qq.com
85e3a23f88 Merge branch 'dev' 2020-04-10 16:09:04 +08:00
1060420895@qq.com
206f2ac89e update doc 2020-04-10 16:05:03 +08:00
1060420895@qq.com
57b9364279 Update android jpush to v3.5.8 2020-04-10 16:01:00 +08:00
1060420895@qq.com
e0db803818 Add API setBadgeNumber for Android 2020-04-10 15:56:06 +08:00
1060420895@qq.com
e140dc3b77 android 更新到 3.7.4 2020-04-10 15:48:26 +08:00
1060420895@qq.com
a26822b894 add API setBadgeNumber for android 2020-04-10 15:41:35 +08:00
1060420895@qq.com
7dd7a4a86c add API setBadgeNumber for Android 2020-04-10 15:34:27 +08:00
1060420895@qq.com
b7a2a74d88 add API setBadgeNumber for Android 2020-04-10 15:30:46 +08:00
1060420895@qq.com
2f8234c29f add API set setBadgeNumber for Android 2020-04-10 15:23:13 +08:00
1060420895@qq.com
a9b5af06a5 add API set setBadgeNumber for Android 2020-04-10 15:19:20 +08:00
1060420895@qq.com
ddfb952bcf Release v3.7.4 2020-04-10 15:15:09 +08:00
JoshLipan
74fea46b1c Merge pull request #418 from jpush/dev
Dev
2019-10-21 15:16:45 +08:00
JoshLi
b2f79c6234 Release v3.7.2 2019-10-21 15:15:29 +08:00
JoshLi
9e23995555 Update iOS jpush to v3.2.6 2019-10-21 15:14:40 +08:00
JoshLi
a7455240a1 Update android jpush to v3.3.8 2019-10-21 15:14:18 +08:00
weiruiyang
07466a8718 Merge pull request #411 from weiruiyang/master
版本更新到 3.7.2
2019-07-29 18:23:51 +08:00
weiry
2b5d59e32e 版本更新到 3.7.2 2019-07-29 18:22:44 +08:00
weiruiyang
e4b70a561a Merge pull request #410 from weiruiyang/master
版本更新到 3.7.1
2019-07-29 14:52:16 +08:00
weiry
da8c6c29e9 版本更新到 3.7.1 2019-07-29 14:50:19 +08:00
weiruiyang
2ebacad254 Merge pull request #409 from weiruiyang/master
更新版本
2019-07-29 14:16:12 +08:00
weiry
9751b15bf0 ios 更新到 3.2.1.a 2019-07-29 13:55:19 +08:00
weiry
b5fd5aa51a android 更新到 3.3.4 2019-07-29 13:52:32 +08:00
JoshLipan
ee3e6b9e75 Update doc 2019-04-09 18:21:14 +08:00
HuminiOS
72407b0b9c Merge pull request #400 from jpush/dev
update readme
2019-03-29 10:23:47 +08:00
huangminlinux
2a427c70f9 update readme 2019-03-29 10:23:18 +08:00
JoshLipan
bc12d3c606 Merge pull request #398 from jpush/dev
Dev
2019-03-22 16:32:04 +08:00
JoshLi
9b1bff2ce1 Release v3.6.4 2019-03-22 16:28:06 +08:00
JoshLi
3b5fc629dd Update Android SDK to v3.2.0 2019-03-22 16:27:31 +08:00
JoshLipan
fa4f3ac0d7 Merge pull request #397 from jpush/dev
Dev
2019-02-28 16:28:58 +08:00
JoshLi
3ad9a415e9 Release v3.6.3 2019-02-28 16:27:47 +08:00
JoshLi
d76d01c856 Set exported false for custom Receiver 2019-02-28 16:27:21 +08:00
HuminiOS
b7d4ba5111 Merge pull request #396 from jpush/dev
update readme
2019-02-25 10:13:55 +08:00
huangminlinux
7c326599aa update readme 2019-02-25 10:09:10 +08:00
HuminiOS
2adbba2943 Merge pull request #395 from jpush/dev
update readme
2019-02-24 22:26:35 +08:00
huangminlinux
5b22d798cb update readme 2019-02-24 22:25:01 +08:00
HuminiOS
eb624a7bb2 Merge pull request #394 from jpush/dev
Dev
2019-02-24 00:03:44 +08:00
huangminlinux
e29f00f77f delete file 2019-02-24 00:00:18 +08:00
huangminlinux
1ecb2b273a the adaption to ionic4 project and udpate ionic plugin to 2.0.0 version 2019-02-23 23:58:23 +08:00
huangminlinux
6767af7488 udpate jpush plugin to 3.6.2 2019-01-11 14:34:09 +08:00
huangminlinux
03eab0c59e update iOS SDK to 3.1.2 2019-01-11 14:31:56 +08:00
49 changed files with 3177 additions and 605 deletions

2
.gitignore vendored
View File

@@ -1,5 +1,5 @@
# Created by https://www.gitignore.io/api/macos,apachecordova
.idea
### ApacheCordova ###
# Apache Cordova generated files and directories
bin/*

View File

@@ -68,13 +68,19 @@
如果使用了 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: [
...

View File

@@ -245,4 +245,52 @@ window.JPush.setMaxGeofenceNumber(maxNumber)
#### 参数说明
- maxNumber: 最多允许保存的地理围栏个数
- maxNumber: 最多允许保存的地理围栏个数
### API - setBadgeNumber
设置App角标目前仅华为系手机支持。
#### 接口定义
```js
window.JPush.setBadgeNumber(badgeNumb)
```
#### 参数说明
- badgeNumb: 角标显示数字小于或等0角标显示数字清楚
### API - setAuth
设置用户是否同意隐私协议
#### 接口定义
```js
window.JPush.setAuth(isAuth)
```
#### 参数说明
- isAuth: 是否同意隐私协议true 已同意false未同意
#### 调用逻辑
- 宿主 APP 在首次安装,冷启动
- 用户隐私协议告知
- 用户确认授权
- 告知极光授权结果
同意隐私协议:
```js
window.JPush.setAuth(true)
```
不同意隐私协议:
```js
window.JPush.setAuth(false)
```

View File

@@ -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) {
// 系统设置中打开了应用推送。
})
}
})
```

BIN
example/css/.DS_Store vendored

Binary file not shown.

View File

@@ -1,6 +1,6 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>JPush Phonegap Simple Demo</title>
@@ -18,15 +18,15 @@
initiateUI();
};
var getRegistrationID = function() {
window.JPush.getRegistrationID(onGetRegistrationID);
};
var onGetRegistrationID = function(data) {
try {
console.log("JPushPlugin:registrationID is " + data);
if (data.length == 0) {
var t1 = window.setTimeout(getRegistrationID, 1000);
}
@@ -36,7 +36,7 @@
console.log(exception);
}
};
var onTagsWithAlias = function(event) {
try {
console.log("onTagsWithAlias");
@@ -48,7 +48,8 @@
console.log(exception)
}
};
var badgeNumb = 0;
var onOpenNotification = function(event) {
try {
var alertContent;
@@ -57,12 +58,17 @@
} else {
alertContent = event.aps.alert;
}
badgeNumb = badgeNumb - 1;
badgeNumb = badgeNumb<=0 ? 0 : badgeNumb;
window.JPush.setBadgeNumber(badgeNumb);
alert("open Notification:" + alertContent);
} catch (exception) {
console.log("JPushPlugin:onOpenNotification" + exception);
}
};
var onReceiveNotification = function(event) {
try {
var alertContent;
@@ -72,11 +78,14 @@
alertContent = event.aps.alert;
}
$("#notificationResult").html(alertContent);
badgeNumb = badgeNumb + 1;
window.JPush.setBadgeNumber(badgeNumb);
} catch (exception) {
console.log(exception)
}
};
var onReceiveMessage = function(event) {
try {
var message;
@@ -86,11 +95,24 @@
message = event.content;
}
$("#messageResult").html(message);
badgeNumb = badgeNumb + 1;
window.JPush.setBadgeNumber(badgeNumb);
} catch (exception) {
console.log("JPushPlugin:onReceiveMessage-->" + exception);
}
};
var onResume = function(event){
try {
badgeNumb = 0
window.JPush.setBadgeNumber(0);
} catch (exception) {
console.log("onResume-->" + exception);
}
}
var initiateUI = function() {
try {
window.JPush.init();
@@ -110,7 +132,7 @@
var tag2 = $("#tagText2").val()
var tag3 = $("#tagText3").val()
var tags = []
if (tag1) {
tags.push(tag1)
}
@@ -123,7 +145,7 @@
window.JPush.setTags({ sequence: 1, tags: tags },
function (result) {
$("#tagsResult").html(result.tags)
$("#tagsResult").html(JSON.stringify(result.tags))
}, function (error) {
alert(error.code)
})
@@ -135,7 +157,7 @@
$("#getAllTags").click(function (event) {
window.JPush.getAllTags({ sequence: 2 },
function (result) {
$("#tagsResult").html(result.tags)
$("#tagsResult").html(JSON.stringify(result.tags))
}, function (error) {
alert(error.code)
})
@@ -178,15 +200,26 @@
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>
<body>
<div data-role="page" id="page">
<div data-role="content">
@@ -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">
@@ -235,13 +276,17 @@
<input type="button" id="getAllTags" value="Get all tags" />
<input type="button" id="cleanTags" value="Clean tags" />
</div>
<div data-role="fieldcontain">
<input type="button" id="setAlias" value="Set alias" />
<input type="button" id="getAlias" value="Get alias" />
<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>

View File

@@ -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

View File

@@ -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
View 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

File diff suppressed because one or more lines are too long

View 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"}]}}}}]

View File

@@ -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",

View File

@@ -1,6 +1,6 @@
{
"name": "jpush-phonegap-plugin",
"version": "3.6.1",
"version": "4.8.5",
"description": "JPush for cordova plugin",
"cordova": {
"id": "jpush-phonegap-plugin",
@@ -23,7 +23,7 @@
],
"devDependencies": {
"cordova-plugin-device": "*",
"cordova-plugin-jcore": ">=1.2.0"
"cordova-plugin-jcore": ">=1.4.0"
},
"author": "JiGuang",
"license": "MIT",

View File

@@ -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.6.1">
version="4.8.5">
<name>JPush</name>
<description>JPush for cordova plugin</description>
@@ -49,7 +49,7 @@
<source-file src="src/ios/Plugins/AppDelegate+JPush.m" />
<header-file src="src/ios/lib/JPUSHService.h" />
<source-file src="src/ios/lib/jpush-ios-3.1.1.a" framework="true" />
<source-file src="src/ios/lib/jpush-ios-4.8.1.a" framework="true" />
<resource-file src="src/ios/JPushConfig.plist" />
<framework src="CFNetwork.framework" weak="true" />
@@ -64,6 +64,7 @@
<framework src="AdSupport.framework" weak="true" />
<framework src="UserNotifications.framework" weak="true" />
<framework src="libresolv.tbd" weak="true" />
<framework src="StoreKit.framework" weak="true" />
<config-file target="*JPushConfig.plist" parent="Appkey">
<string>$APP_KEY</string>
@@ -77,35 +78,76 @@
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest" mode="merge">
<config-file target="AndroidManifest.xml" parent="/manifest">
<!-- Required 一些系统要求的权限,如访问网络等 -->
<permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE"
android:protectionLevel="signature" />
<!-- Required 一些系统要求的权限,如访问网络等-->
<uses-permission android:name="$PACKAGE_NAME.permission.JPUSH_MESSAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<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.WAKE_LOCK" />
<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" mode="merge">
<config-file target="AndroidManifest.xml" parent="/manifest/application">
<!-- Rich push 核心功能 since 2.0.6-->
<activity
android:name="cn.jpush.android.ui.PopWinActivity"
android:exported="true"
android:theme="@style/MyDialogStyle" >
<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: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" />
<category android:name="$PACKAGE_NAME" />
</intent-filter>
</activity>
<!-- Required SDK 核心功能-->
<service android:name="cn.jpush.android.service.PushService"
android:enabled="true"
android:exported="false"
android:process=":remote">
<!-- 可配置android:process参数将PushService放在其他进程中 -->
<service
android:name="cn.jpush.android.service.PushService"
android:process=":pushcore"
android:enabled="true"
android:exported="false">
<intent-filter>
<action android:name="cn.jpush.android.intent.REGISTER" />
<action android:name="cn.jpush.android.intent.REPORT" />
@@ -116,131 +158,185 @@
<!-- since 3.0.9 Required SDK 核心功能-->
<provider
android:authorities="$PACKAGE_NAME.DataProvider"
android:name="cn.jpush.android.service.DataProvider"
android:exported="true" />
android:authorities="$PACKAGE_NAME.DataProvider"
android:name="cn.jpush.android.service.DataProvider"
android:process=":pushcore"
android:exported="false"
/>
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的 JPush 服务相互拉起的功能。 -->
<!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->
<!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
<service android:name="cn.jpush.android.service.DaemonService"
android:enabled="true"
android:exported="true">
<service
android:name="cn.jpush.android.service.DaemonService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="cn.jpush.android.intent.DaemonService" />
<category android:name="$PACKAGE_NAME" />
</intent-filter>
</service>
<!-- since 3.1.0 Required SDK 核心功能-->
<provider
android:authorities="$PACKAGE_NAME.DownloadProvider"
android:name="cn.jpush.android.service.DownloadProvider"
android:exported="true"
android:authorities="$PACKAGE_NAME.DownloadProvider"
android:name="cn.jpush.android.service.DownloadProvider"
android:exported="true"
/>
<!-- Required SDK核心功能-->
<receiver android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true">
<receiver
android:name="cn.jpush.android.service.PushReceiver"
android:enabled="true"
android:exported="false">
<intent-filter android:priority="1000">
<!--Required 显示通知栏 -->
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" /> <!--Required 显示通知栏 -->
<category android:name="$PACKAGE_NAME" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<!-- Optional -->
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<!-- Required SDK核心功能 -->
<activity android:name="cn.jpush.android.ui.PushActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden"
android:exported="false" >
<intent-filter>
<action android:name="cn.jpush.android.ui.PushActivity" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="$PACKAGE_NAME" />
</intent-filter>
</activity>
<!-- SDK 核心功能-->
<activity
android:name="cn.jpush.android.ui.PopWinActivity"
android:configChanges="orientation|keyboardHidden"
android:exported="false"
android:theme="@style/MyDialogStyle">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="$PACKAGE_NAME" />
</intent-filter>
</activity>
<!-- Required SDK 核心功能 -->
<service android:name="cn.jpush.android.service.DownloadService"
android:enabled="true"
android:exported="false">
</service>
<!-- Required SDK核心功能-->
<receiver android:name="cn.jpush.android.service.AlarmReceiver" />
<receiver android:name="cn.jpush.android.service.AlarmReceiver" android:exported="false"/>
<!-- 3.5.0新增,用于定时展示功能 -->
<receiver android:name="cn.jpush.android.service.SchedulerReceiver" android:exported="false"/>
<receiver android:name="cn.jiguang.cordova.push.JPushEventReceiver">
<!--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.RECEIVE_MESSAGE" />
<category android:name="$PACKAGE_NAME" />
<category android:name="$PACKAGE_NAME"></category>
</intent-filter>
</receiver>
<!-- 插件通知广播接收器 -->
<!--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: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-->
<!-- 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" />
</config-file>
<lib-file src="src/android/libs/jpush-android-3.1.8.jar" />
<lib-file src="src/android/libs/jpush-android-4.8.5.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" />
<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"
<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"
<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/test_notification_layout.xml"
target="res/layout/test_notification_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-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" />
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
View 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);
}
}
}

View File

@@ -1,8 +1,8 @@
package cn.jiguang.cordova.push;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;
import android.util.Log;
import org.apache.cordova.CallbackContext;
import org.json.JSONArray;
@@ -11,7 +11,10 @@ import org.json.JSONObject;
import java.util.Set;
import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushMessage;
import cn.jpush.android.api.NotificationMessage;
import cn.jpush.android.helper.Logger;
import cn.jpush.android.service.JPushMessageReceiver;
public class JPushEventReceiver extends JPushMessageReceiver {
@@ -21,98 +24,108 @@ public class JPushEventReceiver extends JPushMessageReceiver {
@Override
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
super.onTagOperatorResult(context, jPushMessage);
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
Set<String> tags = jPushMessage.getTags();
JSONArray tagsJsonArr = new JSONArray();
for (String tag : tags) {
tagsJsonArr.put(tag);
}
try {
tryCallback(jPushMessage, new SuccessCallback() {
@Override
public void onSuccessCallback(JSONObject resultJson) throws JSONException {
Set<String> tags = jPushMessage.getTags();
JSONArray tagsJsonArr = new JSONArray();
for (String tag : tags) {
tagsJsonArr.put(tag);
}
if (tagsJsonArr.length() != 0) {
resultJson.put("tags", tagsJsonArr);
}
} catch (JSONException e) {
e.printStackTrace();
}
callback.success(resultJson);
} else {
try {
resultJson.put("code", jPushMessage.getErrorCode());
} catch (JSONException e) {
e.printStackTrace();
}
callback.error(resultJson);
}
JPushPlugin.eventCallbackMap.remove(sequence);
});
}
@Override
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage) {
super.onCheckTagOperatorResult(context, jPushMessage);
JSONObject resultJson = new JSONObject();
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);
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) {
JLogger.d(TAG,"onRegister:"+regId);
JPushPlugin.transmitReceiveRegistrationId(regId);
}
@Override
public void onMessage(Context context, CustomMessage customMessage) {
super.onMessage(context,customMessage);
//Log.e(TAG,"onMessage:"+customMessage);
// String msg = customMessage.message;//intent.getStringExtra(JPushInterface.EXTRA_MESSAGE);
// Map<String, Object> extras = getNotificationExtras(intent);
// JPushPlugin.transmitMessageReceive(msg, extras);
}
@Override
public void onNotifyMessageArrived(Context context, NotificationMessage notificationMessage) {
super.onNotifyMessageArrived(context, notificationMessage);
JLogger.d(TAG,"onNotifyMessageArrived:"+notificationMessage);
}
@Override
public void onNotifyMessageOpened(Context context, NotificationMessage notificationMessage) {
super.onNotifyMessageOpened(context, notificationMessage);
JLogger.d(TAG,"onNotifyMessageOpened:"+notificationMessage);
}
@Override
public void onMobileNumberOperatorResult(Context context, JPushMessage jPushMessage) {
super.onMobileNumberOperatorResult(context, jPushMessage);
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);
JLogger.d(TAG,"onMultiActionClicked:"+intent);
}
interface SuccessCallback{
void onSuccessCallback(JSONObject resultJson) throws JSONException;
}
public void tryCallback(JPushMessage jPushMessage,SuccessCallback successCallback){
JSONObject resultJson = new JSONObject();
int sequence = jPushMessage.getSequence();
@@ -125,19 +138,16 @@ public class JPushEventReceiver extends JPushMessageReceiver {
CallbackContext callback = 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 {
@@ -146,10 +156,10 @@ public class JPushEventReceiver extends JPushMessageReceiver {
} catch (JSONException e) {
e.printStackTrace();
}
callback.error(resultJson);
}
JPushPlugin.eventCallbackMap.remove(sequence);
}
}

View File

@@ -31,6 +31,7 @@ import cn.jpush.android.api.BasicPushNotificationBuilder;
import cn.jpush.android.api.JPushInterface;
import cn.jpush.android.api.TagAliasCallback;
import cn.jpush.android.data.JPushLocalNotification;
import cn.jiguang.api.utils.JCollectionAuth;
public class JPushPlugin extends CordovaPlugin {
@@ -59,8 +60,9 @@ 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();
@@ -246,6 +248,7 @@ public class JPushPlugin extends CordovaPlugin {
}
void init(JSONArray data, CallbackContext callbackContext) {
JPushInterface.setNotificationCallBackEnable(mContext, true);
JPushInterface.init(mContext);
}
@@ -254,6 +257,7 @@ public class JPushPlugin extends CordovaPlugin {
try {
mode = data.getBoolean(0);
JPushInterface.setDebugMode(mode);
JLogger.setLoggerEnable(mode);
callbackContext.success();
} catch (JSONException e) {
e.printStackTrace();
@@ -296,6 +300,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("error reading num json");
return;
}
if (num != -1) {
JPushInterface.setLatestNotificationNumber(mContext, num);
@@ -364,6 +369,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.setAlias(mContext, sequence, alias);
@@ -379,6 +385,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.deleteAlias(mContext, sequence);
@@ -394,6 +401,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.getAlias(mContext, sequence);
@@ -416,6 +424,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.setTags(mContext, sequence, tags);
@@ -438,6 +447,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.addTags(mContext, sequence, tags);
@@ -460,6 +470,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.deleteTags(mContext, sequence, tags);
@@ -476,6 +487,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.cleanTags(mContext, sequence);
@@ -492,6 +504,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.getAllTags(mContext, sequence);
@@ -510,6 +523,7 @@ public class JPushPlugin extends CordovaPlugin {
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
JPushInterface.checkTagBindState(mContext, sequence, tag);
@@ -637,6 +651,41 @@ public class JPushPlugin extends CordovaPlugin {
JPushInterface.setMaxGeofenceNumber(mContext, maxNumber);
}
void setBadgeNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
int badgeNumb = data.getInt(0);
JPushInterface.setBadgeNumber(mContext, badgeNumb);
}
void setMobileNumber(JSONArray data, CallbackContext callbackContext) throws JSONException {
int sequence = -1;
String number = null;
try {
JSONObject params = data.getJSONObject(0);
sequence = params.getInt("sequence");
number = params.getString("mobileNumber");
} catch (JSONException e) {
e.printStackTrace();
callbackContext.error("Parameters error.");
return;
}
eventCallbackMap.put(sequence, callbackContext);
JPushInterface.setMobileNumber(mContext,sequence, number);
}
void setAuth(JSONArray data, CallbackContext callbackContext) {
boolean isAuth = false;
try {
isAuth = data.getBoolean(0);
JCollectionAuth.setAuth(mContext, isAuth);
callbackContext.success();
} catch (JSONException e) {
e.printStackTrace();
}
}
private boolean isValidHour(int hour) {
return !(hour < 0 || hour > 23);
}

View File

@@ -0,0 +1,6 @@
package cn.jiguang.cordova.push;
import cn.jpush.android.service.JCommonService;
public class PushService extends JCommonService {
}

View File

@@ -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>

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 591 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

View File

Before

Width:  |  Height:  |  Size: 695 B

After

Width:  |  Height:  |  Size: 695 B

View File

Before

Width:  |  Height:  |  Size: 181 B

After

Width:  |  Height:  |  Size: 181 B

View 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>

View 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>

View 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>

View 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>

View File

@@ -5,7 +5,7 @@
style="@style/MyDialogStyle"
android:orientation="vertical"
android:layout_width="280dp"
android:layout_height="250dp" >
android:layout_height="380dp" >
<WebView
android:layout_width="match_parent"

View 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>

View 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>

View 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>

View 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>

View 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>

View File

@@ -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>

View 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>

View 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>

View File

@@ -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>

View 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>

View File

@@ -73,6 +73,9 @@ static NSMutableDictionary *_jpushEventCache;
-(void)addDismissActions:(CDVInvokedUrlCommand*)command;
-(void)addNotificationActions:(CDVInvokedUrlCommand*)command;
// 设置手机号
-(void)setMobileNumber:(CDVInvokedUrlCommand*)command;
/*
* 以下为js中可监听到的事件
* jpush.openNotification 点击推送消息启动或唤醒app

View File

@@ -61,7 +61,7 @@
#else
- (CDVPlugin*)initWithWebView:(UIWebView*)theWebView{
- (CDVPlugin*)initWithWebView:(WKWebView*)theWebView{
NSLog(@"### initWithWebView ");
if (self=[super initWithWebView:theWebView]) {
}
@@ -510,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{

226
src/ios/lib/JPUSHService.h Executable file → Normal file
View File

@@ -9,7 +9,7 @@
* Copyright (c) 2011 ~ 2017 Shenzhen HXHG. All rights reserved.
*/
#define JPUSH_VERSION_NUMBER 3.1.1
#define JPUSH_VERSION_NUMBER 4.8.1
#import <Foundation/Foundation.h>
@@ -20,11 +20,15 @@
@class UNNotificationSettings;
@class UNNotificationRequest;
@class UNNotification;
@class UIView;
@protocol JPUSHRegisterDelegate;
@protocol JPUSHGeofenceDelegate;
@protocol JPUSHNotiInMessageDelegate;
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 (^JPUSHPropertiesOperationCompletion)(NSInteger iResCode, NSDictionary *properties, NSInteger seq);
extern NSString *const kJPFNetworkIsConnectingNotification; // 正在连接中
extern NSString *const kJPFNetworkDidSetupNotification; // 建立连接
@@ -44,7 +48,14 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
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.
};
/*!
@@ -107,6 +118,12 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
@property (nonatomic, copy) NSString *launchImageName NS_AVAILABLE_IOS(10_0); // 启动图片名iOS10以上有效从推送启动时将会用到
@property (nonatomic, copy) NSString *summaryArgument NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的部分参数。iOS12以上有效。
@property (nonatomic, assign) NSUInteger summaryArgumentCount NS_AVAILABLE_IOS(12.0); //插入到通知摘要中的项目数。iOS12以上有效。
@property (nonatomic, copy) NSString *targetContentIdentifier NS_AVAILABLE_IOS(13.0); // An identifier for the content of the notification used by the system to customize the scene to be activated when tapping on a notification.
//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);
@end
@@ -147,12 +164,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
@@ -162,7 +173,6 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
* @param channel 发布渠道. 可选.
* @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
* App 证书环境取决于profile provision的配置此处建议与证书环境保持一致.
* @param advertisingIdentifier 广告标识符IDFA 如果不需要使用IDFA传nil.
*
* @discussion 提供SDK启动必须的参数, 来启动 SDK.
* 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
@@ -172,7 +182,19 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
channel:(NSString *)channel
apsForProduction:(BOOL)isProduction;
/*!
* @abstract 启动SDK
*
* @param launchingOption 启动参数.
* @param appKey 一个JPush 应用必须的,唯一的标识. 请参考 JPush 相关说明文档来获取这个标识.
* @param channel 发布渠道. 可选.
* @param isProduction 是否生产环境. 如果为开发状态,设置为 NO; 如果为生产状态,应改为 YES.
* App 证书环境取决于profile provision的配置此处建议与证书环境保持一致.
* @param advertisingId 广告标识符IDFA 如果不需要使用IDFA传nil.
*
* @discussion 提供SDK启动必须的参数, 来启动 SDK.
* 此接口必须在 App 启动时调用, 否则 JPush SDK 将无法正常工作.
*/
+ (void)setupWithOption:(NSDictionary *)launchingOption
appKey:(NSString *)appKey
channel:(NSString *)channel
@@ -205,12 +227,38 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
+ (void)registerDeviceToken:(NSData *)deviceToken;
/*!
* @abstract 处理收到的 APNs 消息
*/
+ (void)handleRemoteNotification:(NSDictionary *)remoteInfo;
/*!
* @abstract 向极光服务器提交Token
*
* @param voipToken 推送使用的Voip Token
*/
+ (void)registerVoipToken:(NSData *)voipToken;
/*!
* @abstract 处理收到的 Voip 消息
*
* @param remoteInfo 下发的 Voip 内容
*/
+ (void)handleVoipNotification:(NSDictionary *)remoteInfo;
/*!
* @abstract 检测通知授权状态
* @param completion 授权结果通过status值返回详见JPAuthorizationStatus
*/
+ (void)requestNotificationAuthorization:(void (^)(JPAuthorizationStatus status))completion;
/*!
* @abstract 跳转至系统设置页面iOS8及以上有效
*/
+ (void)openSettingsForNotification:(void (^)(BOOL success))completionHandler NS_AVAILABLE_IOS(8_0);
/*!
* Tags操作接口
* 支持增加/覆盖/删除/清空/查询操作
@@ -316,6 +364,49 @@ 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:(JPUSHPropertiesOperationCompletion)completion
seq:(NSInteger)seq;
/**
删除指定属性
@param keys 需要删除的属性名称集合
@param completion 响应回调
@param seq 请求序列号
*/
+ (void)deleteProperties:(NSSet<NSString *> *)keys
completion:(JPUSHPropertiesOperationCompletion)completion
seq:(NSInteger)seq;
/**
清空所有属性
@param completion 响应回调
@param seq 请求序列号
*/
+ (void)cleanProperties:(JPUSHPropertiesOperationCompletion)completion
seq:(NSInteger)seq;
///----------------------------------------------------
/// @name Stats 统计功能
///----------------------------------------------------
@@ -370,6 +461,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:(NSDictionary *)launchOptions;
/**
删除地理围栏
@param geofenceId 地理围栏id
*/
+ (void)removeGeofenceWithIdentifier:(NSString *)geofenceId;
///----------------------------------------------------
/// @name Local Notification 本地通知
@@ -573,6 +691,24 @@ typedef NS_OPTIONS(NSUInteger, JPAuthorizationOptions) {
*/
+ (void)setLogOFF;
/*!
* @abstract 设置SDK地理位置权限开关
*
* @discussion 关闭地理位置之后SDK地理围栏的相关功能将受到影响默认是开启。
*
*/
+ (void)setLocationEanable:(BOOL)isEanble;
/*!
* @abstract 设置应用内提醒消息的代理
*
* @discussion 遵守JPushNotiInMessageDelegate的代理对象
*
*/
+ (void)setNotiInMessageDelegate:(id<JPUSHNotiInMessageDelegate>)notiInMessageDelegate;
///----------------------------------------------------
///********************下列方法已过期********************
///**************请使用新版tag/alias操作接口**************
@@ -626,13 +762,77 @@ 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:(nullable UNNotification *)notification NS_AVAILABLE_IOS(12.0);
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center openSettingsForNotification:(UNNotification *)notification NS_AVAILABLE_IOS(12.0);
/**
* 监测通知授权状态返回的结果
* @param status 授权通知状态详见JPAuthorizationStatus
* @param info 更多信息,预留参数
*/
- (void)jpushNotificationAuthorization:(JPAuthorizationStatus)status withInfo:(NSDictionary *)info;
@end
@protocol JPUSHGeofenceDelegate <NSObject>
/**
触发地理围栏
@param geofence 地理围栏触发时返回的信息
@param error 错误信息
*/
- (void)jpushGeofenceRegion:(NSDictionary *)geofence
error:(NSError *)error;
/**
拉取地理围栏列表的回调
@param geofenceList 地理围栏列表
*/
- (void)jpushCallbackGeofenceReceived:(NSArray<NSDictionary*> *)geofenceList;
/**
进入地理围栏区域
@param geofenceId 地理围栏id
@param userInfo 地理围栏触发时返回的信息
@param error 错误信息
*/
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didEnterRegion:(NSDictionary *)userInfo error:(NSError *)error __attribute__((deprecated("JPush 3.6.0 版本已过期")));
/**
离开地理围栏区域
@param geofenceId 地理围栏id
@param userInfo 地理围栏触发时返回的信息
@param error 错误信息
*/
- (void)jpushGeofenceIdentifer:(NSString *)geofenceId didExitRegion:(NSDictionary *)userInfo error:(NSError *)error __attribute__((deprecated("JPush 3.6.0 版本已过期")));
@end
@protocol JPUSHNotiInMessageDelegate <NSObject>
/**
应用内提醒消息展示的回调
@param content 应用内提醒消息的内容
*/
- (void)jPushNotiInMessageDidShowWithContent:(NSDictionary *)content;
/**
应用内提醒消息点击的回调
@param content 应用内提醒消息的内容
*/
- (void)jPushNotiInMessageDidClickWithContent:(NSDictionary *)content;
@end

Binary file not shown.

Binary file not shown.

View File

@@ -475,6 +475,34 @@ JPushPlugin.prototype.setMaxGeofenceNumber = function(maxNumber) {
}
};
//设置角标
JPushPlugin.prototype.setBadgeNumber = function(badgeNumb) {
if (device.platform === "Android") {
this.callNative("setBadgeNumber", [badgeNumb], null);
}
};
//设备是否同意隐私协议
JPushPlugin.prototype.setAuth = function(isAuth){
if(device.platform === "Android"){
this.callNative("setAuth", [isAuth], null);
}
}
/**
* 设置手机号。
*
* @param params = { 'sequence': number, 'mobileNumber': string }
*/
JPushPlugin.prototype.setMobileNumber = function(
params,
successCallback,
errorCallback
) {
this.callNative("setMobileNumber", [params], successCallback, errorCallback);
};
if (!window.plugins) {
window.plugins = {};
}