Skip to content

Commit be05b52

Browse files
committed
docs: refine acidify-core docs, add Android parts
1 parent c376a2d commit be05b52

4 files changed

Lines changed: 51 additions & 2 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
### Kotlin
1818

19-
- `acidify-core` - PC NTQQ 协议的核心实现 [![Maven Central](https://img.shields.io/maven-central/v/org.ntqqrev/acidify-core?label=Maven%20Central&logo=maven&color=blue)](https://central.sonatype.com/artifact/org.ntqqrev/acidify-core)
19+
- `acidify-core` - PC & Android NTQQ 协议的核心实现 [![Maven Central](https://img.shields.io/maven-central/v/org.ntqqrev/acidify-core?label=Maven%20Central&logo=maven&color=blue)](https://central.sonatype.com/artifact/org.ntqqrev/acidify-core)
2020
- `yogurt` - 基于 Acidify 的 Milky 实现
2121
- `yogurt-jvm` - Yogurt 的 JVM 平台适配 (Workaround for Ktor plugin's incompatibility issue)
2222

acidify-docs/content/core/kotlin.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ Bot 的所有功能需要在登录后才能使用。调用 [`Bot.login`](/kdoc/a
9797

9898
如果你在初始化时正确配置了 `logHandler`,在首次登录时即可以在控制台看到二维码 URL。稍后将会介绍如何监听在登录过程中产生的事件。
9999

100+
`Bot.login` 接收一个可选的 `preloadContacts` 参数,表示是否在登录完成后预加载好友和群聊等联系人的信息。预加载联系人可以提升部分操作的响应速度,同时修复部分情况下无法解析 uid 的问题,但会显著增加启动时间和内存占用。默认值为 `false`
101+
100102
### 好友和群聊管理
101103

102104
Bot 提供了丰富的 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 信息并保存以便下次登录使用。

acidify-docs/content/core/nodejs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ npm install @acidify/core
1919
- 在使用 Kotlin 单例对象时(如 `SimpleLogHandler`),需要通过 `getInstance()` 方法来获取实例。
2020
- 由于 `kotlinx-coroutines` 并没有针对 JavaScript 平台提供类型定义,因此 `@acidify/core` 提供了一个简化的 `CoroutineScope` 包装类型,接收一个 `boolean` 表示该协程作用域是否为 `SupervisorJob`,同时只暴露了一个方法 `cancel()` 用于取消协程作用域。
2121
- `Bot` 没有暴露 `eventFlow` 属性,而是转而通过 `onXxx` 方法来注册事件处理器,同时提供了对应的 `offXxx` 方法来注销事件处理器。
22+
- `@acidify/core` **暂不支持 Android 登录方式**
2223

2324
以下是一个完整的 TypeScript 使用示例:
2425

acidify-docs/content/index.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# 快速开始
22

3-
欢迎来到 Acidify 的文档!Acidify 是一个用 Kotlin 编写的跨平台 PC NTQQ 协议支持库。
3+
欢迎来到 Acidify 的文档!
4+
5+
`acidify-core` 是一个用 Kotlin 编写的跨平台 PC & Android NTQQ 协议支持库,发布于 Maven Central 和 npm。Acidify 的代码仓库还包含一个基于 `acidify-core` 实现的 QQ 协议端 Yogurt。
46

57
## 使用
68

0 commit comments

Comments
 (0)