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
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:
- Tätigen von Anrufen in Swift mit Twilio
- Verarbeiten von eingehenden Telefonanrufen mit serverseitigem Swift, Vapor und Twilio
- Empfangen von und Antworten auf Textnachrichten mit serverseitigem Swift, Vapor und Twilio
Wenn du noch andere gute Ideen für Anwendungsmöglichkeiten hast oder noch Fragen offen sind, dann lass es mich wissen:
- E-Mail: Sagnew@twilio.com
- Twitter: @Sagnewshreds
- Github: Sagnew
- Twitch (Live-Code-Streaming): Sagnewshreds