Xamarin.Essentials:Konektivitas
Kelas Konektivitas memungkinkan Anda memantau perubahan dalam kondisi jaringan perangkat, memeriksa akses jaringan saat ini, dan bagaimana saat ini terhubung.
Untuk mulai menggunakan API ini, baca panduan memulai untuk Xamarin.Essentials memastikan pustaka diinstal dan disiapkan dengan benar di proyek Anda.
Untuk mengakses fungsionalitas Konektivitas , diperlukan penyiapan spesifik platform berikut.
Izin AccessNetworkState
diperlukan dan harus dikonfigurasi dalam proyek Android. Ini dapat ditambahkan dengan cara berikut:
Buka file AssemblyInfo.cs di bawah folder Properti dan tambahkan:
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
ATAU Perbarui Manifes Android:
Buka file AndroidManifest.xml di bawah folder Properti dan tambahkan yang berikut ini di dalam node manifes.
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Atau klik kanan pada proyek Android dan buka properti proyek. Di bawah Manifes Android, temukan area Izin yang diperlukan: dan periksa izin Status Jaringan Akses. Ini akan secara otomatis memperbarui file AndroidManifest.xml .
Tambahkan referensi ke Xamarin.Essentials di kelas Anda:
using Xamarin.Essentials;
Periksa akses jaringan saat ini:
var current = Connectivity.NetworkAccess;
if (current == NetworkAccess.Internet)
{
// Connection to internet is available
}
Akses jaringan termasuk dalam kategori berikut:
- Internet – Akses lokal dan internet.
- ConstrainedInternet – Akses internet terbatas. Menunjukkan konektivitas portal tawanan, di mana akses lokal ke portal web disediakan, tetapi akses ke Internet mengharuskan kredensial tertentu disediakan melalui portal.
- Lokal – Akses jaringan lokal saja.
- Tidak Ada – Tidak ada konektivitas yang tersedia.
- Tidak Diketahui – Tidak dapat menentukan konektivitas internet.
Anda dapat memeriksa jenis profil koneksi apa yang digunakan perangkat secara aktif:
var profiles = Connectivity.ConnectionProfiles;
if (profiles.Contains(ConnectionProfile.WiFi))
{
// Active Wi-Fi connection.
}
Setiap kali profil koneksi atau akses jaringan berubah, Anda dapat menerima peristiwa saat dipicu:
public class ConnectivityTest
{
public ConnectivityTest()
{
// Register for connectivity changes, be sure to unsubscribe when finished
Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
}
void Connectivity_ConnectivityChanged(object sender, ConnectivityChangedEventArgs e)
{
var access = e.NetworkAccess;
var profiles = e.ConnectionProfiles;
}
}
Penting untuk dicatat bahwa ada kemungkinan yang Internet
dilaporkan oleh NetworkAccess
tetapi akses penuh ke web tidak tersedia. Karena cara kerja konektivitas pada setiap platform, konektivitas hanya dapat menjamin bahwa koneksi tersedia. Misalnya perangkat mungkin terhubung ke jaringan Wi-Fi, tetapi router terputus dari internet. Dalam hal ini Internet mungkin dilaporkan, tetapi koneksi aktif tidak tersedia.