Kako prejeti SMS v Kotlinu
Najenostavnejši način za pošiljanje SMS-ov iz Kotlina je uporaba vgrajenega HTTP/Rest SMS API-ja Ozeki SMS Gateway. Ko uporabljate ta API, boste pošiljali SMS sporočila z izdajo HTTP Post zahteve proti SMS prehodu. HTTP Post zahteva bo vsebovala sporočilo v json formatu. SMS prehod bo poslal ta SMS prejemniku in vrnil HTTP 200 OK odgovor na vašo zahtevo. (Slika 1)
Spodnji Kotlin SMS primer kode prikazuje, kako lahko prejmete SMS sporočilo(a) z uporabo http rest sms api Ozeki SMS Gateway z uporabo knjižnice Kotlin Ozeki.Libs.Rest. Ta knjižnica vam je na voljo brezplačno in jo lahko uporabljate in spreminjate v katerem koli od vaših 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="Prenesi prihajajoče" 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="Sporočila" 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>
Kako uporabiti Kotlin SMS primer:
Uporabite lahko razred MessageApi za prejemanje SMS sporočil(a) iz SMS prehoda. Vaša zahteva iz vaše naprave bo posredovana do SMS prehoda prek interneta.
Prenesi ReceiveSms.kt
Izvorna koda, razložena v tem članku, je na voljo za brezplačen prenos, uporabo in spreminjanje.
Prenos: ReceiveSms.kt.zip (148Kb)
Datoteka ReceiveSms.kt.zip vsebuje primer projekta, ki vključuje knjižnico Ozeki.Libs.Rest. S to knjižnico lahko pošiljate, brišete, označujete in prejemate sms sporočila z ustvarjanjem MessageApi in uporabo metod Send(), Delete(), Mark() in Receive(). (Slika 2)
Za prejemanje SMS-ov s Kotlinom:
- Namestite Ozeki SMS Gateway
- Povežite Ozeki SMS Gateway z mobilnim omrežjem
- Pošljite testni SMS iz Ozeki GUI
- Ustvarite uporabnika HTTP sms api
- Android Studio
- Prenesite zgornji primer projekta
- Ustvarite api za prenos vaših prihajajočih sporočil
- Uporabite metodo DownloadIncoming() za prejem vaših sporočil
- Preberite odzivno sporočilo na konzoli
- Preverite dnevnike v SMS prehodu
Namestite Ozeki SMS Gateway in ustvarite uporabnika HTTP API
Da lahko prejemate SMS s Kotlinom, morate najprej namestiti Ozeki SMS Gateway. SMS gateway lahko namestite na isti računalnik, kjer razvijate svojo kodo Kotlin v Android Studiu. Po namestitvi je naslednji korak povezovanje Ozeki SMS Gateway z mobilnim omrežjem. Lahko pošljete testno SMS sporočilo iz Ozeki GUI, da preverite, ali vaša mobilna omrežna povezava deluje. Zadnji korak pri pripravi okolja je ustvarjanje uporabniškega računa HTTP SMS API. Ustvarite uporabnika z uporabniškim imenom "http_user" in geslom "qwe123", da bo primer deloval brez sprememb.
Ko je okolje pripravljeno, lahko zaženete svojo kodo Kotlin.
URL HTTP API za pošiljanje SMS s Kotlinom
Za prejemanje SMS s Kotlinom mora vaša koda Kotlin poslati HTTP zahtevo do SMS gatewaya. API URL je prikazan spodaj. Upoštevajte, da je treba IP naslov (127.0.0.1) zamenjati z IP naslovom vašega SMS gatewaya. Če je Ozeki SMS Gateway nameščen na istem računalniku, kjer teče vaša JavaScript SMS aplikacija, je to lahko 127.0.0.1. Če je nameščen na drugem računalniku, mora biti to IP naslov tega računalnika.
http://127.0.0.1:9509/api?action=rest
HTTP avtentikacija za prejemanje SMS s Kotlinom
Za avtentikacijo SMS odjemalca Kotlin morate poslati uporabniško ime in geslo v base64 kodiranem nizu do strežnika v HTTP zahtevi. Uporabljen format je: base64(uporabniško_ime+":"+geslo). V Kotlinu lahko za to kodiranje uporabite naslednjo kodo:
var usernamePassword = "%s:%s".format(username, password) return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
Na primer, če kodirate uporabniško ime 'http_user' in geslo 'qwe123', boste prejeli naslednji base64 kodiran niz: aHR0cF91c2VyOnF3ZTEyMw==. Za pošiljanje
Glava HTTP zahteve za pošiljanje SMS s Kotlinom
Za prejemanje SMS sporočil(a) morate vključiti naslednje vrstice kot glave v HTTP zahtevo. Upoštevajte, da vključujemo tip vsebine in glavo za avtorizacijo.
Content-Type: application/json Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
HTTP zahteva za prejemanje SMS s Kotlinom
Za prejemanje prihajajočih SMS sporočil bo vaša aplikacija Kotlin poslala HTTP zahtevo, podobno spodnji. Upoštevajte, da ta zahteva vsebuje del glave HTTP in del telesa HTTP. Telo HTTP je niz podatkov, kodiran v JSON. Vsebuje prejemnikovo številko in besedilo sporočila.
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 odziv, ki ga prejme primer SMS v Kotlinu
Ko SMS gateway prejme to zahtevo, bo ustvaril HTTP odziv. HTTP odziv bo vseboval statusno kodo, ki označuje, ali je bila zahteva za oddajo SMS uspešna ali ne. Prav tako bo vrnil strukturo, kodirano v JSON, ki vam bo zagotovila koristne podrobnosti o oddaji sporočila.
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" } ] } ] } }
Kako prejemati SMS sporočila s Kotlinom z uporabo SMS API-ja in zgornjega primernega projekta (Video vadnica)
Ta video vam pokaže, kako prenesti in uporabiti projekt ReceiveSms.kt. Ko odprete primer projekta, boste morda opazili, da obstaja paket z imenom Ozeki.Libs.Rest. To je paket, ki vsebuje MessageApi in vse, kar potrebujete za prejemanje SMS sporočil s Kotlinom.
More information