
ymx-yunxin-im复制基于网易云信 IM 与官方界面套件的即时通讯插件,内置会话列表、通讯录、单聊、群聊、个人资料、语音与视频通话等完整界面,支持厂商离线推送;并提供联系人/会话/群成员选择、本人资料与好友群管理、消息发送与历史查询、会话置顶免打扰已读、黑名单与免打扰配置等接口,回传登录态、连接状态、新消息、未读数、好友与入群申请等事件。
initSdk 里传入 appKey;账号 ID 与 Token 由业务服务端签发(云信控制台可查看测试账号);initSdk 的 pushCertificateName 传入,同时保证应用已配置与该证书对应的推送 client_id,否则不会下发厂商离线推送;initSdk 中把 localConversation 设为 false 切换为云端会话,切换后本地会话数据不再使用;client_id,否则发送位置只有失败日志(1002600003 应用鉴权失败、1002600004 未开通地图权限),界面停留在聊天页;发送位置前会自动申请定位权限,定位权限被拒绝时提示无权限;login,未登录时界面与聊天接口返回错误码 NOT_LOGGED_IN;未调用 initSdk 时返回 NOT_INITIALIZED,initSdk 未传 appKey 时按缺少参数返回;The signalling service is disabled. Please enable it first. 失败并弹提示;通话使用相机与麦克风权限(已声明),视频通话在没有摄像头的设备上不可用;initSdk 的 aiChatHelper 控制,未开通时点击会提示「回复灵感获取失败」(服务端返回没有权限);划词搜索与 AI 翻译需先在控制台添加对应的 AI 数字人,并把数字人账号 ID 填到 initSdk 的 aiSearchAccountId、aiTranslateAccountId,否则聊天里不会出现这两个入口;PRIVACY_NOT_AGREED;setPushEnabled 关闭或重新开启;电脑端在线时手机端是否继续接收推送用 setMobileOnDesktopOnline 设置;setListener 接收,eventName 固定为 event,data 为 { action, data }:loginStatus、connectStatus、loginFailed、kickedOffline、messageReceived、unreadCount、friendApplication、teamInvitation;loginFailed、kickedOffline 事件回传,需要业务重新登录。按使用场景分组,调用方式:
const im = ymx.requirePlugin('ymx-yunxin-im');
await im.initSdk({ appKey: '你的 AppKey', pushCertificateName: '华为推送证书名' });
await im.login({ accountId: 'account1', token: 'token' });
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| initSdk | yxIm.init |
初始化(取 appKey 与 mixPushConfig.hwCertificateName) |
| getLoginState | yxIm.info |
查询登录状态 |
| login | yxIm.login |
登录(accid、token;authType=2 不支持) |
| setNavigationInfo | - | 设置会话列表页标题名称与 logo(不设置则不显示 logo,标题默认「会话」) |
| logout | yxIm.logout |
退出登录 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| openAddFriend | - | 打开添加好友页 |
| openAIUsers | - | 打开我的 AI 数字人页 |
| openBlockList | - | 打开黑名单页 |
| openChat | yxIm.navigate(chat/p2p) |
打开单聊 |
| openChatSetting | - | 打开单聊会话设置页 |
| openContacts | yxIm.navigate(contact/list) |
打开通讯录 |
| openConversationGroups | - | 打开会话分组管理页 |
| openConversations | yxIm.navigate(conversation/list) |
打开会话列表 |
| openMain | - | 打开消息页(会话 + 通讯录) |
| openMineInfo | - | 打开我的资料页 |
| openMyBots | - | 打开我的机器人页 |
| openMyTeams | - | 打开我的群聊页 |
| openProfile | yxIm.navigate(my/info) |
打开个人资料页 |
| openSearch | - | 打开搜索页 |
| openTeamChat | yxIm.navigate(chat/team) |
打开群聊 |
| openTeamInfo | - | 打开群资料页 |
| openTeamMembers | - | 打开群成员列表页 |
| openTeamSetting | - | 打开群设置页 |
| openValidationMessages | - | 打开好友验证消息页 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| selectContacts | yxIm.navigate(contact/selector) |
打开联系人选择页,返回选中的联系人 |
| selectConversations | - | 打开会话选择页,返回选中的会话 |
| selectTeamMembers | - | 打开群成员选择页,返回选中的账号 ID |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| createConversationGroup | - | 创建会话分组(需云端会话模式) |
| deleteConversationGroup | - | 删除会话分组 |
| getConversationGroupList | - | 查询会话分组列表 |
| updateConversationGroup | - | 修改会话分组 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| cancelMigrateMessages | - | 取消正在进行的消息迁移 |
| clearLocalMessages | - | 清理本地消息(按时间,全量) |
| exportMessages | - | 导出本地消息到文件(真实文件路径) |
| importLocalMessages | - | 批量导入本地消息(当前 SDK 返回参数错误,可用 insertLocalMessage) |
| importMessages | - | 从文件导入本地消息 |
| insertLocalMessage | - | 插入本地消息 |
| insertLocalMessageEx | - | 插入本地消息(扩展版) |
| updateLocalMessage | - | 修改本地消息文本/扩展 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| addCollection | - | 添加收藏 |
| getCollectionList | - | 查询收藏列表 |
| removeCollections | - | 删除收藏 |
| updateCollectionExtension | - | 修改收藏扩展 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| acceptFriendApplication | - | 同意好友申请 |
| acceptTeamApplication | - | 同意入群申请 |
| acceptTeamInvitation | - | 接受群邀请 |
| clearTeamJoinActions | - | 清空全部群申请/邀请记录(谨慎) |
| getFriendApplications | - | 查询好友申请列表 |
| getTeamApplications | - | 查询待处理的入群申请 |
| getTeamInvitations | - | 查询待处理的群邀请(别人邀请我入群) |
| getTeamJoinActionUnreadCount | - | 查询未读群申请/邀请数 |
| markTeamJoinActionsRead | - | 群申请/邀请记录全部标记已读 |
| rejectFriendApplication | - | 拒绝好友申请 |
| rejectTeamApplication | - | 拒绝入群申请 |
| rejectTeamInvitation | - | 拒绝群邀请 |
| removeTeamJoinAction | - | 删除单条群申请/邀请记录 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| addQuickComment | - | 添加快捷评论(需开通能力) |
| getTopicList | - | 查询会话话题列表(需开通能力) |
| getTopicMessages | - | 查询话题消息 |
| removeQuickComment | - | 取消快捷评论(需开通能力) |
| removeTopics | - | 删除话题 |
| replyTopicMessage | - | 回复话题消息(需开通能力) |
| sendTopicMessage | - | 在话题中发送消息(需开通能力) |
| updateTopic | - | 修改话题 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| getAllTeamMessageMuteMode | - | 查询所有群免打扰设置 |
| getConversationMuteStatus | - | 查询会话免打扰状态 |
| getDndConfig | - | 查询免打扰配置 |
| getP2PMessageMuteList | - | 查询单聊免打扰列表 |
| getP2PMessageMuteMode | - | 查询单聊免打扰设置 |
| getTeamMessageMuteMode | - | 查询群免打扰设置 |
| isMobileOnDesktopOnline | yxIm.getGlobalOptions(multiPortPushMode) |
查询电脑端在线时手机端是否继续接收推送 |
| isPushEnabled | - | 查询离线推送是否开启 |
| setConversationMute | - | 会话消息免打扰 |
| setDndConfig | - | 设置免打扰(勿扰模式)配置 |
| setMobileOnDesktopOnline | yxIm.setGlobalOptions(multiPortPushMode) |
设置电脑端在线时手机端是否继续接收推送 |
| setPushEnabled | - | 开启或关闭离线推送 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| sendAudioMessage | - | 发送音频消息 |
| sendCallMessage | - | 发送通话消息 |
| sendCustomMessage | - | 发送自定义消息 |
| sendFileMessage | - | 发送文件消息 |
| sendImageMessage | - | 发送图片消息(本地路径或网络地址) |
| sendLocationMessage | - | 发送位置消息 |
| sendTextMessage | - | 发送文本消息 |
| sendTipsMessage | - | 发送提示消息 |
| sendVideoMessage | - | 发送视频消息 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| cancelMessageUpload | - | 取消消息附件上传 |
| clearRoamingMessages | - | 清理漫游消息 |
| deleteMessage | - | 删除消息 |
| deserializeMessage | - | 字符串还原为消息 |
| forwardMessage | - | 转发消息到其它会话 |
| getCloudMessages | - | 查询云端漫游消息 |
| getHistoryMessages | - | 查询历史消息 |
| getHistoryMessagesEx | - | 分页查询历史消息(锚点翻页/类型过滤) |
| getMessageByIds | - | 按消息客户端 ID 查询消息 |
| getMessageReceipt | - | 查询单聊已读回执 |
| getPinnedMessages | - | 查询会话内的置顶消息 |
| isPeerRead | - | 查询对方是否已读某条消息 |
| modifyMessage | - | 修改已发送的消息 |
| pinMessage | - | 置顶消息(需控制台开通置顶消息能力) |
| revokeMessage | - | 撤回消息 |
| searchCloudMessages | - | 云端消息搜索(时间/会话/发送者/类型过滤) |
| searchMessages | - | 搜索消息(关键字) |
| serializeMessage | - | 消息序列化为字符串 |
| unpinMessage | - | 取消置顶消息 |
| updatePinMessage | - | 更新置顶消息扩展(需开通能力) |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| addConversationsToGroup | - | 把会话加入分组 |
| clearHistory | - | 清空聊天记录(clearMode 0 云端+本地/1 仅本地/2 仅本地不可恢复) |
| clearTotalUnreadCount | - | 清除所有会话总未读数 |
| deleteConversation | - | 删除会话(可选删除消息) |
| getConversation | - | 查询单个会话 |
| getConversationList | - | 查询会话列表(分页) |
| getConversationListByIds | - | 按 ID 批量查询会话 |
| getStickTopConversations | - | 查询置顶会话列表 |
| getTotalUnreadCount | - | 查询会话总未读数 |
| getUnreadCount | - | 查询未读数 |
| getUnreadCountByIds | - | 查询指定会话未读总数 |
| markConversationRead | - | 把会话标记为已读 |
| removeConversationsFromGroup | - | 把会话移出分组 |
| setConversationSticky | - | 会话置顶(需在云信控制台开通会话置顶能力) |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| getUserInfo | - | 查询用户资料(本地缓存或云端) |
| getUsersFromCloud | - | 云端批量查询用户资料 |
| updateProfile | yxIm.setUserInfo |
修改本人资料(昵称、头像、性别、生日、手机、邮箱、个性签名) |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| addBlockUser | - | 加入黑名单 |
| addFriend | - | 添加好友(可直接添加或发送申请) |
| deleteFriend | - | 删除好友 |
| getBlockList | - | 查询黑名单 |
| getFriendList | - | 查询好友列表(含昵称、头像、备注) |
| getFriendsByIds | - | 按账号批量查询好友 |
| removeBlockUser | - | 移出黑名单 |
| searchUser | - | 搜索用户(昵称/账号/手机号) |
| setFriendAlias | - | 设置好友备注名 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| createTeam | - | 创建群(可同时邀请成员) |
| dismissTeam | - | 解散群 |
| followTeamMembers | - | 关注群成员 |
| getJoinedTeamCount | - | 查询我加入的群数量 |
| getJoinedTeamMembers | - | 查询我在各群的成员记录 |
| getManagerTeams | - | 查询我管理的群 |
| getOwnerTeams | - | 查询我作为群主的群 |
| getTeamInfoFromCloud | - | 云端查询群资料 |
| getTeamList | - | 查询我加入的群列表 |
| getTeamMembers | - | 查询群成员列表(返回 nextToken 游标) |
| getTeamMembersByIds | - | 按账号 ID 批量查询群成员 |
| getTeamsInfo | - | 按群 ID 批量查询群资料 |
| inviteTeamMembers | - | 邀请成员入群 |
| joinTeam | - | 申请加入群 |
| kickTeamMembers | - | 把成员移出群 |
| quitTeam | - | 退出群 |
| searchTeamByKeyword | - | 按群名称搜索群 |
| searchTeamMembers | - | 搜索群成员(支持 nextToken 分页) |
| setTeamChatBanned | - | 群全员禁言开关 |
| setTeamMemberChatBanned | - | 群成员禁言开关 |
| setTeamMemberRole | - | 设置/取消群管理员 |
| transferTeamOwner | - | 转让群主 |
| unfollowTeamMembers | - | 取消关注群成员 |
| updateSelfTeamMemberInfo | - | 修改我在群里的昵称/扩展 |
| updateTeamInfo | - | 修改群资料(群名、介绍、公告、头像) |
| updateTeamMemberNick | - | 修改群成员昵称 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| publishCustomUserStatus | - | 发布自定义在线状态 |
| queryUserStatusSubscriptions | - | 查询在线状态订阅列表 |
| subscribeUserStatus | - | 订阅用户在线状态(需开通能力) |
| unsubscribeUserStatus | - | 取消订阅在线状态 |
| API | 兼容 jsBridge | 说明 |
|---|---|---|
| translateText | - | 文本翻译(语言码如 zh-CHS/en) |
| voiceToText | - | 语音转文字(需音频文件与相应能力) |
| 键 | 官方字段 | 本插件行为 |
|---|---|---|
init |
appKey、sessionReadAck、teamNotificationMessageMarkUnread、enableTeamMsgAck、shouldConsiderRevokedMessageUnreadCount、loginCustomTag、notifyStickTopSession、enableRecentContactsTimeIndex、enableChatRoomLocation、enabledQChatMessageCache、fixMsgStatusByBlackList、qchatAutoSubscribe、mixPushConfig.* |
只用 appKey 与 mixPushConfig.hwCertificateName(荣耀同为华为推送);其余云信开关与厂商通道为 Android 专属,忽略。另支持扩展项 localConversation(本地/云端会话,默认本地) |
login |
accid、token、authType(0 静态 / 1 动态 / 2 第三方回调)、loginExt、useCustomCallkitUserInfo、priorityPushPayload |
支持 accid + token;authType=2(需 loginExt)明确返回不支持;priorityPushPayload、useCustomCallkitUserInfo 忽略 |
info |
返回 { sdkVersion, hasInit, accid, status } |
一致(额外返回 connectStatus,旧调用方不读也不受影响) |
logout / setListener / removeListener |
— | 直通;事件回调为 (event, res),res 为 { action, data } |
setGlobalOptions |
vibrateMode、ringMode、handsetMode、showReadStatus、deleteWithAlias、multiPortPushMode |
只有 multiPortPushMode 有对应开关;其余由系统/套件接管,忽略 |
getGlobalOptions |
同上 | 只返回真实可查的 multiPortPushMode |
setCallkitUserNickname / setCallkitUserAvatar |
旧版需 login({useCustomCallkitUserInfo:true}) 并在 setListener 的 CallkitUserInfoHelper(fetchNickname/loadAvatar)事件里回调,按 accid 提供通话界面显示信息 |
不支持:本插件通话界面直接读取 IM 用户资料,没有该回调通道(不会去改账号资料,避免旧应用误改昵称/头像);如需改显示信息请调用 updateProfile |
navigate |
theme、path、params(accid、nickname、avatar、teamId、callType、titleBar*、showTitleBar*、itemBackgroundColor、inputMoreItems 等) |
见下表;theme 与所有界面自定义项(标题栏、列表样式、输入栏)忽略 |
navigate 的 path:
| path | 本插件行为 |
|---|---|
conversation/list |
打开会话列表 |
contact/list |
打开通讯录 |
contact/selector |
打开联系人选择页,回传 { selected_friends: [accid...] }(params.selectLimit 生效) |
contact/add |
打开添加好友页 |
contact/info |
打开用户资料页(params.accid;不传则本人) |
contact/blacks |
打开黑名单页 |
contact/teams |
打开「我的群聊」 |
contact/verifies |
打开好友验证消息 |
chat/p2p |
打开单聊(params.accid 必填) |
chat/team |
打开群聊(params.teamId 必填) |
team/setting |
打开群设置(params.teamId 必填) |
search/search |
打开搜索页 |
call/single |
不支持:套件没有独立的发起通话入口,请在聊天页发起/接听(params.accid、params.callType 忽略) |
暂无评论