|
| 1 | +# API |
| 2 | + |
| 3 | +#### Usage |
| 4 | + |
| 5 | +```javascript |
| 6 | +import JMessage from 'jmessage-react-plugin'; |
| 7 | +``` |
| 8 | + |
| 9 | +#### NOTE: |
| 10 | + |
| 11 | +- 调用其他接口前需要调用 `init `方法. |
| 12 | + |
| 13 | + ```javascript |
| 14 | + JMessage.init({ |
| 15 | + appkey: "换成在极光官网上注册的应用 Appkey", |
| 16 | + isOpenMessageRoaming: false // 是否开启消息漫游,默认不开启 |
| 17 | + isProduction: true, // 是否为生产模式 |
| 18 | + }) |
| 19 | + ``` |
| 20 | + |
| 21 | +- 用户相关接口需要登录以后才能正常使用,如下是账户相关接口。 |
| 22 | + |
| 23 | + ```javascript |
| 24 | + // 注册 |
| 25 | + JMessage.register({ |
| 26 | + username: "登录用户名", |
| 27 | + password: "登录密码" |
| 28 | + }, () => {/*注册成功回调*/}, (error) => {/*注册失败回调*/}) |
| 29 | +
|
| 30 | + // 登录 |
| 31 | + JMessage.login({ |
| 32 | + username: "登录用户名", |
| 33 | + password: "登录密码" |
| 34 | + },() => {/*登录成功回调*/}, (error) => {/*登录失败回调*/}) |
| 35 | +
|
| 36 | + // 登出 |
| 37 | + JMessage.logout() |
| 38 | +
|
| 39 | + // 监听登录状态变更 |
| 40 | + //由于 JMessage 只提供单点登录,所以一般还需要监听应用登录状态的改变,如果其他设备登录相同账号会把当前设备应用用户挤下线 |
| 41 | + var listener = (event) => { } |
| 42 | + // 回调函数返回参数 event = {'type': 'user_password_change' / 'user_logout' / 'user_deleted' / 'user_login_status_unexpected'} |
| 43 | + JMessage.addLoginStateChangedListener(listener) // 监听登录状态变更 |
| 44 | + JMessage.removeLoginStateChangedListener(listener) // 移除监听 |
| 45 | +
|
| 46 | + ``` |
| 47 | + |
| 48 | +- 可以通过 `getMyInfo` 接口来判断,应用当前的登录状态。 |
| 49 | + |
| 50 | + ```javascript |
| 51 | + JMessage.getMyInfo((result) => { |
| 52 | + if (result.username === undefine) { |
| 53 | + // 未登录 |
| 54 | + } else { |
| 55 | + // 已登录 |
| 56 | + } |
| 57 | + }) |
| 58 | + ``` |
| 59 | + |
| 60 | +- 发送消息,有两种方式。 |
| 61 | + |
| 62 | + ```javascript |
| 63 | + // 第一种方式 先创建消息,然后再发送 |
| 64 | + //1. 创建消息 |
| 65 | + JMessage.createSendMessage(params) // params 参数字段可以参考 index.js 中的注释 |
| 66 | +
|
| 67 | + //2. 发送消息 |
| 68 | + JMessage.sendMessage(params) |
| 69 | + ``` |
| 70 | + |
| 71 | + ```javascript |
| 72 | + // 第二种方式,快捷发送消息 |
| 73 | + JMessage.sendTextMessage(params) // 快捷发送文本消息 |
| 74 | + JMessage.sendVoiceMessage(params) // 快捷发送语音消息 |
| 75 | + JMessage.sendImageMessage(params) // 快捷发送图片消息 |
| 76 | + JMessage.sendFileMessage(params) // 快捷发送文件消息 |
| 77 | + JMessage.sendCustomMessage(params) // 快捷发送自定义消息 |
| 78 | + ``` |
| 79 | + |
| 80 | + |
| 81 | + |
| 82 | +- 接收消息 |
| 83 | + |
| 84 | + ```javascript |
| 85 | + var listener = (message) => { |
| 86 | + // 收到的消息会返回一个消息对象. 对象字段可以参考对象说明 |
| 87 | + } |
| 88 | +
|
| 89 | + JMessage.addReceiveMessageListener(listener) // 添加监听 |
| 90 | + JMessage.removeReceiveMessageListener(listener) // 移除监听(一般在 componentWillUnmount 中调用) |
| 91 | + ``` |
| 92 | + |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | +## 常用对象说明 |
| 97 | + |
| 98 | +API 使用文档可以直接参考 [index.js](../index.js) 中的注释。 |
| 99 | + |
| 100 | +这里列出插件中会返回的各对象组成: |
| 101 | + |
| 102 | +```js |
| 103 | +UserInfo: { |
| 104 | + type: 'user', |
| 105 | + username: string, // 用户名。 |
| 106 | + appKey: string, // 用户所属应用的 appKey。可与 username 共同作为用户的唯一标志。 |
| 107 | + nickname: string, // 昵称。 |
| 108 | + gender: string, // 'male' / 'female' / 'unknown' |
| 109 | + avatarThumbPath: string, // 头像的缩略图地址。 |
| 110 | + birthday: number, // 日期的毫秒数。 |
| 111 | + region: string, // 地区。 |
| 112 | + signature: string, // 个性签名。 |
| 113 | + address: string, // 具体地址。 |
| 114 | + noteName: string, // 备注名。 |
| 115 | + noteText: string, // 备注信息。 |
| 116 | + isNoDisturb: boolean, // 是否免打扰。 |
| 117 | + isInBlackList: boolean, // 是否在黑名单中。 |
| 118 | + isFriend:boolean // 是否为好友。 |
| 119 | +} |
| 120 | +``` |
| 121 | + |
| 122 | +```js |
| 123 | +GroupInfo: { |
| 124 | + type: 'group', |
| 125 | + id: string, // 群组 id, |
| 126 | + name: string, // 群组名称。 |
| 127 | + desc: string, // 群组描述。 |
| 128 | + level: number, // 群组等级,默认等级 4。 |
| 129 | + owner: string, // 群主的 username。 |
| 130 | + ownerAppKey: string, // 群主的 appKey。 |
| 131 | + maxMemberCount: number, // 最大成员数。 |
| 132 | + isNoDisturb: boolean, // 是否免打扰。 |
| 133 | + isBlocked: boolean // 是否屏蔽群消息。 |
| 134 | +} |
| 135 | +``` |
| 136 | + |
| 137 | +```js |
| 138 | +Conversation: { |
| 139 | + /** |
| 140 | + * 会话对象标题。 |
| 141 | + * 如果为群聊: |
| 142 | + * - 未设置群名称:自动使用群成员中前五个人的名称拼接成 title。 |
| 143 | + * - 设置了群名称,则显示群名称。 |
| 144 | + * 如果为单聊:如果用户有昵称,显示昵称。否则显示 username。 |
| 145 | + */ |
| 146 | + title: string, |
| 147 | + latestMessage: Message, // 最近的一条消息对象。 |
| 148 | + unreadCount: number, // 未读消息数。 |
| 149 | + conversationType: 'single' / 'group', |
| 150 | + target: UserInfo / GroupInfo // 聊天对象信息。 |
| 151 | +} |
| 152 | +``` |
| 153 | + |
| 154 | +#### Message |
| 155 | + |
| 156 | +```js |
| 157 | +TextMessage: { |
| 158 | + id: string, // 消息 id。 |
| 159 | + type: 'text', // 消息类型。 |
| 160 | + from: UserInfo, // 消息发送者对象。 |
| 161 | + target: UserInfo / GroupInfo, // 消息接收者对象。可能是用户或群组。 |
| 162 | + createTime: number, // 发送消息时间。 |
| 163 | + text: string, // 消息内容。 |
| 164 | + extras: object // 附带的键值对对象。 |
| 165 | +} |
| 166 | +``` |
| 167 | + |
| 168 | +```js |
| 169 | +ImageMessage: { |
| 170 | + id: string, |
| 171 | + type: 'image', |
| 172 | + from: UserInfo, |
| 173 | + target: UserInfo / GroupInfo, |
| 174 | + extras: object, |
| 175 | + thumbPath: string // 图片的缩略图路径。要下载原图需要调用 `downloadOriginalImage` 方法。 |
| 176 | +} |
| 177 | +``` |
| 178 | + |
| 179 | +```js |
| 180 | +VoiceMessage: { |
| 181 | + id: string, |
| 182 | + type: 'image', |
| 183 | + from: UserInfo, |
| 184 | + target: UserInfo / GroupInfo, |
| 185 | + extras: object, |
| 186 | + path: string, // 语音文件路径。 |
| 187 | + duration: number // 语音时长 |
| 188 | +} |
| 189 | +``` |
| 190 | + |
| 191 | +```js |
| 192 | +LocationMessage: { |
| 193 | + id: string, |
| 194 | + type: 'voice', |
| 195 | + from: UserInfo, |
| 196 | + target: UserInfo / GroupInfo, |
| 197 | + extras: object, |
| 198 | + address: string, // 详细地址。 |
| 199 | + longitude: number, // 经度。 |
| 200 | + latitude: number, // 纬度。 |
| 201 | + scale:number // 地图缩放比例。 |
| 202 | +} |
| 203 | +``` |
| 204 | + |
| 205 | +```js |
| 206 | +FileMessage: { |
| 207 | + id: string, |
| 208 | + type: 'file', |
| 209 | + from: UserInfo, |
| 210 | + target: UserInfo / GroupInfo, |
| 211 | + extras: object, |
| 212 | + fileName: string // 文件名。要下载完整文件需要调用 `downloadFile` 方法。 |
| 213 | +} |
| 214 | +``` |
| 215 | + |
| 216 | +```js |
| 217 | +CustomMessage: { |
| 218 | + id: string, |
| 219 | + type: 'file', |
| 220 | + from: UserInfo, |
| 221 | + target: UserInfo / GroupInfo, |
| 222 | + extras: object, |
| 223 | + customObject: object // 自定义键值对对象。 |
| 224 | +} |
| 225 | +``` |
| 226 | + |
| 227 | +```js |
| 228 | +Event: { |
| 229 | + type: 'event', |
| 230 | + eventType: string, // 'group_member_added' / 'group_member_removed' / 'group_member_exit' |
| 231 | + usernames: Array // 该事件涉及到的用户 username 数组。 |
| 232 | +} |
| 233 | +``` |
0 commit comments