Wie man SMS von Kotlin aus sendet
Der einfachste Weg, SMS von Kotlin aus zu senden, ist die Verwendung der integrierten HTTP/Rest-SMS-API von Ozeki SMS Gateway. Wenn Sie diese API verwenden, senden Sie SMS-Nachrichten, indem Sie eine HTTP-Post-Anfrage an das SMS-Gateway stellen. Die HTTP-Post-Anfrage wird eine im JSON-Format formatierte Nachricht enthalten. Das SMS-Gateway wird diese SMS an das Empfängertelefon senden und eine HTTP-200-OK-Antwort auf Ihre Anfrage zurückgeben. (Abbildung 1)
Das folgende Kotlin-SMS-Codebeispiel zeigt, wie Sie SMS mit der HTTP-REST-SMS-API des Ozeki SMS Gateway unter Verwendung der Kotlin-Bibliothek Ozeki.Libs.Rest senden können. Diese Bibliothek wird Ihnen kostenlos zur Verfügung gestellt, und Sie können sie in Ihren Projekten verwenden und modifizieren.
MainActivity.kt
package send.sms import android.os.Build import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.text.method.ScrollingMovementMethod import androidx.annotation.RequiresApi import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import Ozeki.Libs.Rest.Configuration import Ozeki.Libs.Rest.Message import Ozeki.Libs.Rest.MessageApi class MainActivity : AppCompatActivity() { @RequiresApi(Build.VERSION_CODES.O) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val btnSendRequest:android.widget.Button = findViewById(R.id.btnSendRequest) val inputToAddress:android.widget.EditText = findViewById(R.id.inputToAddress) val inputMessage:android.widget.EditText = findViewById(R.id.inputMessage) val logBox:android.widget.TextView = findViewById(R.id.logBox) logBox.movementMethod = ScrollingMovementMethod() val configuration = Configuration( username = "http_user", password = "qwe123", apiurl = "http://10.0.2.2:9509/api" ) val api = MessageApi(configuration) btnSendRequest.setOnClickListener { if (inputToAddress.text.toString() != "" && inputMessage.text.toString() != "") { GlobalScope.launch(Dispatchers.IO) { val msg = Message() msg.ToAddress = inputToAddress.text.toString() msg.Text = inputMessage.text.toString() inputToAddress.text.clear() inputMessage.text.clear() val response = api.Send(msg) logBox.text = String.format("%s\n%s", logBox.text, response.toString()) } } } } }
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="send.sms.MainActivity"> <Button android:id="@+id/btnSendRequest" android:layout_width="320dp" android:layout_height="50dp" android:layout_marginBottom="24dp" android:text="Senden" android:backgroundTint="#FF3F3F" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/logBox" app:layout_constraintVertical_bias="0.776" /> <EditText android:id="@+id/inputMessage" android:layout_width="320dp" android:layout_height="150dp" android:layout_marginTop="32dp" android:ems="10" android:gravity="start|top" android:hint="Hallo Welt!" android:inputType="textMultiLine" android:textColorHint="#BFBFBF" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.494" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" /> <TextView android:id="@+id/textView" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Nachricht:" android:textSize="20sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/inputToAddress" /> <TextView android:id="@+id/textView2" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:text="An Adresse:" android:textSize="20sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/inputToAddress" android:layout_width="320dp" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:ems="10" android:hint="+36201111111" android:inputType="textPersonName" android:textColorHint="#BFBFBF" android:textSize="18sp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView2" /> <TextView android:id="@+id/logBox" android:layout_width="320dp" android:layout_height="160dp" android:layout_marginTop="36dp" android:scrollbars="vertical" android:text="Protokoll:" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.505" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/inputMessage" /> </androidx.constraintlayout.widget.ConstraintLayout>
So verwenden Sie das Kotlin-SMS-Beispiel:
Sie können die Message-Klasse verwenden, um die SMS zu erstellen, und die MessageApi-Klasse, um die SMS an das SMS-Gateway zu senden. Das SMS-Gateway leitet Ihre Nachricht dann entweder über eine drahtlose Verbindung oder über das Internet an das Mobilfunknetz weiter.
Download SendSms.kt
Der in diesem Artikel erklärte Quellcode kann kostenlos heruntergeladen, genutzt und modifiziert werden.
Download: SendSms.kt.zip (148Kb)
Was befindet sich in der SendSms.kt.zip-Datei?
Die SendSms.kt.zip-Datei enthält das Beispielprojekt, das die Ozeki.Libs.Rest-Bibliothek beinhaltet. Mit dieser Bibliothek können Sie SMS-Nachrichten senden, löschen, markieren und empfangen, indem Sie eine MessageApi erstellen und die Methoden Send(), Delete(), Mark() und Receive() verwenden. (Abbildung 2)
Wie man SMS von Kotlin aus sendet (Schnelle Schritte)
Um SMS von Kotlin aus zu senden:
- Installieren Sie Ozeki SMS Gateway
- Verbinden Sie Ozeki SMS Gateway mit dem Mobilfunknetz
- Senden Sie eine Test-SMS über die Ozeki GUI
- Erstellen Sie einen HTTP-SMS-API-Benutzer
- Android Studio
- Laden Sie das oben genannte Beispielprojekt herunter
- Erstellen Sie die SMS, indem Sie ein neues Message-Objekt erstellen
- Erstellen Sie eine API, um Ihre Nachricht zu senden
- Verwenden Sie die Send-Methode, um Ihre Nachricht zu senden
- Lesen Sie die Antwortnachricht in der Konsole
- Überprüfen Sie die Protokolle im SMS-Gateway
Installieren Sie Ozeki SMS Gateway und erstellen Sie einen HTTP-API-Benutzer
Um SMS von Kotlin aus senden zu können, müssen Sie zunächst Ozeki SMS Gateway installieren. Das SMS-Gateway kann auf demselben Computer installiert werden, auf dem Sie Ihren Kotlin-Code in Android Studio entwickeln. Nach der Installation besteht der nächste Schritt darin, Ozeki SMS Gateway mit dem Mobilfunknetz zu verbinden. Sie können Erstellung eines HTTP-SMS-API-Benutzerkontos. Erstellen Sie einen Benutzer mit dem Benutzernamen "http_user" und dem Passwort "qwe123", damit das Beispiel ohne Änderungen funktioniert.
Nachdem die Umgebung eingerichtet ist, können Sie Ihren Kotlin-Code ausführen.
HTTP-API-URL zum Senden von SMS von Kotlin aus
Um SMS von Kotlin aus zu senden, muss Ihre Kotlin-Anwendung eine HTTP-Anfrage an das SMS-Gateway senden. Die API-URL wird unten angezeigt. Beachten Sie, dass die IP-Adresse (127.0.0.1) durch die IP-Adresse Ihres SMS-Gateways ersetzt werden sollte. Wenn Ozeki SMS Gateway auf demselben Computer installiert ist, auf dem die JavaScript-SMS-Anwendung läuft, kann dies 127.0.0.1 sein. Wenn es auf einem anderen Computer installiert ist, sollte es die IP-Adresse dieses Computers sein.
http://127.0.0.1:9509/api?action=rest
HTTP-Authentifizierung zum Senden von SMS von Kotlin aus
Um den Kotlin-SMS-Client zu authentifizieren, müssen Sie den Benutzernamen und das Passwort in einer base64-kodierten Zeichenfolge in einer HTTP-Anfrage an den Server senden. Das verwendete Format lautet: base64(Benutzername+":"+Passwort). In Kotlin können Sie den folgenden Code verwenden, um diese Kodierung durchzuführen:
var usernamePassword = "%s:%s".format(username, password) return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
Wenn Sie beispielsweise den Benutzernamen 'http_user' und das Passwort 'qwe123' kodieren, erhalten Sie die folgende base64-kodierte Zeichenfolge: aHR0cF91c2VyOnF3ZTEyMw==. Zum Senden
HTTP-Anfrageheader zum Senden von SMS von Kotlin aus
Um die SMS-Nachrichten zu senden, müssen Sie die folgenden Zeilen als Header in die HTTP-Anfrage aufnehmen. Beachten Sie, dass wir einen Content-Type-Header und einen Authorization-Header einfügen.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
HTTP-Anfrage zum Senden von SMS von Kotlin aus
Um die SMS zu übermitteln, sendet Ihre Kotlin-Anwendung eine HTTP-Anfrage ähnlich der unten gezeigten. Beachten Sie, dass diese Anfrage einen HTTP-Header-Teil und einen HTTP-Body-Teil enthält. Der HTTP-Body ist eine JSON-kodierte Datenzeichenfolge. Sie enthält die Empfängernummer und den Text der Nachrichten.
POST /api?action=sendmsg HTTP/1.1 Connection: Keep-Alive Content-Length: 323 Content-Type: application/json; charset=utf-8 Accept-Encoding: gzip Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw== Host: 10.0.2.2:9509 User-Agent: okhttp/4.2.2 { "messages": [ { "message_id": "b686acf6-7420-4a3d-b444-779dcffc652b", "to_address": "+36201111111", "text": "Hallo Welt!", "create_date": "2021-06-17T09:48:30", "valid_until": "2021-06-24T09:48:30", "time_to_send": "-999999999-01-01T00:00", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": true } ] }
HTTP-Antwort, die vom Kotlin-SMS-Beispiel empfangen wurde
Sobald das SMS-Gateway diese Anfrage erhält, generiert es eine HTTP-Antwort. Die HTTP-Antwort enthält einen Statuscode, der anzeigt, ob die SMS-Sendeanfrage erfolgreich war oder nicht. Es wird auch eine JSON-kodierte Struktur zurückgegeben, die Ihnen nützliche Details über die Übermittlung der Nachricht liefert.
HTTP/1.1 200 OK User-Agent: OZEKI 10.3.120 (www.myozeki.com) Content-Type: application/json; charset=utf8 Last-Modified: Wed, 16 Jun 2021 09:06:03 GMT Server: 10/10.3.120 Transfer-Encoding: chunked { "http_code": 200, "response_code": "SUCCESS", "response_msg": "Messages queued for delivery.", "data": { "total_count": 1, "success_count": 1, "failed_count": 0, "messages": [ { "message_id": "b686acf6-7420-4a3d-b444-779dcffc652b", "from_station": "%", "to_address": "+36201111111", "to_station": "%", "text": "Hello world!", "create_date": "2021-06-17 09:48:30", "valid_until": "2021-06-24 09:48:30", "time_to_send": "2021-06-17 09:48:30", "submit_report_requested": true, "delivery_report_requested": true, "view_report_requested": false, "tags": [ { "name": "Type", "value": "SMS:TEXT" } ], "status": "SUCCESS" } ] } }
Wie man SMS von Kotlin aus mit der SMS-API und dem obigen Beispielprojekt sendet (Video-Tutorial)
Dieses Video zeigt Ihnen, wie Sie das SendSms.kt-Projekt herunterladen und verwenden. Sobald Sie das Beispielprojekt geöffnet haben, werden Sie möglicherweise bemerken, dass es ein Paket namens Ozeki.Libs.Rest gibt. Dies ist das Paket, das die MessageApi und alles, was Sie zum Senden einer SMS mit Kotlin benötigen, enthält.
Wie Sie überprüfen können, ob die SMS vom HTTP-Benutzer akzeptiert wurde
Nachdem die SMS übermittelt wurde, ist es eine gute Idee, Ihr SMS-Gateway zu überprüfen, um zu sehen, was es empfangen hat. Sie können das Protokoll einsehen, indem Sie die Details des HTTP-Benutzers aus der Ozeki SMS Gateway Management-Konsole öffnen. Am Ende des obigen Videos können Sie sehen, wie Sie überprüfen können, ob die Anfrage vom http_user empfangen wurde. (Abbildung 3)
Wie die Verwendung der App aussieht
In Abbildung 4 können Sie sehen, wie die App aussieht, nachdem Sie eine Nachricht damit gesendet haben. Wie Sie sehen, werden Ihre zuvor gesendeten Nachrichten als Protokoll unter dem 'Nachricht'-Textfeld gespeichert. Sie können alle Informationen über die Nachricht sehen, wie den Absender, den Text und das Ergebnis des Sendevorgangs.
Wie Sie überprüfen können, ob die SMS an das Mobilfunknetz gesendet wurde
Der letzte Schritt zur Überprüfung des Vorgangs besteht darin, die Protokolle der Mobilfunknetzverbindung zu überprüfen. Möglicherweise müssen Sie die Protokollierung in der Konfiguration der Verbindung aktivieren, bevor Sie die Nachricht senden, um die Protokolle zu sehen. Wenn die Protokollierung aktiviert ist, sehen Sie die Telefonnummer und den Text der Nachricht, die Sie gesendet haben.
Wie Sie Ozeki.Libs.Rest zu Ihrem eigenen Projekt hinzufügen
Die Ozeki.Libs.Rest-Bibliothek kann kostenlos heruntergeladen, verwendet und modifiziert werden.
Download: Ozeki.Libs.Rest.kt.zip (7.66Kb)
Wenn Sie sich entscheiden, Ihre Anwendung nur mit der Ozeki.Libs.Rest
-Bibliothek selbst zu erstellen, gibt es einige Dinge, die Sie in Ihrer Basis-Anwendung ändern sollten.
Um die Ozeki.Libs.Rest-Bibliothek zu verwenden, müssen Sie sie in den Java-Ordner
des Hauptverzeichnisses einfügen
Im folgenden Video zeige ich Ihnen, wie Sie die Ozeki.Libs.Rest
-Bibliothek herunterladen und zu Ihrem eigenen Projekt hinzufügen.
Abhängigkeiten
Es ist wichtig zu erwähnen, dass die Ozeki.Libs.Rest-Bibliothek einige Abhängigkeiten hat. Um sie zu verwenden, müssen Sie diese Abhängigkeiten in die Gradle Scripts aufnehmen.
implementation "com.squareup.okhttp3:okhttp:4.2.2" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
Die Abhängigkeiten hinzufügen (Video-Tutorial)
Im folgenden Video erfahren Sie, wie Sie die zuvor genannten Abhängigkeiten hinzufügen. Es beginnt mit dem Kopieren des Codes und führt Sie bis zu den erfolgreich hinzugefügten Abhängigkeiten. Das Video ist nur 53 Sekunden lang, enthält aber alle notwendigen Schritte, um den Prozess abzuschließen. Sie können diesem Tutorial mühelos folgen.
Internetzugang
Damit Ihre Anwendung eine HTTP-Anfrage senden kann, müssen Sie ihr den Zugriff auf das Internet ermöglichen.
Im folgenden Video zeige ich Ihnen, wie Sie den Internetzugang für Ihre Kotlin-Anwendung aktivieren.
<uses-permission android:name="android.permission.INTERNET" />
android:usesCleartextTraffic="true"
Wie Sie die Internetverbindung für Ihre App aktivieren (Video-Tutorial)
Sie müssen beide dieser Zeilen zur AndroidManifest.xml-Datei hinzufügen.
Im folgenden Video zeige ich Ihnen, wo Sie die oben genannten Codes einfügen sollten.
Das Video beginnt mit dem Kopieren des Codes und führt Sie bis zur erfolgreich hinzugefügten Internetverbindung.
Dieses Video ist detailliert und leicht zu verfolgen.
Fazit
Der Zweck dieser Anleitung war es, Ihnen zu zeigen, wie Sie SMS-Nachrichten aus Kotlin mit der HTTP-SMS-API des Ozeki SMS Gateways senden können. Das hier erworbene Wissen ermöglicht es Ihnen, mit Ihren Kunden über einen einfachen Kotlin-Code in Kontakt zu bleiben. Internationales Messaging ist mit dem Ozeki SMS Gateway ebenfalls möglich, da es in jedem Land funktioniert und SMS über verschiedene Mobilfunkverbindungen senden und empfangen kann.
Stellen Sie sicher, dass Sie hier weiterlernen, besuchen Sie andere Tutorial-Seiten auf der Ozeki-Website für weitere Informationen. Sehen Sie sich weitere Anleitungen zur Verwendung von Kotlin an, beginnen Sie mit der Wie Sie mehrere SMS aus Kotlin senden.
Jetzt ist Ihr erster Schritt, das Ozeki SMS Gateway herunterzuladen und zu nutzen!
More information