jpush-rn
Version:
极光推送 JPush SDK 的 React Native 封装,支持 Android 和 iOS (Fork of jpush-react-native)
551 lines (491 loc) • 14.4 kB
TypeScript
// Type definition for jpush-react-native 2.6.6
type Callback<T> = (result: T) => void;
type Extra = {
[key: string]: string;
};
export type Sequence = {
/**
* 请求时传入的序列号,会在回调时原样返回
*/
sequence: number;
};
export type Tag = {
/**
* 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
* 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 1000 个 tag,且单次操作总长度不得超过 5000 字节
*(判断长度需采用 UTF-8 编码)单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制
*/
tag: string;
};
type Tags = {
/**
* 有效的标签组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
* 限制:每个 tag 命名长度限制为 40 字节,最多支持设置 1000 个 tag,且单次操作总长度不得超过 5000 字节
*(判断长度需采用 UTF-8 编码)单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制
*/
tags: string[];
};
type Alias = {
/**
* 有效的别名组成:字母(区分大小写)、数字、下划线、汉字、特殊字符@!#$&*+=.|
* 限制:alias 命名长度限制为 40 字节。(判断长度需采用 UTF-8 编码)
*/
alias: string;
};
type NotificationId = {
/**
* 通知 ID
* */
notificationId: String;
};
export default class JPush {
/**
* 设置调试模式,默认关闭状态
*
* 该接口需在 init 接口之前调用,避免出现部分日志没打印的情况
* @param {boolean} enable
*
*/
static setLoggerEnable(enable: boolean): void;
/**
* 初始化推送服务
* {"appKey":"","channel":"dev","production":1}
* 请在componentDidMount()调用init,否则会影响通知点击事件的回调
*
*/
static init(params: {
appKey: string;
channel: string;
production: boolean;
}): void;
/**
* 获取 RegistrationID
*
* 调用此 API 来取得应用程序对应的 RegistrationID。
* 只有当应用程序成功注册到 JPush 的服务器时才返回对应的值,否则返回空字符串
*
*/
static getRegistrationID(callback: Callback<{ registerID: string }>): void;
/**
* 新增标签
*
* 这个接口是增加逻辑,而不是覆盖逻辑
*/
static addTags(params: Sequence & Tags): void;
/**
* 覆盖标签
*
* 需要理解的是,这个接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置
*/
static updateTags(params: Sequence & Tags): void;
/**
* 删除指定标签
*
*/
static deleteTag(params: Sequence & Tags): void;
/**
* 清除所有标签
*/
static deleteTags(params: Sequence): void;
/**
* 查询指定 tag 与当前用户绑定的状态
*/
static queryTag(params: Sequence & Tag): void;
/**
* 查询所有标签
*/
static queryTags(params: Sequence): void;
/**
* 设置别名
* 需要理解的是,这个接口是覆盖逻辑,而不是增量逻辑。即新的调用会覆盖之前的设置
*/
static setAlias(params: Sequence & Alias): void;
/**
* 删除别名
*/
static deleteAlias(params: Sequence): void;
/**
* 查询别名
*/
static queryAlias(params: Sequence): void;
/**
* 进入页面
*/
static pageEnterTo(params: String): void;
/**
* 离开页面
*/
static pageLeave(params: String): void;
//***************************************统计***************************************
/**
* 设置手机号码。该接口会控制调用频率,频率为 10s 之内最多 3 次
*/
static setMobileNumber(
params: {
mobileNumber: string;
} & Sequence
): void;
/**
* 开启 CrashLog 上报
*
*/
static initCrashHandler(): void;
/**
* JPush SDK 开启和关闭省电模式,默认为关闭。
*/
static setPowerSaveMode(enable: boolean):void;
/**
* 检查当前应用的通知开关是否开启
* */
static isNotificationEnabled(callback: Callback<boolean>): void;
//***************************************本地通知***************************************
/**
* 添加一个本地通知
*
* messageID:唯一标识通知消息的ID,可用于移除消息
*
* title:对应“通知标题”字段
*
* content:对应“通知内容”字段
*
* extras:对应“附加内容”字段
*
*/
static addLocalNotification(params: {
messageID: string;
title: string;
content: string;
extras: Extra;
}): void;
/**
* 移除指定的本地通知
*
* messageID:唯一标识通知消息的ID,可用于移除消息
*/
static removeLocalNotification(params: { messageID: string }): void;
/**
* 移除所有的本地通知
*
*/
static clearLocalNotifications(): void;
/**
* 清除所有 JPush 展现的通知(不包括非 JPush SDK 展现的)
*
*/
static clearAllNotifications():void;
/**
* 删除指定的通知
* */
static clearNotificationById(params: NotificationId):void;
//***************************************地理围栏***************************************
/**
* 设置最多允许保存的地理围栏数量,超过最大限制后,如果继续创建先删除最早创建的地理围栏。
* 默认数量为10个,允许设置最小1个,最大100个。
*
*/
static setMaxGeofenceNumber(params: { geoFenceMaxNumber: number }): void;
/**
* 删除指定id的地理围栏
*
*/
static deleteGeofence(params: { geoFenceID: string }): void;
//***************************************接口回调***************************************
//连接状态
static addConnectEventListener(
callback: Callback<{ connectEnable: boolean }>
): void;
/**
* 通知事件
*
* 注意:应用在存活状态下点击通知不会有跳转行为,应用在被杀死状态下点击通知会启动应用
*/
static addNotificationListener(
callback: Callback<{
/**
* messageID:唯一标识通知消息的 ID
*/
messageID: string;
/**
* title:对应 Portal 推送通知界面上的“通知标题”字段
*/
title: string;
/**
* content:对应 Portal 推送通知界面上的“通知内容”字段
*/
content: string;
/**
* badge:对应 Portal 推送通知界面上的可选设置里面的“badge”字段 (ios only)
*/
badge: string;
/**
* ring:对应 Portal 推送通知界面上的可选设置里面的“sound”字段 (ios only)
*/
ring: string;
/**
* extras:对应 Portal 推送消息界面上的“可选设置”里的附加字段
*/
extras: Extra;
/**
* notificationEventType:分为notificationArrived和notificationOpened两种
*/
notificationEventType: "notificationArrived" | "notificationOpened";
}>
): void;
/**
* 本地通知事件
*
* 注意:应用在存活状态下点击通知不会有跳转行为,应用在被杀死状态下点击通知会启动应用
*/
static addLocalNotificationListener(
callback: Callback<{
/**
* 唯一标识通知消息的ID,可用于移除消息
*/
messageID: string;
/**
* 对应“通知标题”字段
*/
title: string;
/**
* 对应“通知内容”字段
*/
content: string;
/**
* 对应“附加内容”字段
*/
extras: Extra;
notificationEventType: "notificationArrived" | "notificationOpened";
}>
): void;
/**
* 自定义消息事件
*/
static addCustomMessageListener(
callback: Callback<{
/**
* 唯一标识自定义消息的 ID
*/
messageID: string;
/**
* 对应 Portal 推送消息界面上的“自定义消息内容”字段
*/
content: string;
/**
* 对应 Portal 推送消息界面上的“可选设置”里的附加字段
*/
extras: Extra;
}>
): void;
/**
* inapp消息事件
*/
static addInappMessageListener(
callback: Callback<{
/**
* 唯一标识inapp消息的 ID
*/
mesageId: string;
/**
* 标题
*/
title: string;
/**
* 内容
*/
content: string;
/**
* 目标页面
*/
target: string[];
/**
* 跳转地址
*/
clickAction: string;
/**
* 附加字段
*/
extras: Extra;
/**
* 类型,inappShow:展示,inappClick:点击
*/
inappEventType: "inappShow" | "inappClick";
}>
): void;
static addCommandEventListener(
callback: Callback<{
/**
* 命令类型(例如:1, 2, 3 等)
*/
command: number;
/**
* 命令的附加信息(例如:JSON 字符串或其他数据)
*/
commandExtra: string;
/**
* 命令的消息内容
*/
commandMessage: string;
/**
* 命令的执行结果(例如:0 表示成功,其他值表示错误码)
*/
commandResult: number;
}>
): void;
/**
* tag alias事件
*/
static addTagAliasListener(
callback: Callback<
{
/**
* 结果, 0为操作成功
*/
code: number;
} & Sequence &
(
| Tags
| Alias
| (Tag & {
/**
* 执行查询指定tag(queryTag)操作时会返回是否可用
*/
tagEnable: boolean;
})
)
>
): void;
/**
* 手机号码事件
*/
static addMobileNumberListener(
callback: Callback<{ code: number } & Sequence>
): void;
//移除事件
static removeListener(callback: Function): void;
//***************************************Android Only***************************************
/**
* 在 Android 6.0 及以上的系统上,需要去请求一些用到的权限.
* JPush SDK 用到的一些需要请求如下权限,因为需要这些权限使统计更加精准,功能更加丰富,建议开发者调用
* "android.permission.READ_PHONE_STATE"
* "android.permission.ACCESS_FINE_LOCATION"
* "android.permission.READ_EXTERNAL_STORAGE"
* "android.permission.WRITE_EXTERNAL_STORAGE"
*
* @platform Android
*/
static requestPermission(): void;
/**
* 停止推送服务
*
* @platform Android
*/
static stopPush(): void;
/**
* 恢复推送服务
*
* @platform Android
*/
static resumePush(): void;
/**
* 用来检查 Push Service 是否已经被停止
*
* @platform Android
*/
static isPushStopped(callback: Callback<boolean>): void;
/**
* 设置允许推送时间
*
* 默认情况下用户在任何时间都允许推送。即任何时候有推送下来,客户端都会收到,并展示。
* 开发者可以调用此 API 来设置允许推送的时间。
* 如果不在该时间段内收到消息,SDK 的处理是:推送到的通知会被扔掉。
*
* 这是一个纯粹客户端的实现,所以与客户端时间是否准确、时区等这些,都没有关系。
* 而且该接口仅对通知有效,自定义消息不受影响。
*
* @platform Android
*/
static setPushTime(params: {
pushTimeDays: number[];
pushTimeStartHour: number;
pushTimeEndHour: number;
}): void;
/**
* 设置通知静默时间
*
* 默认情况下用户在收到推送通知时,客户端可能会有震动,响铃等提示。
* 但用户在睡觉、开会等时间点希望为“免打扰”模式,也是静音时段的概念。
* 开发者可以调用此 API 来设置静音时段。如果在该时间段内收到消息,则:不会有铃声和震动。
*
* @platform Android
*/
static setSilenceTime(params: {
silenceTimeStartHour: number;
silenceTimeStartMinute: number;
silenceTimeEndHour: number;
silenceTimeEndMinute: number;
}): void;
/**
* 设置保留最近通知条数
*
* 通过极光推送,推送了很多通知到客户端时,如果用户不去处理,就会有很多保留在那里。
* 调用此 API 可以限制保留的通知条数,默认为保留最近 5 条通知。
*
* 仅对通知有效。所谓保留最近的,意思是,如果有新的通知到达,之前列表里最老的那条会被移除。
* 例如,设置为保留最近 5 条通知。假设已经有 5 条显示在通知栏,当第 6 条到达时,第 1 条将会被移除。
*
* @platform Android
*/
static setLatestNotificationNumber(params: {
notificationMaxNumber: number;
}): void;
/**
* 动态配置 channel,优先级比 AndroidManifest 里配置的高
*
* @platform Android
*/
static setChannel(params: { channel: string }): void;
//***************************************iOS Only***************************************
/**
* 设置 Badge
*
* @platform iOS
*/
static setBadge(params: {
/**
* Push封装badge功能,允许应用上传 badge 值至 JPush 服务器,由 JPush 后台帮助管理每个用户所对应的推送 badge 值,简化了设置推送 badge 的操作。设置的值小于0时,sdk时不作处理。
*/
badge: number;
/**
* iOS 用来标记应用程序状态的一个数字,出现在程序图标右上角。设置的值小于0时,sdk不作处理。
*/
appBadge: number;
}): void;
/**
* 设置用户分群推送功能开关
*
*
* @param {boolean} enable, YES:开启,NO:关闭,默认是开启。
*
*/
static setSmartPushEnable(enable: boolean): void;
/**
* 设置应用数据洞察
*
*
* @param {boolean} enable, YES:开启,NO:关闭,默认是开启。
*
*/
static setDataInsightsEnable(enable: boolean): void;
/**
* 数据采集控制, YES:开启,NO:关闭, 默认开启
*
*/
static setCollectControl(params: {
cell: boolean;
bssid: boolean;
imei: boolean;
imsi: boolean;
mac: boolean;
wifi: boolean;
}): void;
}