Cea mai simplă metodă de a trimite SMS din Kotlin este să folosești API-ul HTTP/Rest SMS încorporat
al Ozeki SMS Gateway. Când folosești acest API, vei trimite mesaje SMS prin
emiterea unei cereri HTTP Post către gateway-ul SMS. Cererea HTTP Post va
conține un mesaj formatat în format json. Gateway-ul SMS va
trimite acest SMS către telefonul destinatarului și va returna un răspuns HTTP 200 OK
la cererea ta. (Figura 1)
Figura 1 - Cum să programezi un SMS în Kotlin
Exemplul de cod Kotlin pentru SMS de mai jos demonstrează cum puteți trimite un SMS programat folosind
API-ul REST HTTP pentru SMS al Ozeki SMS Gateway, utilizând biblioteca Kotlin Ozeki.Libs.Rest.
Această bibliotecă vă este oferită gratuit și o puteți utiliza și modifica
în oricare dintre proiectele dumneavoastră.
MainActivity.kt
package send.scheduledsms
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import Ozeki.Libs.Rest.Configuration
import Ozeki.Libs.Rest.MessageApi
import Ozeki.Libs.Rest.Message
import android.text.method.ScrollingMovementMethod
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val inputToAddress:android.widget.EditText = findViewById(R.id.inputToAddress)
val inputMessage:android.widget.EditText = findViewById(R.id.inputMessage)
val date:android.widget.EditText = findViewById(R.id.inputTimeToSendDate)
val time:android.widget.EditText = findViewById(R.id.inputTimeToSendTime)
val btnSendRequest:android.widget.Button = findViewById(R.id.btnSendRequest)
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() != ""
&& date.text.toString() != "" && time.text.toString() != "") {
val datetime = String.format("%s %s", date.text.toString(), time.text.toString())
val msg = Message()
msg.ToAddress = inputToAddress.text.toString()
msg.Text = inputMessage.text.toString()
msg.TimeToSend = datetime
GlobalScope.launch(Dispatchers.IO) {
val response = api.Send(msg)
logBox.text = String.format("%s\n%s", logBox.text, response.toString())
}
inputToAddress.text.clear()
inputMessage.text.clear()
date.text.clear()
time.text.clear()
}
}
}
}
Puteți utiliza clasa Message pentru a crea
SMS-ul și puteți utiliza clasa MessageApi pentru a trimite SMS-ul programat către gateway-ul SMS.
Gateway-ul SMS vă va transmite mesajul către rețeaua mobilă fie printr-o conexiune wireless
fie prin Internet.
Descarcă SendScheduledSms.kt
Codul sursă explicat în acest articol poate fi descărcat, utilizat și modificat gratuit. Descarcă:SendScheduledSms.kt.zip (149Kb)
Ce conține fișierul SendScheduledSms.kt.zip?
Fișierul SendScheduledSms.kt.zip conține un proiect exemplu, care include
biblioteca Ozeki.Libs.Rest. Cu această bibliotecă poți trimite, șterge,
marca și primi mesaje SMS prin crearea unui MessageApi și utilizarea metodelor Send(),
Delete(), Mark() și Receive(). (Figura 2)
Figura 2 - Directorul SendScheduledSms.kt
Cum să trimiți un SMS programat din Kotlin (Pași rapizi)
Pentru a trimite un SMS programat din Kotlin:
Instalează Ozeki SMS Gateway
Conectează Ozeki SMS Gateway la rețeaua mobilă
Trimite un SMS de test din interfața Ozeki
Creează un utilizator API HTTP pentru SMS
Android Studio
Descarcă proiectul exemplu de mai sus
Creează SMS-ul prin crearea unui nou obiect Message
Creează un API pentru a trimite mesajul tău programat
Folosește metoda Send pentru a trimite mesajul tău programat
Citește mesajul de răspuns în consolă
Verifică jurnalele în SMS gateway
Instalează Ozeki SMS Gateway și creează un utilizator API HTTP
Pentru a putea trimite SMS din Kotlin, mai întâi trebuie să instalezi Ozeki SMS Gateway.
SMS gateway-ul poate fi instalat pe același computer unde dezvolți codul tău Kotlin în Android Studio.
După instalare, următorul pas este să conectezi Ozeki SMS Gateway la rețeaua mobilă.
Poți creezi un utilizator API HTTP pentru SMS.
Creează un utilizator cu numele de utilizator "http_user" și parola "qwe123" pentru a face exemplul să funcționeze fără modificări.
După ce mediul este configurat, poți rula codul tău Kotlin.
URL-ul API HTTP pentru a trimite SMS din Kotlin
Pentru a trimite un SMS programat din Kotlin, aplicația ta Kotlin va trebui să trimită o cerere HTTP către SMS gateway.
URL-ul API este afișat mai jos. Reține că adresa IP (127.0.0.1) ar trebui
să fie înlocuită cu adresa IP a SMS gateway-ului tău. Dacă Ozeki SMS Gateway este
instalat pe același computer unde rulează aplicația JavaScript pentru SMS,
aceasta poate fi 127.0.0.1. Dacă este instalat pe un computer diferit, ar trebui
să fie adresa IP a acelui computer.
http://127.0.0.1:9509/api?action=rest
Autentificarea HTTP pentru a trimite un SMS programat din Kotlin
Pentru a autentifica clientul SMS Kotlin, trebuie să trimiți numele de utilizator și parola într-un șir codificat base64 către server într-o cerere HTTP. Formatul folosit este: base64(nume_utilizator+":"+parolă).
În Kotlin poți folosi următorul cod pentru a face această codificare:
var usernamePassword = "%s:%s".format(username, password)
return "Basic %s".format(Base64.getEncoder().encodeToString(usernamePassword.toByteArray()))
De exemplu, dacă codezi numele de utilizator 'http_user' și parola 'qwe123', vei
obține următorul șir codificat base64: aHR0cF91c2VyOnF3ZTEyMw==. Pentru a trimite
Antetul cererii HTTP pentru a trimite SMS din Kotlin
Pentru a trimite mesajele SMS, trebuie să incluzi următoarele linii ca antete în
cererea HTTP. Reține că includem un antet pentru tipul de conținut și un antet de autorizare.
Pentru a trimite SMS-ul, aplicația ta Kotlin va trimite o cerere HTTP similară
cu cea de mai jos. Reține că această cerere conține o parte pentru antetul HTTP și
o parte pentru corpul HTTP. Corpul HTTP este un șir de date codificat JSON. Acesta conține
numărul destinatarului și textul mesajului.
Odată ce gateway-ul SMS primește această solicitare, va genera un răspuns HTTP.
Răspunsul HTTP va conține un cod de stare, pentru a indica dacă trimiterea SMS-ului
a fost reușită sau nu. De asemenea, va returna o structură codificată în JSON
pentru a vă oferi detalii utile despre trimiterea mesajului.
Cum să trimiți un SMS programat din Kotlin folosind API-ul SMS și proiectul exemplu de mai sus (Tutorial video)
Acest videoclip vă arată cum să descărcați și să utilizați proiectul SendScheduledSms.kt. Odată ce
ați deschis proiectul exemplu, s-ar putea să observați că există un pachet numit
Ozeki.Libs.Rest Acesta este pachetul care conține MessageApi și toate elementele necesare pentru a
trimite un SMS programat folosind Kotlin.
Cum să verificați dacă SMS-ul a fost acceptat de utilizatorul HTTP
După ce SMS-ul a fost trimis, este o idee bună să verificați gateway-ul SMS,
pentru a vedea ce a primit. Puteți verifica jurnalul deschizând detaliile utilizatorului HTTP
din consola de management Ozeki SMS Gateway. La sfârșitul videoclipului de mai sus
puteți vedea cum să verificați dacă solicitarea a fost primită de http_user.
Figura 3 - Proiectul SendScheduledSms.kt în Android Studio
Cum arată aplicația pe un telefon (Tutorial video)
În Figura 4, puteți vedea interfața utilizator a aplicației pe un telefon.
După cum puteți vedea în imaginile dinainte și după, trimiterea de SMS-uri programate este foarte ușoară cu această aplicație.
După ce mesajul a fost trimis, jurnalul procesului de trimitere va fi vizibil sub caseta de text „Time to send”.
Aici puteți obține toate informațiile despre mesajul trimis.
Figura 4 - Aplicația exemplu SendScheduledSms înainte și după ce mesajele au fost trimise
Cum să adăugați Ozeki.Libs.Rest în propriul proiect
Biblioteca Ozeki.Libs.Rest poate fi descărcată, utilizată și modificată gratuit. Descărcare:Ozeki.Libs.Rest.kt.zip (7.66Kb)
Dacă decideți să vă creați aplicația pe cont propriu doar cu biblioteca Ozeki.Libs.Rest,
trebuie să faceți câteva modificări în aplicația de bază.
Pentru a utiliza biblioteca Ozeki.Libs.Rest, trebuie să o plasați în folderul java
din directorul principal
În următorul videoclip vă voi arăta cum să descărcați și să adăugați biblioteca Ozeki.Libs.Rest
în propriul proiect.
Dependințe
Este important de menționat că biblioteca Ozeki.Libs.Rest are câteva
dependințe. Pentru a o utiliza, trebuie să adăugați aceste dependințe
în Gradle Scripts.
Codul 1 - Lista dependințelor pe care trebuie să le includeți.
Adăugarea dependențelor în proiect (Tutorial video)
În următorul videoclip, veți învăța cum să adăugați dependențele menționate anterior.
Acesta va începe cu copierea codului și vă va ghida până la atașarea cu succes a dependențelor.
Videoclipul durează doar 53 de secunde, dar conține toate acțiunile necesare pentru a finaliza procesul.
Puteți urmări acest tutorial fără niciun efort.
Acces la internet
Pentru a permite aplicației dvs. să trimită
o cerere HTTP, trebuie să activați conexiunea la internet
pentru aplicația dvs.
În următorul videoclip vă voi arăta cum să activați accesul la internet
pentru aplicația dvs. Kotlin.
Codul 2 - Pentru a activa accesul la internet pentru aplicația dvs. Kotlin.
android:usesCleartextTraffic="true"
Codul 3 - Pentru a permite trimiterea cererilor HTTP
Activarea conexiunii la internet pentru proiectul dvs. (Tutorial video)
Trebuie să adăugați ambele linii în fișierul AndroidManifest.xml.
În următorul videoclip vă voi arăta unde ar trebui să puneți codurile de mai sus.
Trebuie să adăugați ambele linii în fișierul AndroidManifest.xml.
În următorul videoclip, vă voi arăta unde ar trebui să puneți codurile de mai sus.
Videoclipul va începe cu copierea și lipirea codului și vă va conduce până la
adăugarea cu succes a conexiunii la internet.
Acest videoclip este detaliat și oferă un timp ușor de urmărit.
Rezumat
Acest ghid vă arată pașii de programare a SMS-urilor în Kotlin cu utilizatorul HTTP al Ozeki SMS Gateway.
Programarea SMS-urilor pentru a livra mesajele atunci când clienții dvs. au timp să le citească vă ajută într-adevăr să mențineți o relație bună cu aceștia.
A avea grijă de lucrurile mici, cum ar fi găsirea momentului perfect pentru a împărtăși gânduri și informații, este esențial dacă doriți să arătați cât de profesionistă este afacerea dvs.
Continuați să citiți tutoriale ca acesta pe pagina web Ozeki.
Există mai multe informații despre utilizarea Kotlin pentru operarea cu mesaje SMS, apoi învățați Cum să primiți un SMS în Kotlin.
Descărcați acum Ozeki SMS Gateway și folosiți ceea ce ați învățat!