<commit_before>[English document](api_en.md)

* [Common API](#common-api)
  * [initPush](#initpush)
  * [getRegistrationID](#getregistrationid)
  * [stopPush](#stoppush)
  * [resumePush](#resumepush)
  * [setAlias](#setalias)
  * [addTags](#addtags)
  * [deleteTags](#deletetags)
  * [setTags](#settags)
  * [cleanTags](#cleantags)
  * [sendLocalNotification](#sendlocalnotification)
  * [clearLocalNotifications](#clearlocalnotifications)
  * [removeLocalNotification](#removelocalnotification)
  * [clearAllNotifications](#clearallnotifications)
  * [clearNotificationById](#clearnotificationbyId)
  * [点击推送事件](#点击推送事件)
  * [接收推送事件](#接收推送事件)
  * [接收自定义消息事件](#接收自定义消息事件)
* [iOS Only API](#ios-only-api)
  * [setupPush](#setuppush)
  * [setBadge](#setbadge)
  * [getBadge](#getbadge)
  * [setLocalNotification](#setlocalnotification)
  * [getLaunchAppNotification](#getlaunchappnotification)
  * [点击推送启动应用事件](#open-notification-launch-app-event)
  * [网络成功登陆事件](#network-did-login-event)
  * [hasPermission](#haspermission)
* [Android Only API](#android-only-api)
  * [crashLogOFF](#crashlogoff)
  * [crashLogON](#crashlogno)
  * [notifyJSDidLoad](#notifyjsdidload)
  * [getInfo](#getInfo)
  * [setStyleBasic](#setstylebasic)
  * [setStyleCustom](#setstylecustom)
  * [setLatestNotificationNumber](#setlatestnotificationnumber)
  * [setSilenceTime](#setsilencetime)
  * [setPushTime](#setpushtime)
  * [addGetRegistrationIdListener](#addgetregistrationIdlistener)
  * [removeGetRegistrationIdListener](#removegetregistrationidlistener)

注意: 需要调用先调用 `initPush` 方法才能正常使用。

### Common API

Android 和 iOS 通用 API。

#### initPush

初始化 JPush，这个方法初始化推送功能 iOS 会弹出获取推送权限的提示框（注意这个系统提示框只会触发一次，如果用户首次不同意，之后需要用户到设置中修改推送权限）。

```
JPushModule.initPush()
```

Android 建议在原生 `MainActivity` 的 `onCreate` 中调用：

```
// java 原生代码
JPushInterface.init(this);
```
#### getRegistrationID

* getRegistrationID(function)

  获取 registrationId，这个 JPush 运行通过 registrationId 来进行推送

  ```javascript
  JPushModule.getRegistrationID(registrationId => {})
  ```

#### stopPush

停止推送。

```
JPushModule.stopPush();
```

#### resumePush

恢复推送。建议在 `MainActivity` 的 `onResume` 中调用：

```
// android native java
JPushInterface.onResume(this);
```

```
// iOS - javascirpt
JPushModule.resumePush();
```
#### setAlias

* setAlias(alias, successCallback)

  * alias：String

    * 空字符串 （@""）表示取消之前的设置。
    * 每次调用设置有效的别名，覆盖之前的设置。
    * 有效的别名组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：alias 命名长度限制为 40 字节。（判断长度需采用 UTF-8 编码）

  ```javascript
  JPushModule.setAlias('alias', success => {})
  ```

#### addTags

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.7+ 。

在原有 tags 的基础上添加 tags。

* addTags(tags, callback)

  * tags: [String] tag 集合
    * 每次调用至少设置一个 tag
    * 有效的标签组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：每个 tag 命名长度限制为 40 字节，最多支持设置 1000 个 tag，但总长度不得超过 5K 字节。（判断长度需采用 UTF-8 编码）
    * 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制

  ```javascript
  JPushModule.addTags(['tag1', 'tag2'], success => {})
  ```

#### deleteTags

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.7+ 。

删除指定的 tags

* deleteTags(tags, callback)

  * tags: [String] tag 集合
    * 每次调用至少设置一个 tag。
    * 有效的标签组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：每个 tag 命名长度限制为 40 字节，最多支持设置 1000 个 tag，但总长度不得超过 5K 字节。（判断长度需采用 UTF-8 编码）。
    * 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制。

  ```javascript
  JPushModule.deleteTags(['tag1', 'tag2'], success => {})
  ```

#### cleanTags

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.7+ 。

清除所有 tags

* cleanTags(callback)

  ```javascript
  JPushModule.cleanTags(success => {})
  ```

#### setTags

* setTags(tags, callback)

  * tags: [String] tag 集合
    * 每次调用至少设置一个 tag
    * 有效的标签组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：每个 tag 命名长度限制为 40 字节，最多支持设置 1000 个 tag，但总长度不得超过 5K 字节。（判断长度需采用 UTF-8 编码）
    * 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制

  ```javascript
  JPushModule.setTags(['tag1', 'tag2'], success => {})
  ```

#### sendLocalNotification

* sendLocalNotification(notification)

  * **buildId** : Number // 设置通知样式，1 为基础样式，2 为自定义样式。自定义样式需要先调用 setStyleCustom 接口设置自定义样式。(Android Only)
  * **id** : Number // 通知的 id, 可用于取消通知
  * **title** : String // 通知标题
  * **content** : String // 通知内容
  * **extra** : Object // extra 字段
  * **fireTime** : Number // 通知触发时间的时间戳（毫秒）
  * **badge** : Number // 本地推送触发后应用角标的 badge 值 （iOS Only）
  * **sound** : String // 指定推送的音频文件 （iOS Only）
  * **subtitle** : String // 子标题 （iOS10+ Only）

  ```javascript
  var currentDate = new Date()
  JPushModule.sendLocalNotification({
    id: 5,
    content: 'content',
    extra: { key1: 'value1', key2: 'value2' },
    fireTime: currentDate.getTime() + 3000,
    badge: 8,
    sound: 'fasdfa',
    subtitle: 'subtitle',
    title: 'title'
  })
  ```

#### clearLocalNotifications

移除所有的本地通知

```
JPushModule.clearLocalNotifications();
```

#### removeLocalNotification

根据 notificationId 移除指定的本地通知, notificationId 为 int 类型。

```
var notificationId = 5;
JPushModule.removeLocalNotification(id);
```

#### clearAllNotifications

清除所有通知

```
JPushModule.clearAllNotifications();
```

#### clearNotificationById

根据 notificationId 来清除通知, notificationId 为 int 类型。

```
var notificationId = 5;
JPushModule.clearNotificationById(id);
```

#### 点击推送事件

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.0+ 。参数 function 不能复用，不能用于其他 add****Listener 的方法。

* addReceiveOpenNotificationListener(function)

  ```javascript
  var callback = map => {}
  JPushModule.addReceiveOpenNotificationListener(callback)
  ```

* removeReceiveOpenNotificationListener(function)<commit_msg>udpate api.md<commit_after>[English document](api_en.md)

* [Common API](#common-api)
  * [initPush](#initpush)
  * [getRegistrationID](#getregistrationid)
  * [stopPush](#stoppush)
  * [resumePush](#resumepush)
  * [setAlias](#setalias)
  * [addTags](#addtags)
  * [deleteTags](#deletetags)
  * [setTags](#settags)
  * [cleanTags](#cleantags)
  * [sendLocalNotification](#sendlocalnotification)
  * [clearLocalNotifications](#clearlocalnotifications)
  * [removeLocalNotification](#removelocalnotification)
  * [clearAllNotifications](#clearallnotifications)
  * [clearNotificationById](#clearnotificationbyId)
  * [点击推送事件](#点击推送事件)
  * [接收推送事件](#接收推送事件)
  * [接收自定义消息事件](#接收自定义消息事件)
* [iOS Only API](#ios-only-api)
  * [setupPush](#setuppush)
  * [setBadge](#setbadge)
  * [getBadge](#getbadge)
  * [setLocalNotification](#setlocalnotification)
  * [getLaunchAppNotification](#getlaunchappnotification)
  * [点击推送启动应用事件](#open-notification-launch-app-event)
  * [网络成功登陆事件](#network-did-login-event)
  * [hasPermission](#haspermission)
* [Android Only API](#android-only-api)
  * [crashLogOFF](#crashlogoff)
  * [crashLogON](#crashlogno)
  * [notifyJSDidLoad](#notifyjsdidload)
  * [getInfo](#getInfo)
  * [setStyleBasic](#setstylebasic)
  * [setStyleCustom](#setstylecustom)
  * [setLatestNotificationNumber](#setlatestnotificationnumber)
  * [setSilenceTime](#setsilencetime)
  * [setPushTime](#setpushtime)
  * [addGetRegistrationIdListener](#addgetregistrationIdlistener)
  * [removeGetRegistrationIdListener](#removegetregistrationidlistener)

注意: 需要调用先调用 `initPush` 方法才能正常使用。

### Common API

Android 和 iOS 通用 API。

#### initPush

初始化 JPush，这个方法初始化推送功能 iOS 会弹出获取推送权限的提示框（注意这个系统提示框只会触发一次，如果用户首次不同意，之后需要用户到设置中修改推送权限）。

```
JPushModule.initPush()
```

Android 建议在原生 `MainActivity` 的 `onCreate` 中调用：

```
// java 原生代码
JPushInterface.init(this);
```
#### getRegistrationID

* getRegistrationID(function)

  获取 registrationId，这个 JPush 运行通过 registrationId 来进行推送

  ```javascript
  JPushModule.getRegistrationID(registrationId => {})
  ```

#### stopPush

停止推送。

```
JPushModule.stopPush();
```

#### resumePush

恢复推送。建议在 `MainActivity` 的 `onResume` 中调用：

```
// android native java
JPushInterface.onResume(this);
```

```
// iOS - javascirpt
JPushModule.resumePush();
```
#### setAlias

* setAlias(alias, successCallback)

  * alias：String

    * 空字符串 （@""）表示取消之前的设置。
    * 每次调用设置有效的别名，覆盖之前的设置。
    * 有效的别名组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：alias 命名长度限制为 40 字节。（判断长度需采用 UTF-8 编码）

  ```javascript
  JPushModule.setAlias('alias', success => {})
  ```

#### addTags

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.7+ 。

在原有 tags 的基础上添加 tags。

* addTags(tags, callback)

  * tags: [String] tag 集合
    * 每次调用至少设置一个 tag
    * 有效的标签组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：每个 tag 命名长度限制为 40 字节，最多支持设置 1000 个 tag，但总长度不得超过 5K 字节。（判断长度需采用 UTF-8 编码）
    * 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制

  ```javascript
  JPushModule.addTags(['tag1', 'tag2'], success => {})
  ```

#### deleteTags

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.7+ 。

删除指定的 tags

* deleteTags(tags, callback)

  * tags: [String] tag 集合
    * 每次调用至少设置一个 tag。
    * 有效的标签组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：每个 tag 命名长度限制为 40 字节，最多支持设置 1000 个 tag，但总长度不得超过 5K 字节。（判断长度需采用 UTF-8 编码）。
    * 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制。

  ```javascript
  JPushModule.deleteTags(['tag1', 'tag2'], success => {})
  ```

#### cleanTags

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.7+ 。

清除所有 tags

* cleanTags(callback)

  ```javascript
  JPushModule.cleanTags(success => {})
  ```

#### setTags

* setTags(tags, callback)

  * tags: [String] tag 集合
    * 每次调用至少设置一个 tag
    * 有效的标签组成：字母（区分大小写）、数字、下划线、汉字。
    * 限制：每个 tag 命名长度限制为 40 字节，最多支持设置 1000 个 tag，但总长度不得超过 5K 字节。（判断长度需采用 UTF-8 编码）
    * 单个设备最多支持设置 1000 个 tag。App 全局 tag 数量无限制

  ```javascript
  JPushModule.setTags(['tag1', 'tag2'], success => {})
  ```

#### sendLocalNotification

* sendLocalNotification(notification)

  * **buildId** : Number // 设置通知样式，1 为基础样式，2 为自定义样式。自定义样式需要先调用 setStyleCustom 接口设置自定义样式。(Android Only)
  * **id** : Number // 通知的 id, 可用于取消通知
  * **title** : String // 通知标题
  * **content** : String // 通知内容
  * **extra** : Object // extra 字段
  * **fireTime** : Number // 通知触发时间的时间戳（毫秒）
  * **badge** : Number // 本地推送触发后应用角标的 badge 值 （iOS Only）
  * **sound** : String // 指定推送的音频文件 （iOS Only）
  * **subtitle** : String // 子标题 （iOS10+ Only）

  ```javascript
  var currentDate = new Date()
  JPushModule.sendLocalNotification({
    id: 5,
    content: 'content',
    extra: { key1: 'value1', key2: 'value2' },
    fireTime: currentDate.getTime() + 3000,
    badge: 8,
    sound: 'fasdfa',
    subtitle: 'subtitle',
    title: 'title'
  })
  ```

#### clearLocalNotifications

移除所有的本地通知

```
JPushModule.clearLocalNotifications();
```

#### removeLocalNotification

根据 notificationId 移除指定的本地通知, notificationId 为 int 类型。

```
var notificationId = 5;
JPushModule.removeLocalNotification(notificationId);
```

#### clearAllNotifications

清除所有通知

```
JPushModule.clearAllNotifications();
```

#### clearNotificationById

根据 notificationId 来清除通知, notificationId 为 int 类型。

```
var notificationId = 5;
JPushModule.clearNotificationById(notificationId);
```

#### 点击推送事件

**NOTE**: iOS 需要安装到 jpush-react-native@2.0.0+ 。参数 function 不能复用，不能用于其他 add****Listener 的方法。

* addReceiveOpenNotificationListener(function)

  ```javascript
  var callback = map => {}
  JPushModule.addReceiveOpenNotificationListener(callback)
  ```

* removeReceiveOpenNotificationListener(function)
{'fraction_non_alphanumeric': 0.16257106180084357, 'fraction_numerical': 0.013387126352466533, 'mean_word_length': 4.969896004378763, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 17, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5475621', 'n_tokens_mistral': 5086, 'n_tokens_neox': 5212, 'n_words': 718}