在 Kotlin 中发送 SMS:sms-client-kotlin 库 API
现代移动应用和服务器端解决方案通常需要与 SMS 网关集成,以发送通知、确认信息或营销消息。对于 Kotlin 语言,有一个便捷的库 sms-client-kotlin,它提供了一个简单且类型安全的 API,用于与流行的 SMS 提供商协作。本文将详细解析其架构、方法及使用示例。
什么是 sms-client-kotlin?
sms-client-kotlin 库是一个轻量级的 HTTP 客户端,使用纯 Kotlin 编写并基于协程。它抽象了与不同 SMS 提供商(例如 Twilio、Vonage、SMS-Центр)的 REST API 交互,并提供了统一的发送消息接口。主要优势:
- 异步性 — 所有请求均通过 Kotlin 协程执行。
- 类型安全 — 请求和响应参数的严格类型化。
- 模块化 — 通过统一接口
SmsSender支持多个提供商。 - 易于配置 — 依赖项最少。
安装与配置
要将库添加到项目中,请使用 Gradle。在 build.gradle.kts 文件中添加依赖:
dependencies { implementation("com.github.sms-client:sms-client-kotlin:1.2.0") implementation("io.ktor:ktor-client-core:2.3.0") implementation("io.ktor:ktor-client-cio:2.3.0") // 或其他引擎}同步项目后,您可以创建客户端实例。以下是针对 Twilio 提供商的初始化示例:
import sms.client.SmsClientimport sms.client.provider.twilio.TwilioConfig
fun main() { val config = TwilioConfig( accountSid = "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", authToken = "your_auth_token_here", fromNumber = "+1234567890" )
val client = SmsClient.create(config)}主要 API 方法
该库提供了几个关键方法用于发送和管理 SMS:
1. 发送单条消息
sendSms 方法接收收件人号码和消息文本。返回一个包含发送信息的 SmsResult 对象。
suspend fun sendSingleMessage(client: SmsClient) { val result = client.sendSms( to = "+79876543210", message = "你好!这是来自 Kotlin 的测试消息。" )
when (result) { is SmsResult.Success -> println("已发送!ID: ${result.messageId}") is SmsResult.Failure -> println("错误:${result.errorMessage}") }}2. 批量发送
对于群发,请使用 sendBatch 方法。它接收收件人列表和通用文本(或个性化消息)。
suspend fun sendBatch(client: SmsClient) { val recipients = listOf( BatchRecipient("+79111111111", "首单立减10%!"), BatchRecipient("+79222222222", "您的验证码:1234") )
val batchResult = client.sendBatch(recipients) println("成功发送:${batchResult.successCount},失败:${batchResult.failureCount}")}3. 检查投递状态
getDeliveryStatus 方法允许根据消息 ID 获取之前发送消息的当前状态。
suspend fun checkStatus(client: SmsClient, messageId: String) { val status = client.getDeliveryStatus(messageId) println("消息 $messageId 的状态:${status.status} (${status.description})")}错误与异常处理
该库使用 Kotlin 的标准错误处理机制。所有网络错误