跳转到正文

Android 方法参考 ​

先按 Android 接入加入本地模块。以下为宿主使用的 Core 与 UIKit 方法,Kotlin 和 Java 调用同一套 API。用户、认证、会话目标、未读与错误字段见 SDK 对象说明。

PopoConfig 与认证回调 ​

PopoConfig(serverUrl, authProvider) 或 PopoConfig(serverUrl, webSocketUrl, authProvider) 返回配置对象。

参数类型说明
serverUrlString部署根地址,例如 https://example.com。
webSocketUrlString显式 WebSocket 地址;两参数构造函数会从服务地址派生 /ws。
authProviderPopoAuthProviderfetchAuth(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) ​

参数类型说明
applicationApplication宿主 Application。用户同意应用隐私政策后初始化。
configPopoConfig上方配置对象。每个进程初始化一次。

返回: 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) ​

参数类型说明
userPopoUser宿主确认的当前本机用户。
callbackPopoCallback缓存恢复流程的完成回调。

返回: 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) ​

参数类型说明
userPopoUser当前用户最新资料,不能借此切换身份。
callbackPopoCallbackerror=null 表示完成,否则为错误。

返回: void。资料由宿主管理时先在宿主后端保存并同步,再更新 SDK。

订阅未读:PopoIM.addUnreadListener(listener) ​

参数 listener: PopoUnreadListener,通过 onUnreadChanged(count: PopoUnreadCount) 接收消息和申请两个未读总数。

返回: void。保留 listener 实例用于移除。

取消未读订阅:PopoIM.removeUnreadListener(listener) ​

参数为添加时的同一个 PopoUnreadListener 实例。

返回: void。宿主页面销毁时调用,避免重复监听。

处理来电通知:PopoIM.handleCallNotification(callId, callback) ​

参数类型说明
callIdString推送中携带的通话 ID。
callbackPopoCallback处理结果;error=null 表示完成。

返回: void。SDK 会向服务器确认状态,不应仅凭推送就认定通话仍在振铃。

请求诊断头:PopoIM.clientRequestHeaders(application) ​

参数 application: Application。

返回: Map<String, String>,客户端版本和设备诊断信息的请求头,不包含登录 Token。用于宿主需要配合诊断的网络请求;不要用它代替认证。

创建根页面 ​

PopoConversationFragment() 创建会话根 Fragment;PopoContactFragment() 创建通讯录根 Fragment。两者均无参数,返回对应 Fragment 对象。

交给宿主 FragmentManager 承载,首次创建后复用,系统恢复时不要再叠加新实例。SDK 负责根页内部的导航。

打开会话:PopoUIKit.openConversation(...) ​

参数类型说明
activityActivity / FragmentActivity当前有效的宿主 Activity。
targetPopoConversationTarget用户或群目标,使用 friend(userId) / group(groupId) 创建。
messageIdString可选重载参数,正十进制消息 ID,用于定位历史消息。省略打开最新消息。
callbackPopoCallback聊天页启动结果,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,无返回值。