Bagikan melalui


Ringkasan Bab 9. Panggilan API khusus platform

Catatan

Buku ini diterbitkan pada musim semi 2016, dan belum diperbarui sejak saat itu. Ada banyak dalam buku yang tetap berharga, tetapi beberapa materi sudah kedaluarsa, dan beberapa topik tidak lagi sepenuhnya benar atau lengkap.

Terkadang perlu untuk menjalankan beberapa kode yang bervariasi menurut platform. Bab ini mengeksplorasi teknik.

Prapemroscesan dalam Proyek Aset Bersama

Proyek Aset Xamarin.Forms Bersama dapat menjalankan kode yang berbeda untuk setiap platform menggunakan arahan prapemrosedur #ifC# , , #elifdan endif. Ini ditunjukkan dalam PlatInfoSap1:

Cuplikan layar tiga kali dari paragraf berformat variabel

Namun, kode yang dihasilkan bisa jelek dan sulit dibaca.

Kelas paralel dalam Proyek Aset Bersama

Pendekatan yang lebih terstruktur untuk mengeksekusi kode khusus platform di SAP ditunjukkan dalam sampel PlatInfoSap2. Masing-masing proyek platform berisi kelas dan metode bernama identik, tetapi diimplementasikan untuk platform tertentu. SAP kemudian hanya membuat instans kelas dan memanggil metode .

DependencyService dan Pustaka Kelas Portabel

Catatan

Pustaka Kelas Portabel telah digantikan oleh pustaka .NET Standard. Semua kode sampel dari buku telah dikonversi untuk menggunakan pustaka standar .NET.

Pustaka biasanya tidak dapat mengakses kelas dalam proyek aplikasi. Pembatasan ini tampaknya mencegah teknik yang ditunjukkan di PlatInfoSap2 agar tidak digunakan dalam pustaka. Namun, Xamarin.Forms berisi kelas bernama DependencyService yang menggunakan refleksi .NET untuk mengakses kelas publik dalam proyek aplikasi dari pustaka.

Pustaka harus menentukan dengan anggota yang interface perlu digunakan di setiap platform. Kemudian, masing-masing platform berisi implementasi antarmuka tersebut. Kelas yang mengimplementasikan antarmuka harus diidentifikasi dengan DependencyAttribute pada tingkat perakitan.

Pustaka kemudian menggunakan metode DependencyService generik Get untuk mendapatkan instans kelas platform yang mengimplementasikan antarmuka.

Ini ditunjukkan dalam sampel DisplayPlatformInfo.

Pembuatan suara khusus platform

Sampel MonkeyTapWithSound menambahkan bip ke program MonkeyTap dengan mengakses fasilitas generasi suara di setiap platform.