Senden von Textnachrichten in Swift mit Twilio

March 22, 2018
Autor:in:
Sam Agnew
Twilion

Senden von Textnachrichten in Swift mit Twilio


Hallo und Danke fürs Lesen! Dieser Blogpost ist eine Übersetzung von Sending text messages in Swift with Twilio. Während wir unsere Übersetzungsprozesse verbessern, würden wir uns über Dein Feedback an help@twilio.com freuen, solltest Du etwas bemerken, was falsch übersetzt wurde. Wir bedanken uns für hilfreiche Beiträge mit Twilio Swag :)

Das programmgesteuerte Senden von Textnachrichten ist eine tolle Sache, aber wenn das Senden über eine iOS-App erfolgt, besteht ein gewisses Risiko, da die Twilio-Anmeldeinformationen in der App gespeichert werden müssen. Wir können das Risiko, Twilio clientseitig zu verwenden, umgehen, wenn wir uns die Möglichkeit zunutze machen, dass Swift auf dem Server ausgeführt werden kann.

Sehen wir uns an, wie wir über Swift eine SMS mit Twilio von unserem Server senden können.

Wenn du direkt zum Punkt gelangen möchtest, dann findest du hier den vollständigen Code:

import Foundation
import Alamofire

if let accountSID = ProcessInfo.processInfo.environment["TWILIO_ACCOUNT_SID"], 
   let authToken = ProcessInfo.processInfo.environment["TWILIO_AUTH_TOKEN"] {

  let url = "https://api.twilio.com/2010-04-01/Accounts/\(accountSID)/Messages"
  let parameters = ["From": "YOUR_TWILIO_NUMBER", "To": "YOUR_PERSONAL_NUMBER", "Body": "Hello from Swift!"]

  Alamofire.request(url, method: .post, parameters: parameters)
    .authenticate(user: accountSID, password: authToken)
    .responseJSON { response in
      debugPrint(response)
  }

  RunLoop.main.run()
}

Lies weiter, wenn du erfahren möchtest, wie wir den Code zum Funktionieren bringen. Bevor wir jedoch fortfahren, müssen wir ein Twilio-Konto erstellen, falls wir noch keines haben, und Swift 4 installieren.

Was ist Alamofire?

Um eine Textnachricht mit Twilio zu senden, müssen wir eine HTTP-Anfrage an die Twilio-REST-API stellen. Dazu verwenden wir eine Bibliothek mit dem Namen Alamofire. In diesem Tutorial findest du allgemeine Informationen zum Senden von HTTP-Anfragen in Swift.

Da die Bedingung lautet, den Code serverseitig auszuführen, verwenden wir den Swift-Paket-Manager, um die Abhängigkeiten zu verarbeiten. Wir initiieren zuerst ein Swift-Paket in dem Verzeichnis, in dem wir den Code ausführen möchten (ich habe mein Verzeichnis „SwiftSMS“ genannt):

swift package init --type executable

Dadurch wird eine Package.swift-Datei erstellt, der wir unsere Abhängigkeiten hinzufügen können. Wir öffnen Package.swift und prüfen, ob der folgende Code vorhanden ist:

// swift-tools-version:4.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "SwiftSMS",
    dependencies: [
        .package(url: "https://github.com/Alamofire/Alamofire.git", from: "4.0.0")
    ],
    targets: [
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
        // Targets can depend on other targets in this package, and on products in packages which this package depends on.
        .target(
            name: "SwiftSMS",
            dependencies: ["Alamofire"]),
    ]
)

Wir müssen darauf achten, dass wir im targets-Abschnitt den name auf den Namen unseres Pakets anpassen.

Nachdem wir uns um die Abhängigkeiten gekümmert haben, können wir jetzt unserer ausführbaren Datei Code hinzufügen.

Senden einer SMS in Swift

Bevor wir Nachrichten senden können, benötigen wir eine Twilio-Telefonnummer. Wir können eine Telefonnummer hier kaufen (wenn wir die Nummer zum Testen unseres Codes während der Entwicklung nutzen, ist sie kostenlos).

Um eine Textnachricht zu senden, müssen wir unsere Twilio-Konto-SID und das Authentifizierungstoken als Teil der Anfrage senden. Diese Informationen finden wir in der Twilio-Konsole. Wir speichern sie in Umgebungsvariablen. Dazu verwenden wir den folgenden Befehl:

export TWILIO_ACCOUNT_SID='YOUR_ACCOUNT_SID'
export TWILIO_AUTH_TOKEN='YOUR_AUTH_TOKEN'

Wir öffnen jetzt die Datei main.swift im Ordner Sources/SwiftSMS/ (wir ersetzen „SwiftSMS“ durch den entsprechenden Namen des Projekts) und fügen den folgenden Code hinzu:

import Foundation
import Alamofire

if let accountSID = ProcessInfo.processInfo.environment["TWILIO_ACCOUNT_SID"], 
   let authToken = ProcessInfo.processInfo.environment["TWILIO_AUTH_TOKEN"] {

  let url = "https://api.twilio.com/2010-04-01/Accounts/\(accountSID)/Messages"
  let parameters = ["From": "YOUR_TWILIO_NUMBER", "To": "YOUR_PERSONAL_NUMBER", "Body": "Hello from Swift!"]

  Alamofire.request(url, method: .post, parameters: parameters)
    .authenticate(user: accountSID, password: authToken)
    .responseJSON { response in
      debugPrint(response)
  }

  RunLoop.main.run()
}

Wir müssen darauf achten, unsere Twilio-Telefonnummer und persönliche Telefonnummer als Werte für From und To einzugeben. Wenn wir jetzt diesen Befehl ausführen, sollten wir eine Textnachricht erhalten.

swift build && ./.build/debug/SwiftSMS

Hallo von Swift

Wie geht es weiter?

Wir können jetzt Textnachrichten serverseitig mit Swift senden. Gut gemacht! Diese Funktion können wir hervorragend über ein Back-End-Webframework für Swift wie Vapor einer tatsächlichen Webanwendung hinzufügen. Wir haben auch die Möglichkeit, diese Funktion ohne Alamofire zu implementieren, wenn wir uns nicht auf Abhängigkeiten verlassen möchten. Weitere Informationen zum Senden von HTTP-Anfragen in Swift 3 oder 4 findest du in diesem Blogbeitrag.

Weitere Anwendungsmöglichkeiten für Swift und Twilio findest du in diesen Blogs:

Wenn du noch andere gute Ideen für Anwendungsmöglichkeiten hast oder noch Fragen offen sind, dann lass es mich wissen: