Flutter Android OS 9 & 10 http permission internet not work (Aplikasi tidak bisa call API) | ILMU PROGRAMMER
Home ยป Flutter Android OS 9 & 10 http permission internet not work (Aplikasi tidak bisa call API)

Flutter Android OS 9 & 10 http permission internet not work (Aplikasi tidak bisa call API)

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.

Leave a Comment

 
Open chat
Perlu Bantuan Konsultasi ?
Hallo Pembaca.
Telp (021) 55670115 untuk terhubung langsung dengan kami.

Apakah ada yang bisa kami bantu?