Hai, Ketika saya sedang mengembangkan Aplikasi Android dengan fungsi login (misalkan) atau call API kadang ada device tertentu (case pada Android 9 & 10) tidak berjalan dengan semestinya.
Pada tutorial ini Mari kita bahas masalah tersebut
Berikut ini merupakan source code potongannya
login() async {
try {
final response = await http.post(Uri.encodeFull("http://xxxxxx.ilmuprogram.com/public/api/auth/login"),
body: {"EMAIL": email, "PASSWORD": password});
final data = jsonDecode(response.body);
print(data);
int value = data['VALUE'];
String pesan = data['MESSAGE'];
String emailAPI = data['EMAIL'];
..dst
} on Exception catch (exception) {
_ErrorSocker(exception.toString());
}
}
Dan saya sudah menambahkan
<uses-permission android:name="android.permission.INTERNET"/>
<application android:usesCleartextTraffic="true"/>
Pada semua manifest
Kemudian saya running & build dapatlah output 2 file yang memiliki size / ukuran yang berbeda
Uji Coba saya Install app-debug dengan size 62mb dan berhasil running (tidak ada kendala), namun masalah terjadi ketika saya menginstall hasil build dari flutter tersebut (app-release) maka di Aplikasi tidak bisa dipakai (tidak bisa login)
Solusi
The guidance in this section applies only to apps that target Android 8.1 (API level 27) or lower. Starting with Android 9 (API level 28), cleartext support is disabled by default.
Penjelasan
Aplikasi yang ingin terhubung ke tujuan hanya dengan menggunakan koneksi aman dapat memilih untuk tidak mendukung cleartext (menggunakan protokol HTTP yang tidak dienkripsi, bukan HTTPS) ke tujuan tersebut. Opsi ini membantu mencegah regresi yang tidak disengaja di aplikasi karena perubahan pada URL yang disediakan oleh sumber eksternal seperti server backend.
Misalnya, sebuah aplikasi mungkin ingin memastikan bahwa semua koneksi ke secure.example.com selalu dilakukan melalui HTTPS untuk melindungi lalu lintas sensitif dari jaringan yang tidak bersahabat.
Buka res/xml/network_security_config.xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="false">
<domain includeSubdomains="true">secure.example.com</domain>
</domain-config>
</network-security-config>
Kita juga dapat menggunakan android: usingCleartextTraffic = “true” di AndroidManifest.xml untuk mode pengembangan, tetapi Kita tidak boleh menggunakannya dalam mode rilis.
Jadi, yang saya lakukan adalah (Pada flutter)
[1] Buat Folder xml pada menu res kemudian buat 1 file dengan nama network_security_config.xml
[2] Kemudian masukkan code berikut ini
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">your_domain.com</domain>
</domain-config>
</network-security-config>
Berikut tampilannya
Jangan lupa daftarkan xml tersebut di manifest nya.
Tambahkan juga pada manifest
android:usesCleartextTraffic="true"
android:cleartextTrafficPermitted="true"
Build ulang Aplikasi Android Anda, dan eng ing eng.. sukses ๐
Semoga membantu rekan – rekan ya.