Ako prijímať SMS v Kotline

Najjednoduchší spôsob, ako odosielať SMS z Kotlinu, je použiť vstavanú HTTP/Rest SMS API Ozeki SMS Gateway. Keď použijete toto API, budete odosielať SMS správy vytvorením HTTP POST požiadavky na SMS bránu. HTTP POST požiadavka bude obsahovať správu vo formáte JSON. SMS brána následne odošle túto SMS na cieľové telefónne číslo a vráti HTTP 200 OK odpoveď na vašu požiadavku. (Obrázok 1)

ako prijímať sms v kotline
Obrázok 1 - Ako prijímať SMS v Kotline

Kotlin kód na prijímanie SMS do mobilného zariadenia

Ukážkový kód Kotlin pre SMS nižšie demonštruje, ako môžete prijímať SMS správy pomocou HTTP REST SMS API Ozeki SMS Gateway s použitím knižnice Kotlin Ozeki.Libs.Rest. Táto knižnica je poskytovaná bezplatne a môžete ju používať a upravovať v akomkoľvek z vašich projektov.

Video 1 - Ako stiahnuť príklad ReceiveSms.kt.zip (Video návod)

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="Stiahnuť prichádzajúce"
        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="Sprá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>
	

Ako používať Kotlin SMS príklad:

Môžete použiť triedu MessageApi na prijímanie SMS správ z SMS brány. Vaša požiadavka z vášho zariadenia bude presmerovaná na SMS bránu cez internet.

Stiahnuť ReceiveSms.kt

Zdrojový kód vysvetlený v tomto článku je možné stiahnuť, používať a upravovať bezplatne.
Stiahnuť: ReceiveSms.kt.zip (148Kb)

Čo obsahuje súbor ReceiveSms.kt.zip?

Súbor ReceiveSms.kt.zip obsahuje príkladový projekt, ktorý má v sebe knižnicu Ozeki.Libs.Rest. S touto knižnicou môžete odosielať, mazať, označovať a prijímať SMS správy vytvorením MessageApi a použitím metód Send(), Delete(), Mark() a Receive(). (Obrázok 2)

príkladový projekt na prijímanie sms pomocou kotlinu
Obrázok 2 - Adresár ReceiveSms.kt

Ako prijímať SMS s Kotlinom (Rýchle kroky)

Na prijímanie SMS s Kotlinom:

  1. Nainštalujte Ozeki SMS Gateway
  2. Pripojte Ozeki SMS Gateway k mobilnej sieti
  3. Odošlite testovaciu SMS z Ozeki GUI
  4. Vytvorte HTTP SMS API používateľa
  5. Android Studio
  6. Stiahnite si vyššie uvedený príkladový projekt
  7. Vytvorte API na stiahnutie vašich prichádzajúcich správ
  8. Použite metódu DownloadIncoming() na prijímanie vašich správ
  9. Prečítajte si odpoveď na konzole
  10. Skontrolujte záznamy v SMS bráne

Inštalácia Ozeki SMS Gateway a vytvorenie HTTP API používateľa

Ak chcete prijímať SMS pomocou Kotlin, musíte najprv nainštalovať Ozeki SMS Gateway. SMS bránu je možné nainštalovať na rovnaký počítač, kde vyvíjate svoj Kotlin kód v Android Studio. Po inštalácii je ďalším krokom pripojenie Ozeki SMS Gateway k mobilnej sieti. Môžete odoslať testovaciu SMS z Ozeki GUI, aby ste overili, že vaše pripojenie k mobilnej si funguje. Posledným krokom pri príprave vášho prostredia je vytvorenie používateľského účtu HTTP SMS API. Vytvorte používateľa s používateľským menom "http_user" a heslom "qwe123", aby príklad fungoval bez úprav.

Po nastavení prostredia môžete spustiť svoj Kotlin kód.

URL HTTP API na odosielanie SMS z Kotlin

Na prijímanie SMS pomocou Kotlin musí váš Kotlin kód odoslať HTTP požiadavku na SMS bránu. API URL je uvedené nižšie. Upozorňujeme, že IP adresa (127.0.0.1) by mala byť nahradená IP adresou vašej SMS brány. Ak je Ozeki SMS Gateway nainštalovaný na rovnakom počítači, kde beží JavaScriptová SMS aplikácia, môže to byť 127.0.0.1. Ak je nainštalovaný na inom počítači, mala by to byť IP adresa toho počítača.

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

HTTP autentifikácia na prijímanie SMS s Kotlin

Na autentifikáciu Kotlin SMS klienta musíte odoslať používateľské meno a heslo v reťazci zakódovanom do base64 na server v HTTP požiadavke. Používa sa formát: base64(používateľské meno+":"+heslo). V Kotlin môžete na toto kódovanie použiť nasledujúci kód:

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

Napríklad, ak zakódujete používateľské meno 'http_user' a heslo 'qwe123', dostanete nasledujúci reťazec zakódovaný do base64: aHR0cF91c2VyOnF3ZTEyMw==. Na odoslanie

Hlavička HTTP požiadavky na odosielanie SMS z Kotlin

Na prijatie SMS správy(y) musíte do HTTP požiadavky zahrnúť nasledujúce riadky ako hlavičky. Upozorňujeme, že zaraďujeme hlavičku typu obsahu a autorizačnú hlavičku.

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

HTTP požiadavka na prijímanie SMS s Kotlin

Na prijatie prichádzajúcej SMS správy(y) bude vaša Kotlin aplikácia odosielať HTTP požiadavku podobnú nižšie uvedenej. Upozorňujeme, že táto požiadavka obsahuje časť hlavičky HTTP a časť tela HTTP. Telo HTTP je reťazec dát zakódovaný do JSON. Obsahuje číslo príjemcu a text sprá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 odpoveď prijatá Kotlin SMS príkladom

Keď SMS brána prijme túto požiadavku, vygeneruje HTTP odpoveď. HTTP odpoveď bude obsahovať stavový kód, ktorý indikuje, či bola žiadosť o odoslanie SMS úspešná alebo nie. Tiež vráti štruktúru zakódovanú do JSON, ktorá vám poskytne užitočné informácie o odoslaní sprá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"
	        }
	      ]
	    }
	  ]
	}
}
	

Ako prijímať SMS správy pomocou Kotlinu pomocou SMS API a vyššie uvedeného príkladu projektu (Video tutoriál)

Toto video vám ukáže, ako stiahnuť a použiť projekt ReceiveSms.kt. Keď otvoríte príklad projektu, môžete si všimnúť, že existuje balík s názvom Ozeki.Libs.Rest. Tento balík obsahuje MessageApi a všetko, čo potrebujete na prijímanie SMS správ pomocou Kotlinu.

Video 2 - Ako prijímať SMS správy pomocou vyššie uvedeného kódu v Kotline (Video tutoriál)

Ako skontrolovať, či bola požiadavka prijatá HTTP používateľom

Po odoslaní SMS je dobré skontrolovať svoju SMS bránu, aby ste videli, čo prijala. Protokol môžete skontrolovať otvorením podrobností HTTP používateľa v konzole na správu Ozeki SMS Gateway. Na konci vyššie uvedeného videa môžete vidieť, ako skontrolovať, či bola požiadavka prijatá http_user. (Obrázok 3)

kotlin projekt na prijímanie sms správ
Obrázok 3 - Projekt ReceiveSms.kt v Android Studiu

Ako vyzerá používanie aplikácie na telefóne (video tutoriál)

Na obrázku 4 môžete vidieť, ako vyzerá používanie aplikácie na telefóne. Ako vidíte na obrázku Pred, štandardne nemáte žiadne prichádzajúce správy. Stlačte 'Stiahnuť prichádzajúce', aby ste získali správy, ktoré vám boli odoslané. Na obrázku Po môžete vidieť, že všetky informácie o správe sú viditeľné po jej stiahnutí.

príkladová kotlinová aplikácia na prijímanie sms správ

Obrázok 4 - Príkladová aplikácia ReceiveSms pred a po stiahnutí správ

Ako pridať Ozeki.Libs.Rest do vlastného projektu

Knižnicu Ozeki.Libs.Rest môžete stiahnuť, používať a upravovať bezplatne.
Stiahnuť: Ozeki.Libs.Rest.kt.zip (7.66Kb)

Ak sa rozhodnete vytvoriť svoju aplikáciu sami len s knižnicou Ozeki.Libs.Rest, mali by ste v základnej aplikácii zmeniť niekoľko vecí. Aby ste mohli použiť knižnicu Ozeki.Libs.Rest, musíte ju umiestniť do priečinka java v hlavnom adresári.
V nasledujúcom videu vám ukážem, ako stiahnuť a pridať knižnicu Ozeki.Libs.Rest do vlastného projektu.

Video 3 - Ako pridať knižnicu Ozeki.Libs.Rest do vlastnej aplikácie (Video tutoriál)

Závislosti

Je dôležité spomenúť, že knižnica Ozeki.Libs.Rest má niektoré závislosti. Aby ste ju mohli používať, musíte tieto závislosti pridať 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 - Zoznam závislostí, ktoré musíte zahrnúť.

Pridanie závislostí (Video tutoriál)

V nasledujúcom videu uvidíte, ako pripojiť vyššie uvedené závislosti. Začína sa kopírovaním kódu a prevedie vás k úspešne pridaným závislostiam. Video je dlhé len 53 sekúnd, ale obsahuje všetky potrebné kroky na dokončenie metódy. Tento tutoriál môžete sledovať bez námahy.

Video 4 - Ako pridať potrebné závislosti (Video tutoriál)

Prístup k internetu

Aby vaša aplikácia mohla odosielať HTTP požiadavky, musíte jej povoliť pripojenie k internetu.
V nasledujúcom videu vám ukážem, ako povoliť prístup k internetu pre vašu Kotlinovú aplikáciu.

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

Kód 2 - Povolenie prístupu k internetu pre vašu Kotlinovú aplikáciu.

android:usesCleartextTraffic="true"
	

Kód 3 - Umožnenie odosielania HTTP požiadaviek

Ako pridať internetové pripojenie do projektu (Video tutoriál)

Musíte pridať oba tieto riadky do súboru AndroidManifest.xml.
V ďalšom videu vám ukážem, kam by ste mali vložiť vyššie uvedené kódy. Video začína kopírovaním kódu a prevedie vás k úspešne pridanému internetovému pripojeniu. Toto video je presné a ľahko sa sleduje.

Video 5 - Ako povoliť prístup k internetu pre vašu aplikáciu (Video tutoriál)

Záver

Tento sprievodca bol napísaný, aby ukázal kroky prijímania SMS v Kotline pomocou HTTP používateľa Ozeki SMS Gateway. Toto riešenie vám pomáha zbierať správy, ktoré prijmete v priečinku Doručená pošta, a presunúť ich do vášho programu Kotlin. Použitím tohto riešenia získate možnosť udržiavať váš systém správ organizovaný podľa vášho plánu.

Toto je len začiatok, viac informácií o správe vašich správ nájdete na webovej stránke Ozeki. Ak chcete zostať efektívny a aktuálny, triedite správy, prečítajte si ďalší článok o Ako vymazať SMS v Kotline.

Poďme do práce, nastavte si Ozeki SMS Gateway hneď teraz!

More information