[Bedah SDK] Tru.id
Oke melanjutkan pembahasan kemarin, sekarang kita masuk ke bedah SDK. Bagaimana SDK Tru.id bekerja ?
Pada file TruSDK.swift menggunakan CoreTelephony untuk mendapatkan mobileCountryCode dan mobileNetworkCode yang nantinya digunakan sebagai operator pada network request.
Selanjutnya masuk ke file CellularConnectionManager.swift pada file ini menggunakan NWConnection.
Pada method check memanggil activateConnection method dimana activateConnection juga memanggil method createHttpCommand yang berguna untuk membuat http patch command. Untuk patch http bisa dibaca sendiri di Wikipedia Patch(HTTP).
Ada juga method createConnection sebagai NWConnection builder dan createConnectionUpdateHandler sebagai handler.
Nah untuk alasan mengapa menggunakan NWConnection bukan nya URLSession saya masih belum paham. Tapi pada NWConnection kita bisa memaksa device menggunakan koneksi dari Mobile jadi ketika kita terhubung internet dengan koneksi yang bukan dari koneksi Mobile akan masuk ke page OTP.
Masuk ke tahap testing dengan :
- Mematikan koneksi Mobile dan menggunakan koneksi Wifi, authentication tidak masuk ke page waiting tapi langsung masuk ke page OTP
- Menggunakan Hotspot dari device yang menggunakan nomer yang sama sesuai device, resultnya masuk ke page waiting tapi kemudian di redirect ke page OTP
- Menggunakan device tanpa simcard, authentication langsung di redirect ke page OTP
Oke selanjutnya untuk mengetahui bagaimana simcard bekerja kita harus paham mengenai IMSI, ICID dan MSISDN. Jadi intinya yang tertanam di simcard itu bukan phone number tapi IMSI dan ICID. Device bisa konek ke jaringan IMSI dan MSISDN harus terhubung atau di pairing, untuk penjelasan lebih lanjut bisa temen-temen baca pada artikel ini
Nah jadi bagaimana Silent Login bisa bekerja ? Kesimpulan saat ini adalah check number dilakukan dengan mendapatkan IMSI saat konek ke backend dan IMSI akan dicocokan dengan phone number yang sudah teregister pada aplikasi. Untuk bagaimana kita bisa mendapatkan IMSI ini saya masih belum tau ? yang pasti kita butuh kerjasama dengan provider untuk mendapatkan akses ini.
Oke mungkin next kalo udah dapet pencerahan akan saya update lagi.