外观
Android 方法参考
先按 Android 接入加入本地模块。以下为宿主使用的 Core 与 UIKit 方法,Kotlin 和 Java 调用同一套 API。用户、认证、会话目标、未读与错误字段见 SDK 对象说明。
PopoConfig 与认证回调
PopoConfig(serverUrl, authProvider) 或 PopoConfig(serverUrl, webSocketUrl, authProvider) 返回配置对象。
| 参数 | 类型 | 说明 |
|---|---|---|
| serverUrl | String | 部署根地址,例如 https://example.com。 |
| webSocketUrl | String | 显式 WebSocket 地址;两参数构造函数会从服务地址派生 /ws。 |
| authProvider | PopoAuthProvider | fetchAuth(callback) 中异步向宿主后端取票。 |
Provider 成功调用 callback.onSuccess(auth: PopoAuthInfo);失败调用 callback.onError(error: Throwable),每次只完成一次。PopoAuthInfo(user, token, expireAt) 的 expireAt 为 Long 秒时间戳。
也可使用 PopoConfig.builder(),分别调用 serverUrl(value)、webSocketUrl(value)、authProvider(value);每个设置方法返回当前 Builder,最后 build() 返回 PopoConfig。必需字段仍为 serverUrl 和 authProvider。
初始化:PopoIM.init(application, config)
| 参数 | 类型 | 说明 |
|---|---|---|
| application | Application | 宿主 Application。用户同意应用隐私政策后初始化。 |
| config | PopoConfig | 上方配置对象。每个进程初始化一次。 |
返回: void。配置无效或重复初始化等错误抛出 PopoException。初始化不等于登录。
更新连接地址:PopoIM.updateWebSocketUrl(url)
参数 url: String 为新的 WS/WSS 地址。
返回: void;地址无效时抛出 PopoException。通常初始化时配置即可,不需要反复调用。
登录:PopoIM.login(callback)
参数 callback: PopoCallback 接收完成结果。
返回: void。callback.onComplete(error) 中 error=null 表示认证和首次同步完成;失败时有 PopoException。
恢复缓存:PopoIM.restoreCachedSession(user, callback)
| 参数 | 类型 | 说明 |
|---|---|---|
| user | PopoUser | 宿主确认的当前本机用户。 |
| callback | PopoCallback | 缓存恢复流程的完成回调。 |
返回: void,结果通过 callback 交付。不请求 Token 或网络;之后仍调用 login。恢复完成不表示已经在线。
退出:PopoIM.logout(clearLocalData)
可调用无参数 logout(),或传 clearLocalData: Boolean。无参数等同 false;true 还会清理当前账号本地数据。
返回: void。用户退出宿主账号时通常使用 true;宿主同时清理自己的登录态。
查询就绪状态:PopoIM.isReady()
无参数。
返回: Boolean,表示本进程是否完成认证与首次同步,不保证此刻网络在线。
当前用户:PopoIM.currentUserId()
无参数。
返回: String 或 null,当前外部用户 ID;没有当前账号时为 null。
更新用户资料:PopoIM.updateCurrentUser(user, callback)
| 参数 | 类型 | 说明 |
|---|---|---|
| user | PopoUser | 当前用户最新资料,不能借此切换身份。 |
| callback | PopoCallback | error=null 表示完成,否则为错误。 |
返回: void。资料由宿主管理时先在宿主后端保存并同步,再更新 SDK。
订阅未读:PopoIM.addUnreadListener(listener)
参数 listener: PopoUnreadListener,通过 onUnreadChanged(count: PopoUnreadCount) 接收消息和申请两个未读总数。
返回: void。保留 listener 实例用于移除。
取消未读订阅:PopoIM.removeUnreadListener(listener)
参数为添加时的同一个 PopoUnreadListener 实例。
返回: void。宿主页面销毁时调用,避免重复监听。
处理来电通知:PopoIM.handleCallNotification(callId, callback)
| 参数 | 类型 | 说明 |
|---|---|---|
| callId | String | 推送中携带的通话 ID。 |
| callback | PopoCallback | 处理结果;error=null 表示完成。 |
返回: void。SDK 会向服务器确认状态,不应仅凭推送就认定通话仍在振铃。
请求诊断头:PopoIM.clientRequestHeaders(application)
参数 application: Application。
返回: Map<String, String>,客户端版本和设备诊断信息的请求头,不包含登录 Token。用于宿主需要配合诊断的网络请求;不要用它代替认证。
创建根页面
PopoConversationFragment() 创建会话根 Fragment;PopoContactFragment() 创建通讯录根 Fragment。两者均无参数,返回对应 Fragment 对象。
交给宿主 FragmentManager 承载,首次创建后复用,系统恢复时不要再叠加新实例。SDK 负责根页内部的导航。
打开会话:PopoUIKit.openConversation(...)
| 参数 | 类型 | 说明 |
|---|---|---|
| activity | Activity / FragmentActivity | 当前有效的宿主 Activity。 |
| target | PopoConversationTarget | 用户或群目标,使用 friend(userId) / group(groupId) 创建。 |
| messageId | String | 可选重载参数,正十进制消息 ID,用于定位历史消息。省略打开最新消息。 |
| callback | PopoCallback | 聊天页启动结果,error=null 表示已启动。 |
返回: void。完成回调不代表用户已读或已关闭聊天页。
注册根导航:PopoUIKit.setConversationNavigationHost(host)
参数 host: PopoConversationNavigationHost,通常由宿主 Activity 实现。
SDK 调用 host.showConversationListOnReturn() 时,宿主选中自己的消息标签。此回调无参数、无返回值。
返回: void。
查询缓存:PopoUIKit.cacheSize(context, callback)
参数 context: Context;callback: PopoCacheSizeCallback 接收 bytes: Long。
返回: void,当前媒体缓存字节数通过 callback 返回。
清理缓存:PopoUIKit.clearCache(context, callback)
参数同查询缓存。
返回: void,callback 返回清理后的剩余字节数,不是已经删除的大小。
创建好友二维码:PopoUIKit.createFriendQrCode(username, size)
参数 username: String 为完整账号;size: Int 为二维码像素尺寸。
返回: Bitmap。内容无效时抛出 PopoException。这里使用可搜索的账号,不是昵称。
展示系统分享:PopoUIKit.presentSystemShare(activity, intent)
参数 activity: FragmentActivity;intent: Intent 为 Android 系统分享 Intent,包含文本或文件 URI。
返回: void,输入无效等情况抛出 PopoException。分享发送成功时,可由实现 PopoUIKit.SystemShareHost 的宿主接收 onSystemShareSent(intent);该回调参数为原分享 Intent,无返回值。
