在 Kotlin 中发送 SMS:sms-client-kotlin 库 API

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 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 的标准错误处理机制。所有网络错误

推荐