Swift (iOS/macOS) पर SMS भेजना: MessageUI API और तृतीय-पक्ष सेवाएँ

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift (iOS/macOS) पर SMS भेजना: API और लाइब्रेरीज़

iOS और macOS ऐप डेवलपमेंट में, उपयोगकर्ताओं को SMS भेजने की ज़रूरत अक्सर पड़ती है — जैसे वेरिफिकेशन, नोटिफिकेशन या CRM इंटीग्रेशन के लिए। इस लेख में हम दो मुख्य तरीकों पर चर्चा करेंगे: सिस्टम ऐप के ज़रिए SMS भेजने के लिए MessageUI फ्रेमवर्क का उपयोग, और क्लाउड SMS प्रदाताओं (Twilio, Nexmo/Vonage) के HTTP API के ज़रिए इंटीग्रेशन। साथ ही, सीमाएँ और बेस्ट प्रैक्टिसेज़ भी जानेंगे।

1. MessageUI के ज़रिए SMS भेजना (केवल iOS)

MessageUI फ्रेमवर्क MFMessageComposeViewController प्रदान करता है, जो iOS के स्टैंडर्ड इंटरफ़ेस का उपयोग करके आपके ऐप से SMS भेजने की सुविधा देता है। महत्वपूर्ण: यह तरीका केवल वास्तविक डिवाइस पर काम करता है (सिम्युलेटर पर नहीं) और इसमें एक्टिव SIM कार्ड ज़रूरी है।

चरण 1: फ्रेमवर्क को इम्पोर्ट करें

जिस फ़ाइल में SMS कोड लिखेंगे, वहाँ यह इम्पोर्ट जोड़ें:

import MessageUI

चरण 2: SMS भेजने की क्षमता जाँचें

कंट्रोलर को कॉल करने से पहले जाँच लें कि डिवाइस SMS भेज सकता है या नहीं:

if MFMessageComposeViewController.canSendText() {
    // भेज सकते हैं
} else {
    // उपयोगकर्ता को एरर दिखाएँ
}

चरण 3: कंट्रोलर बनाएँ और सेट करें

let messageVC = MFMessageComposeViewController()
messageVC.body = "आपका वेरिफिकेशन कोड: 123456"
messageVC.recipients = ["+919001234567"]
messageVC.messageComposeDelegate = self // डेलिगेट सेट करना न भूलें
present(messageVC, animated: true, completion: nil)

चरण 4: डेलिगेट को लागू करें

extension YourViewController: MFMessageComposeViewControllerDelegate {
    func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
        controller.dismiss(animated: true) {
            switch result {
            case .sent:
                print("SMS भेजा गया")
            case .cancelled:
                print("रद्द किया गया")
            case .failed:
                print("भेजने में विफल")
            @unknown default:
                break
            }
        }
    }
}

सीमाएँ:

  • सिम्युलेटर पर काम नहीं करता।
  • उपयोगकर्ता इंटरफ़ेस देखता है और संदेश बदल सकता है।
  • स्वचालित भेजने (जैसे सर्वर-साइड) के लिए उपयुक्त नहीं।
  • macOS पर उपलब्ध नहीं (केवल iOS)।

2. तृतीय-पक्ष API के ज़रिए SMS भेजना (Twilio, Nexmo आदि)

बिना उपयोगकर्ता की भागीदारी के SMS भेजने के लिए क्लाउड प्रदाताओं के HTTP API का उपयोग करें। आइए Twilio का उदाहरण देखें — जो सबसे लोकप्रिय सेवाओं में से एक है।

चरण 1: क्रेडेंशियल प्राप्त करें

Twilio पर रजिस्टर करें, Account SID, Auth Token और भेजने वाला फ़ोन नंबर (जैसे +15005550006 टेस्ट के लिए) प्राप्त करें।

चरण 2: POST रिक्वेस्ट भेजें

Twilio API को कॉल करने के लिए URLSession का उपयोग करें:

func sendSMSviaTwilio(to recipient: String, message: String) {
    let accountSID = "YOUR_ACCOUNT_SID"
    let authToken = "YOUR_AUTH_TOKEN"
    let fromNumber = "+15005550006"
    
    let urlString = "https://api.twilio.com/2010-04-01/Accounts/\(accountSID)/Messages.json"
    guard let url = URL(string: urlString) else { return }
    
    var request = URLRequest(url: url)
    request.httpMethod = "POST"
    let loginString = "\(accountSID):\(authToken)"
    let loginData = loginString.data(using: .utf8)!
    let base64LoginString = loginData.base64EncodedString()
    request.setValue("Basic \(base64LoginString)", forHTTPHeaderField: "Authorization")
    
    let bodyParams = [
        "From": fromNumber,
        "To": recipient,
        "Body": message
    ]
    let bodyString = bodyParams.map { "\($0.key)=\($0.value)" }.joined(separator: "&")
    r                    

अनुशंसाएँ