You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SwiftUI项目接入Twilio实现手机号验证 现有UIKit示例无法适配怎么办

SwiftUI 实现手机号验证功能方案

现有VerifyAPI封装无需改动可直接复用,只需要实现对应SwiftUI视图即可,完整实现代码如下:

import SwiftUI

struct PhoneVerificationView: View {
    // 存储输入框内容
    @State private var countryCode: String = ""
    @State private var phoneNumber: String = ""
    
    var body: some View {
        VStack(spacing: 24) {
            TextField("国家码(例:86)", text: $countryCode)
                .keyboardType(.numberPad)
                .textFieldStyle(.roundedBorder)
                .padding(.horizontal)
            
            TextField("手机号码", text: $phoneNumber)
                .keyboardType(.phonePad)
                .textFieldStyle(.roundedBorder)
                .padding(.horizontal)
            
            Button {
                guard !countryCode.isEmpty, !phoneNumber.isEmpty else {
                    // 可自行添加空输入提示
                    return
                }
                // 调用原有验证接口
                VerifyAPI.sendVerificationCode(countryCode, phoneNumber)
                // 可自行添加发送后的提示或页面跳转逻辑
            } label: {
                Text("发送验证码")
                    .foregroundColor(.white)
                    .frame(maxWidth: .infinity)
                    .padding(.vertical, 14)
                    .background(.blue)
                    .cornerRadius(10)
            }
            .padding(.horizontal)
        }
        .navigationTitle("手机号验证")
    }
}

可选优化方案

  • 若需要处理接口请求结果,可修改VerifyAPI增加回调参数:
struct VerifyAPI {
    static func sendVerificationCode(
        _ countryCode: String,
        _ phoneNumber: String,
        completion: @escaping (Bool, Any?) -> Void
    ) {
        let parameters = [
            "via": "sms",
            "country_code": countryCode,
            "phone_number": phoneNumber
        ]
        
        RequestHelper.createRequest("start", parameters) { json in
            // 根据实际业务逻辑判断请求是否成功
            let isSuccess = true // 此处替换为实际返回的成功状态判断
            completion(isSuccess, json)
            return .success(DataResult(data: json))
        }
    }
}

修改后按钮的调用逻辑可调整为:

VerifyAPI.sendVerificationCode(countryCode, phoneNumber) { isSuccess, result in
    if isSuccess {
        // 发送成功,跳转至验证码填写页面
    } else {
        // 发送失败,弹出错误提示
    }
}
  • 可自行添加输入内容正则校验,避免无效内容提交
  • 可给按钮增加点击防抖逻辑,避免用户重复触发多次请求

内容的提问来源于stack exchange,提问作者Mesut Aygun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:45:06