@@ -97,6 +97,8 @@ Bot 的所有功能需要在登录后才能使用。调用 [`Bot.login`](/kdoc/a
9797
9898如果你在初始化时正确配置了 ` logHandler ` ,在首次登录时即可以在控制台看到二维码 URL。稍后将会介绍如何监听在登录过程中产生的事件。
9999
100+ ` Bot.login ` 接收一个可选的 ` preloadContacts ` 参数,表示是否在登录完成后预加载好友和群聊等联系人的信息。预加载联系人可以提升部分操作的响应速度,同时修复部分情况下无法解析 uid 的问题,但会显著增加启动时间和内存占用。默认值为 ` false ` 。
101+
100102### 好友和群聊管理
101103
102104Bot 提供了丰富的 API 来操作好友和群聊等功能。以下是一些示例:
@@ -295,3 +297,47 @@ bot.eventFlow
295297 }
296298 }
297299```
300+
301+ ## Android 登录
302+
303+ 从版本 ` 0.10.0 ` 开始,Acidify 还支持使用 Android 协议登录。要使用 Android 协议,同样需要准备相对应的 ` AndroidAppInfo ` 、` AndroidSessionStore ` 和 ` AndroidSignProvider ` ,并用它们创建一个 ` AndroidBot ` 实例:
304+
305+ ``` kotlin
306+ val androidAppInfo = AndroidAppInfo .Bundled .AndroidPhone
307+ val androidSessionStore = if (File (" session-store-android.json" ).exists()) {
308+ val json = File (" session-store-android.json" ).readText()
309+ AndroidSessionStore .fromJson(json)
310+ } else {
311+ AndroidSessionStore .empty(uin, password)
312+ }
313+ val androidSignProvider = AndroidUrlSignProvider (" ..." )
314+ val scope = CoroutineScope (SupervisorJob ())
315+
316+ val androidBot = AndroidBot .create(
317+ appInfo = androidAppInfo,
318+ sessionStore = androidSessionStore,
319+ signProvider = androidSignProvider,
320+ scope = scope,
321+ minLogLevel = LogLevel .DEBUG ,
322+ logHandler = SimpleLogHandler ,
323+ )
324+ ```
325+
326+ 登录需要调用 [ ` AndroidBot.login ` ] ( /kdoc/acidify-core/org.ntqqrev.acidify/-android-bot/login.html ) 方法。` AndroidBot ` 的登录 API 与 ` Bot ` 稍有不同,需要提供额外的两个参数:
327+
328+ ``` kotlin
329+ suspend fun AndroidBot.login (
330+ onRequireCaptchaTicket : suspend (captchaUrl: String ) -> String ,
331+ onRequireSmsCode : suspend (
332+ countryCode: String ,
333+ phone: String ,
334+ smsUrl: String
335+ ) -> String ,
336+ preloadContacts : Boolean = false
337+ )
338+ ```
339+
340+ - ` onRequireCaptchaTicket ` 在登录过程中需要用户完成图形验证码时被调用,` captchaUrl ` 是验证码图片的 URL,函数需要返回完成验证码后抓取到的 ` ticket ` 。
341+ - ` onRequireSmsCode ` 在登录过程中需要用户完成短信验证时被调用,参数 ` countryCode ` 和 ` phone ` 是短信发送到的手机号的国家码和号码,函数需要返回用户输入的短信验证码。如果用户没有收到验证码,可以通过 ` smsUrl ` 参数提供的 URL 来手动验证,这时函数可以返回一个空字符串。
342+
343+ 与 ` Bot.login ` 类似,` AndroidBot.login ` 也会先尝试使用现有的 Session 信息登录,如果失败则调用上述的回调函数来完成登录流程。登录成功后,会触发 [ ` AndroidSessionStoreUpdatedEvent ` ] ( /kdoc/acidify-core/org.ntqqrev.acidify.event/-android-session-store-updated-event/index.html ) ,你可以监听该事件来获取新的 Session 信息并保存以便下次登录使用。
0 commit comments