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)
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.
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() } } }
<?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)
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)
Na prijímanie SMS s Kotlinom:
- Nainštalujte Ozeki SMS Gateway
- Pripojte Ozeki SMS Gateway k mobilnej sieti
- Odošlite testovaciu SMS z Ozeki GUI
- Vytvorte HTTP SMS API používateľa
- Android Studio
- Stiahnite si vyššie uvedený príkladový projekt
- Vytvorte API na stiahnutie vašich prichádzajúcich správ
- Použite metódu DownloadIncoming() na prijímanie vašich správ
- Prečítajte si odpoveď na konzole
- 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.
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)
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í.
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.
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'
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.
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" />
android:usesCleartextTraffic="true"
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.
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
- Kotlin send SMS with the HTTP rest API (code sample)
- Kotlin send multiple SMS with the HTTP rest API (code sample)
- Kotlin schedule SMS with the HTTP rest API (code sample)
- Kotlin receive SMS with the HTTP rest API (code sample)
- Kotlin delete SMS with the HTTP rest API (code sample)
- Github: Kotlin SMS API