Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Send SMS with Twilio in Swift

Tags:

ios

swift

twilio

I try to use Twilio as an service provider but they have no examples for Swift that I understand.

My task is to send SMS to a number using Twilio API with Swift.

I have a Twilio.com account - and that one is working. But how do I do this in Swift code in a easy manner.

Twilio does provide a library - but that is meant for C# not for Swift (and using a bridging header seems too complicated!)

Here is the C# example, I need a easy Swift example.

// Download the twilio-csharp library from twilio.com/docs/csharp/install
using System;
using Twilio;
class Example 
{
  static void Main(string[] args) 
  {
    // Find your Account Sid and Auth Token at twilio.com/user/account
    string AccountSid = "AC5ef8732a3c49700934481addd5ce1659";
    string AuthToken = "{{ auth_token }}";
    var twilio = new TwilioRestClient(AccountSid, AuthToken);


    var message = twilio.SendMessage("+14158141829", "+15558675309", "Jenny please?! I love you <3", new string[] {"http://www.example.com/hearts.png"});

    Console.WriteLine(message.Sid);
  }
}
like image 865
Knut_Norway Avatar asked Dec 09 '14 19:12

Knut_Norway


People also ask

Can you use Twilio to send SMS?

Using Twilio's REST API, you can send outgoing SMS messages from your Twilio phone number to mobile phones around the globe.

Can I send SMS to any number using Twilio?

Yes, if your phone number is SMS-enabled, you can use it to send SMS messages. A list of countries where Twilio offers SMS-enabled phone numbers and their capabilities can be found here. Please note that local SMS-enabled phone numbers can only be used to send messages domestically.

How does Twilio integrate with Swift?

Swift Package ManagerYou can add the iOS Voice SDK by adding the https://github.com/twilio/twilio-voice-ios repository as a Swift Package. In your Build Settings, you will also need to modify Other Linker Flags to inlcude - ObjC .

How do I send automatic texts with Twilio?

Navigate to your list of WhatsApp Senders in the Twilio console. Click to select the sender that you want to use with this Studio Flow. Paste the Webhook URL that you copied from your Studio Flow into the field Webhook URL for incoming messages. Click Update WhatsApp Sender to save the changes.


2 Answers

Twilio evangelist here.

To send a text message from Swift you can just make a request directly to Twilios REST API. That said, I would not recommend doing this from an iOS app (or any other client app) as it requires you to embed your Twilio account credentials in the app, which is dangerous. I would instead recommend sending the SMS from a server side application.

If you do want to send the message from your app, there are a couple of Swift libraries I know of that simplify making HTTP requests:

  • Alamofire - from Mattt Thompson, creator of AFNetworking - used in the example here: https://www.twilio.com/blog/2016/11/how-to-send-an-sms-from-ios-in-swift.html
  • SwiftRequest - from Ricky Robinett of Twilio

To make the request using SwiftRequest, it would look like this:

var swiftRequest = SwiftRequest();

var data = [
    "To" : "+15555555555",
    "From" : "+15555556666",
    "Body" : "Hello World"
];

swiftRequest.post("https://api.twilio.com/2010-04-01/Accounts/[YOUR_ACCOUNT_SID]/Messages", 
    auth: ["username" : "[YOUR_ACCOUNT_SID]", "password" : "YOUR_AUTH_TOKEN"]
    data: data, 
    callback: {err, response, body in
        if err == nil {
            println("Success: \(response)")
        } else {
            println("Error: \(err)")
        }
});

Hope that helps.

like image 138
Devin Rader Avatar answered Nov 08 '22 11:11

Devin Rader


recently I have gone through Twilio docs and few SO post.

you can send SMS with following code snip in Swift 2.0

func sendSMS()
    {

        let twilioSID = "your Sender ID here"
        let twilioSecret = "your token id here"

        //Note replace + = %2B , for To and From phone number
        let fromNumber = "%2B14806794445"// actual number is +14803606445
        let toNumber = "%2B919152346132"// actual number is +919152346132
        let message = "Your verification code is 2212 for signup with <app name here> "

        // Build the request
        let request = NSMutableURLRequest(URL: NSURL(string:"https://\(twilioSID):\(twilioSecret)@api.twilio.com/2010-04-01/Accounts/\(twilioSID)/SMS/Messages")!)
        request.HTTPMethod = "POST"
        request.HTTPBody = "From=\(fromNumber)&To=\(toNumber)&Body=\(message)".dataUsingEncoding(NSUTF8StringEncoding)

        // Build the completion block and send the request
        NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { (data, response, error) in
            print("Finished")
            if let data = data, responseDetails = NSString(data: data, encoding: NSUTF8StringEncoding) {
                // Success
                print("Response: \(responseDetails)")
            } else {
                // Failure
                print("Error: \(error)")
            }
        }).resume()
}

if everything goes fine..You should receive message like this..

enter image description here

like image 22
swiftBoy Avatar answered Nov 08 '22 10:11

swiftBoy