Jak přijímat SMS v Kotlinu

Nejjednodušší způsob, jak odesílat SMS z Kotlinu, je použít vestavěnou HTTP/Rest SMS API Ozeki SMS Gateway. Při použití tohoto API budete odesílat SMS zprávy vytvořením HTTP Post požadavku na SMS bránu. HTTP Post požadavek bude obsahovat zprávu ve formátu JSON. SMS brána odešle tuto SMS na cílový telefon a vrátí HTTP 200 OK odpověď na váš požadavek. (Obrázek 1)

jak přijímat sms v kotlinu
Obrázek 1 - Jak přijímat SMS v Kotlinu

Kotlin kód pro přijímání SMS do mobilu

Níže uvedený ukázkový kód Kotlin pro SMS demonstruje, jak můžete přijímat SMS zprávy pomocí HTTP REST SMS API Ozeki SMS Gateway s využitím knihovny Kotlin Ozeki.Libs.Rest. Tato knihovna je poskytována zdarma a můžete ji používat a upravovat v jakémkoli z vašich projektů.

Video 1 - Jak stáhnout příklad ReceiveSms.kt.zip (Návod ve videu)

MainActivity.kt
package receive.sms

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import Ozeki.Libs.Rest.*
import android.widget.ArrayAdapter
import kotlinx.coroutines.*

class MainActivity : AppCompatActivity() {
    @DelicateCoroutinesApi
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val listMessages:android.widget.ListView = findViewById(R.id.listMessages)
        val btnSendRequest:android.widget.Button = findViewById(R.id.btnSendRequest)

        val configuration = Configuration(
            username = "http_user",
            password = "qwe123",
            apiurl = "http://10.0.2.2:9509/api"
        )

        val messages_label : ArrayList<Message> = arrayListOf()

        val arrayAdapter = ArrayAdapter<Message>(this, android.R.layout.simple_list_item_1, messages_label)

        listMessages.adapter = arrayAdapter

        val api = MessageApi(configuration)

        btnSendRequest.setOnClickListener {
            GlobalScope.launch(Dispatchers.IO) {
                val result = api.DownloadIncomming()
                val messages = result.Messages
                for (index in 0 until messages.size) {
                    messages_label.add(messages.get(index))
                }
            }
            arrayAdapter.notifyDataSetChanged()
        }
    }
}
	
main_activity.xml
<?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=".MainActivity">

    <Button
        android:id="@+id/btnSendRequest"
        android:layout_width="320dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:backgroundTint="#FF3F3F"
        android:text="Stáhnout příchozí"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.505"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/listMessages" />

    <TextView
        android:id="@+id/textMessages"
        android:layout_width="320dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="24dp"
        android:text="Zprávy"
        android:textAlignment="center"
        android:textSize="22sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.505"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ListView
        android:id="@+id/listMessages"
        android:layout_width="320dp"
        android:layout_height="500dp"
        android:layout_marginTop="24dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textMessages" />
</androidx.constraintlayout.widget.ConstraintLayout>
	

Jak používat příklad Kotlin pro SMS:

Můžete použít třídu MessageApi k přijímání SMS zpráv z SMS brány. Váš požadavek z vašeho zařízení bude přes internet předán na SMS bránu.

Stáhnout ReceiveSms.kt

Zdrojový kód vysvětlený v tomto článku lze stáhnout, používat a upravovat zdarma.
Stáhnout: ReceiveSms.kt.zip (148Kb)

Co obsahuje soubor ReceiveSms.kt.zip?

Soubor ReceiveSms.kt.zip obsahuje příklad projektu, který má knihovnu Ozeki.Libs.Rest. S touto knihovnou můžete odesílat, mazat, označovat a přijímat SMS zprávy vytvořením MessageApi a použitím metod Send(), Delete(), Mark() a Receive(). (Obrázek 2)

příklad projektu pro přijímání sms pomocí kotlinu
Obrázek 2 - Adresář ReceiveSms.kt

Jak přijímat SMS s Kotlinem (Rychlé kroky)

Pro přijímání SMS s Kotlinem:

  1. Nainstalujte Ozeki SMS Gateway
  2. Připojte Ozeki SMS Gateway k mobilní síti
  3. Odešlete testovací SMS z Ozeki GUI
  4. Vytvořte HTTP SMS API uživatele
  5. Android Studio
  6. Stáhněte výše uvedený příklad projektu
  7. Vytvořte API pro stahování příchozích zpráv
  8. Použijte metodu DownloadIncoming() pro přijímání zpráv
  9. Přečtěte si odpověď na konzoli
  10. Zkontrolujte logy v SMS bráně

Nainstalujte Ozeki SMS Gateway a vytvořte uživatele HTTP API

Abyste mohli přijímat SMS pomocí Kotlinu, musíte nejprve nainstalovat Ozeki SMS Gateway. SMS bránu lze nainstalovat na stejný počítač, kde vyvíjíte svůj Kotlin kód v Android Studiu. Po instalaci je dalším krokem připojení Ozeki SMS Gateway k mobilní síti. Můžete odeslat testovací SMS z Ozeki GUI, abyste ověřili, že vaše připojení k mobilní síti funguje. Posledním krokem k přípravě vašeho prostředí je vytvoření uživatele HTTP SMS API. Vytvořte uživatele s uživatelským jménem "http_user" a heslem "qwe123", aby příklad fungoval bez úprav.

Po nastavení prostředí můžete spustit svůj Kotlin kód.

URL HTTP API pro odesílání SMS z Kotlinu

Pro přijímání SMS pomocí Kotlinu musí váš Kotlin kód odeslat HTTP požadavek na SMS bránu. API URL je uvedeno níže. Poznámka: IP adresa (127.0.0.1) by měla být nahrazena IP adresou vaší SMS brány. Pokud je Ozeki SMS Gateway nainstalována na stejném počítači, kde běží JavaScriptová SMS aplikace, může to být 127.0.0.1. Pokud je nainstalována na jiném počítači, měla by to být IP adresa toho počítače.

http://127.0.0.1:9509/api?action=rest
	

HTTP autentizace pro přijímání SMS s Kotlinem

Pro ověření Kotlin SMS klienta musíte odeslat uživatelské jméno a heslo v base64 kódovaném řetězci na server v HTTP požadavku. Použitý formát je: base64(username+":"+password). V Kotlinu můžete pro toto kódování použít následující kód:

var usernamePassword = "%s:%s".format(username, password)
return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
	

Například, pokud zakódujete uživatelské jméno 'http_user' a heslo 'qwe123', získáte následující base64 kódovaný řetězec: aHR0cF91c2VyOnF3ZTEyMw==. Pro odeslání

Hlavička HTTP požadavku pro odesílání SMS z Kotlinu

Pro přijetí SMS zprávy(y) musíte do HTTP požadavku zahrnout následující řádky jako hlavičky. Poznámka: Zahrnujeme hlavičku Content-Type a Authorization.

Content-Type: application/json
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
	

HTTP požadavek pro přijímání SMS s Kotlinem

Pro přijetí příchozí SMS zprávy(y) bude vaše Kotlin aplikace odesílat HTTP požadavek podobný tomu níže. Poznámka: Tento požadavek obsahuje část HTTP hlavičky a část HTTP těla. HTTP tělo je JSON kódovaný datový řetězec. Obsahuje číslo příjemce a text zprávy.

GET /api?action=receivemsg&folder=inbox HTTP/1.1
Connection: Keep-Alive
Accept-Encoding: gzip
Authorization: Basic aHR0cF91c2VyOnF3ZTEyMw==
Host: 10.0.2.2:9509
User-Agent: okhttp/4.2.2
	

HTTP odpověď přijatá Kotlin SMS příkladem

Jakmile SMS brána obdrží tento požadavek, vygeneruje HTTP odpověď. HTTP odpověď bude obsahovat stavový kód, který indikuje, zda byl požadavek na odeslání SMS úspěšný nebo ne. Také vrátí JSON kódovanou strukturu, která vám poskytne užitečné detaily o odeslání zprávy.

HTTP/1.1 200 OK
User-Agent: OZEKI 10.3.120 (www.myozeki.com)
Content-Type: application/json; charset=utf8
Last-Modified: Thu, 17 Jun 2021 16:10:48 GMT
Server: 10/10.3.120
Transfer-Encoding: chunked

{
	"http_code": 200,
	"response_code": "SUCCESS",
	"response_msg": "",
	"data": {
	  "folder": "inbox",
	  "limit": "1000",
	  "data": [
	    {
	      "message_id": "ada7ee44-aefc-e746-9376-b76e3674442a",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36203333333",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 3",
	      "create_date": "2021-06-17 16:09:11",
	      "valid_until": "2021-06-24 16:09:11",
	      "time_to_send": "2021-06-17 16:09:11",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "fccc6211-c710-c80e-a28f-664ff8b0e964",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36201111111",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 1",
	      "create_date": "2021-06-17 16:09:11",
	      "valid_until": "2021-06-24 16:09:11",
	      "time_to_send": "2021-06-17 16:09:11",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    },
	    {
	      "message_id": "ba782a64-05cd-8ba8-9f4c-e8597ca30b59",
	      "from_connection": "http_user@localhost",
	      "from_address": "+36202222222",
	      "from_station": "%",
	      "to_connection": "http_user@localhost",
	      "to_address": "http_user",
	      "to_station": "%",
	      "text": "Hello world 2",
	      "create_date": "2021-06-17 16:09:11",
	      "valid_until": "2021-06-24 16:09:11",
	      "time_to_send": "2021-06-17 16:09:11",
	      "submit_report_requested": true,
	      "delivery_report_requested": true,
	      "view_report_requested": true,
	      "tags": [
	        {
	          "name": "Type",
	          "value": "SMS:TEXT"
	        }
	      ]
	    }
	  ]
	}
}
	
Jak přijímat SMS zprávy v Kotlinu pomocí SMS API a výše uvedeného příkladu projektu (Video návod)

Toto video vám ukáže, jak stáhnout a použít projekt ReceiveSms.kt. Jakmile otevřete příklad projektu, můžete si všimnout, že tam je balíček s názvem Ozeki.Libs.Rest. Tento balíček obsahuje MessageApi a vše, co potřebujete k přijímání SMS zpráv pomocí Kotlinu.

Video 2 - Jak přijímat SMS zprávy s výše uvedeným kódem v Kotlinu (Video návod)

Jak ověřit, že požadavek byl přijat HTTP uživatelem

Po odeslání SMS je dobré zkontrolovat vaši SMS bránu, abyste viděli, co přijala. Protokol můžete zkontrolovat otevřením detailů HTTP uživatele z konzole pro správu Ozeki SMS Gateway. Na konci výše uvedeného videa uvidíte, jak zkontrolovat, zda byl požadavek přijat http_user. (Obrázek 3)

kotlin projekt pro přijímání sms zpráv
Obrázek 3 - Projekt ReceiveSms.kt v Android Studiu

Jak vypadá použití aplikace na telefonu (video návod)

Na obrázku 4 můžete vidět, jak vypadá použití aplikace na telefonu. Jak vidíte na obrázku Před, ve výchozím stavu nemáte žádné příchozí zprávy. Stiskněte tlačítko 'Stáhnout příchozí' pro získání zpráv zaslaných pro vás. Na obrázku Po vidíte, že všechny informace o zprávě jsou viditelné po jejím stažení.

příklad kotlin aplikace pro přijímání sms zpráv

Obrázek 4 - Příklad aplikace ReceiveSms před a po stažení zpráv

Jak přidat Ozeki.Libs.Rest do vlastního projektu

Knihovnu Ozeki.Libs.Rest lze stáhnout, používat a upravovat zdarma.
Stáhnout: Ozeki.Libs.Rest.kt.zip (7.66Kb)

Pokud se rozhodnete vytvořit svou aplikaci sami pouze s knihovnou Ozeki.Libs.Rest, musíte ve své základní aplikaci změnit několik věcí. Pro použití knihovny Ozeki.Libs.Rest ji musíte umístit do složky java hlavního adresáře
V následujícím videu vám ukážu, jak stáhnout a přidat knihovnu Ozeki.Libs.Rest do vašeho vlastního projektu.

Video 3 - Jak přidat knihovnu Ozeki.Libs.Rest do vaší vlastní aplikace (Video návod)

Závislosti

Je důležité zmínit, že knihovna Ozeki.Libs.Rest má některé závislosti. Pro její použití musíte tyto závislosti přidat do Gradle Scripts.

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'
	

Kód 1 - Seznam závislostí, které je třeba zahrnout.

Přidání závislostí (Video návod)

V následujícím videu uvidíte, jak připojit výše zmíněné závislosti. Začne kopírováním kódu a dovede vás k úspěšně přidaným závislostem. Video je dlouhé pouze 53 sekund, ale obsahuje všechny potřebné kroky k dokončení metody. Tento návod můžete snadno sledovat.

Video 4 - Jak přidat potřebné závislosti (Video návod)

Přístup k internetu

Aby vaše aplikace mohla odesílat HTTP požadavky, musíte jí umožnit připojení k internetu.
V následujícím videu vám ukážu, jak povolit přístup k internetu pro vaši Kotlin aplikaci.

<uses-permission android:name="android.permission.INTERNET" />
	

Kód 2 - Pro povolení přístupu k internetu pro vaši Kotlin aplikaci.

android:usesCleartextTraffic="true"
	

Kód 3 - Pro umožnění odesílání HTTP požadavků

Jak přidat internetové připojení do vašeho projektu (Video návod)

Musíte přidat oba tyto řádky do souboru AndroidManifest.xml.
V dalším videu vám ukážu, kam byste měli vložit výše uvedené kódy. Video začne kopírováním kódu a dovede vás k úspěšně přidanému internetovému připojení. Toto video je přesné a snadno sledovatelné.

Video 5 - Jak povolit přístup k internetu pro vaši aplikaci (Video návod)

Závěr

Tento průvodce byl napsán, aby ukázal kroky pro příjem SMS v Kotlinu pomocí HTTP uživatele Ozeki SMS Gateway. Toto řešení vám pomáhá shromažďovat zprávy, které přijmete ve složce Doručená pošta, a přesouvat je do vašeho programu v Kotlinu. Použitím tohoto řešení získáte možnost udržovat váš systém zasílání zpráv organizovaný podle vašich představ.

Toto je jen začátek, více o správě vašich zpráv se dozvíte na webových stránkách Ozeki. Abyste zůstali efektivní a aktuální, tříděte zprávy a přečtěte si další článek o Jak smazat SMS v Kotlinu.

Dejte se do práce a nastavte si Ozeki SMS Gateway ještě dnes!

More information