如何快速将OTP发送到已注册的手机号码? [英] How to send OTP to registered mobile number in swift?
问题描述
在我的应用程序中,注册时我需要发送otp到注册号,但是我无法发送otp到注册号.对于注册,我有两个api,一个是注册和otpverify ...当我单击registerButton时,我需要将otp发送到注册的手机号码...这里如何将otp转换为注册的手机号码?
这是我的总代码:
import UIKit
class RegistrationViewController: UIViewController, UITextFieldDelegate{
//MARK:- Outlets
@IBOutlet weak var nameTextField: UITextField!
@IBOutlet weak var phoneNumTextField: UITextField!
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var passwordTextField: UITextField!
@IBOutlet weak var conformPasswordTextField: UITextField!
@IBOutlet weak var otpTextField: UITextField!
@IBOutlet weak var registerButton: UIButton!
@IBOutlet weak var sendOtpButton: UIButton!
var otpField: Int?
//MARK:- lifecycle methods
override func viewDidLoad() {
super.viewDidLoad()
self.phoneNumTextField.keyboardType = .phonePad
otpTextField.isHidden = true
}
//MARK:- ButtonActions
@IBAction func registerButton(_ sender: Any) {
registerService()
}
@IBAction func sendOTPButton(_ sender: Any) {
otpService()
}
//MARK:- Service part
func registerService(){
print("register tapped")
let parameters = ["mobile_number": Int(phoneNumTextField.text ?? "") as Any,
"email":emailTextField.text as Any,
"password":passwordTextField.text as Any,
"name": nameTextField.text as Any]
let url = URL(string: "https://webservices/register")
var req = URLRequest(url: url!)
req.httpMethod = "POST"
req.addValue("application/json", forHTTPHeaderField: "Contet-Type")
req.addValue("application/json", forHTTPHeaderField: "Accept")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) else {return}
req.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: req, completionHandler: {(data, response, error) in
if response != nil {
// print(response)
}
if let data = data {
do{
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String: Any]
let phNum = json["mobile_number"] as? Int
self.otpField = json["otp"] as? Int
DispatchQueue.main.async {
self.otpTextField.text = self.otpField as? String
}
}catch{
print("error")
}
}
}).resume()
}
func otpService(){
let parameters = ["mobile_number": phoneNumTextField.text as Any,
"otp": otpTextField.text as Any]
let url = URL(string: "https://webservices//otpverify")
var req = URLRequest(url: url!)
req.httpMethod = "POST"
req.addValue("application/json", forHTTPHeaderField: "Contet-Type")
req.addValue("application/json", forHTTPHeaderField: "Accept")
guard let httpBody = try? JSONSerialization.data(withJSONObject: parameters, options: .prettyPrinted) else {return}
req.httpBody = httpBody
let session = URLSession.shared
session.dataTask(with: req, completionHandler: {(data, response, error) in
if response != nil {
// print(response)
}
if let data = data {
do{
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String: Any]
let mobileNum = json["mobile_number"] as! [String : Any]
let Uid = mobileNum["id"] as? String
let name = mobileNum["name"] as? String
let phNum = mobileNum["username"] as? String
DispatchQueue.main.async {
if (self.otpTextField.text == String(self.otpField!)){
print("registration successfullllll...")
let loginVC = self.storyboard?.instantiateViewController(withIdentifier: "LoginViewController") as! LoginViewController
self.present(loginVC, animated: true)
}
else{
print("register fail")
}
}
}catch{
print("error")
}
}
}).resume()
}
}
此处介绍如何将otp发送到注册的手机号码.请在这里帮助我.
您应该注意一件事:
- 您重复了代码:调用Web服务.您应该有一个负责这个的类,您只需传递方法(post,get ...)和参数即可.
关于将OTP发送到注册的电话号码,这应该由您的后端负责.
而且,它不是像这样的代码的otpTextField的值
let parameters = ["mobile_number": phoneNumTextField.text as Any,
"otp": otpTextField.text as Any]
有些第三方可以帮助进行电话验证(当然包括发送otp),例如Facebook的AccountKit(但不幸的是,它自2019年9月起停止运行)或Twilio(似乎是目前的最佳选择). /p>
您可以按照以下步骤将Twilio电话验证集成到您的应用程序中: Here how to send otp to registerd mobile number. please help me here. There's one thing you should notice: Regarding to sending OTP to registered phone number, it should be the responsibility of your backend. And also, it's not the value of otpTextField like this code There're some third parties who can help on phone verification (include sending otp of course) like AccountKit of Facebook (but unfortunately, it stopped since Sep 2019) or Twilio (seems like the best choice at this time). You can follow this to integrate Twilio phone verification into your application: https://www.twilio.com/blog/phone-verification-in-ios-with-twilio-verify-and-swift-html 这篇关于如何快速将OTP发送到已注册的手机号码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
let parameters = ["mobile_number": phoneNumTextField.text as Any,
"otp": otpTextField.text as Any]