Saya seorang pengembang seluler yang telah menghabiskan banyak waktu mempertimbangkan masalah ini.
Kenapa kamu bertanya?
Kemungkinan besar, Anda berharap dapat mengurangi biaya pengembangan aplikasi dengan:
- Menggunakan keterampilan pengembangan HTML5 / Javascript yang ada
- Menargetkan banyak platform tanpa menulis banyak aplikasi dari awal
- Tidak harus memelihara banyak basis kode di masa depan
Alasannya juga termasuk:
- Pengembangan HTML5 / Javascript dianggap "lebih mudah" daripada pengembangan platform asli
- Menghindari pembayaran biaya pendaftaran program pengembang
- Menghindari pembatasan konten appstore (perjudian dll)
- Menghindari pembelian perangkat keras pengembangan (mis. Mac untuk pengembangan iPhone)
Definisi
Mari kita menetapkan apa yang kita maksud dengan masing-masing dari tiga pendekatan yang disebutkan:
Native
Suatu aplikasi yang diinstal pada suatu perangkat, biasanya dari app store-nya (walaupun terkadang dapat di-sideload). Untuk keperluan diskusi ini, UI aplikasi asli biasanya tidak terdiri dari tampilan web layar penuh saja.
Web seluler
Ini sebenarnya bisa berupa halaman web apa saja, namun untuk diskusi ini mari kita pertimbangkan aplikasi web satu halaman yang mencoba meniru tampilan dan nuansa aplikasi asli. Ini bukan aplikasi asli, itu berjalan di browser perangkat.
Hybrid
aplikasi Hybrid instanceof
aplikasi asli.
Sebagian besar orang mungkin memahami aplikasi hybrid sebagai aplikasi web seluler satu halaman (sekali lagi kemungkinan besar meniru tampilan dan nuansa aplikasi asli), tetapi dikemas sebagai aplikasi asli dengan akses ke layanan asli (à la Phonegap).
Namun sebenarnya ada spektrum antara model Phonegap dan sepenuhnya asli yang akan saya bahas nanti.
Web seluler
Pembatasan teknis
Pertama-tama mari kita daftarkan beberapa batasan teknis pada aplikasi web seluler yang dapat dengan sendirinya menjadi pemecah kesepakatan tergantung pada apa yang Anda lakukan:
- Hanya HTML / kanvas UI
- Tidak ada akses ke acara dan layanan perangkat tertentu (ini banyak didokumentasikan)
- Tidak dapat dicantumkan di toko aplikasi (memengaruhi kemampuan menemukan)
- Dapat menjadi layar penuh dan memiliki ikon homescreen di iOS, namun ini adalah pengalaman yang tidak biasa dan asing bagi sebagian besar pengguna
Jika Anda dapat hidup dengan semua hal di atas, baca terus untuk mengetahui lebih lanjut tentang tantangan aplikasi web gaya halaman tunggal. Namun bagian ini tidak akan lengkap tanpa merujuk ke aplikasi FT.
Financial Times
The FT aplikasi web adalah contoh yang terkenal dari gaya ini aplikasi. Berikut ini adalah fitur menarik dari surat kabar Guardian Inggris tentang hal itu.
Ini tentu saja merupakan prestasi rekayasa yang luar biasa. Perhatikan bahwa saat ini masih hanya tersedia di iOS saja - ini memberitahu saya bahwa mereka menemukan bahwa menyelesaikan tantangan pengembangan lintas-browser yang maju menjadi sangat sulit.
Aplikasi web gaya asli satu halaman
Bagian ini berlaku untuk web seluler dan aplikasi gaya Phonegap.
Tampilan dan nuansa gaya asli dalam aplikasi web biasanya dicapai dengan kerangka kerja seperti Sencha Touch yang menyediakan serangkaian komponen UI untuk Anda gunakan.
Kerangka kerja seperti itu baik untuk UI yang sangat sederhana. Namun mereka kurang fleksibel. Anda tidak akan dapat mengimplementasikan desain aplikasi asli apa pun menggunakan Sencha, Anda harus menyesuaikan desain Anda dengan apa yang dapat ditampung oleh kerangka kerja.
Cara utama yang digunakan kerangka kerja ini adalah mencoba meniru seluk-beluk UI platform itu sendiri. Efek memantul kecil yang menyenangkan yang Anda dapatkan ketika Anda menggulir ke akhir daftar di iPhone? Kerangka kerja Anda perlu meniru itu dalam Javascript. Tidak mungkin untuk membuatnya ulang sepenuhnya, itu akan cenderung melambat, dan pengguna Anda akan terjebak di "lembah luar biasa" dari aplikasi yang terlihat seperti asli, tetapi jelas tidak, dan non-teknis pengguna tidak akan bisa tahu persis mengapa.
Mitos "HTML5 / Javascript mudah"
Fragmentasi perangkat di dalam browser web sudah marak, dan ketika Anda melampaui HTML dan CSS yang paling dasar, Anda akan melihat hal-hal tidak berjalan sesuai harapan Anda. Anda mungkin mendapati diri Anda menghabiskan lebih banyak waktu untuk memecahkan masalah UI fiddly daripada Anda telah menghemat melakukannya dua kali secara native. Jika Anda menggunakan bahasa asli, perhatikan bahwa tampilan web aplikasi asli tidak sama dengan browser perangkat dan memiliki masalah fragmentasi sendiri.
Dan ketika aplikasi Anda menjadi lebih kompleks secara fungsional, Anda akan menemukan bahwa Anda membutuhkan lebih dari keterampilan jquery dasar untuk menjaga Javascript Anda bersih dan terawat.
Yang mengatakan, sangat mungkin untuk membuat aplikasi sederhana dan fungsional dengan cepat dengan pendekatan ini. Tapi itu cukup jelas ketika aplikasi melakukannya.
Lebih jauh di sepanjang spektrum
Jadi, kami menginginkan UX yang lebih baik daripada yang bisa ditawarkan aplikasi gaya Phonegap, tanpa harus menulis semuanya dari awal beberapa kali. Apa yang bisa kita lakukan?
Bagikan kode non-UI
Ada berbagai teknik yang tersedia untuk berbagi logika bisnis di berbagai platform asli. Google telah meluncurkan J2ObjC yang menerjemahkan Java ke dalam Objective-C. Dengan anjak kode yang cermat, perpustakaan Java dapat digunakan di Android dan iOS.
Perpustakaan seperti Calatrava dan Kirin memungkinkan basis kode yang ditulis dalam Javascript (dan karenanya apa pun yang dapat dikompilasi ke Javascript) untuk dimanipulasi dari kode asli. Penafian: Saya bekerja untuk Platform Masa Depan yang menciptakan Kirin; kami telah sangat sukses menggunakannya di iOS dengan Javascript yang dihasilkan dari Java dengan GWT, dengan kode Java juga dijalankan secara native di Android.
Gunakan tampilan web ... jika perlu
Tampilan web layar penuh memiliki banyak pekerjaan yang harus dilakukan untuk dapat meniru transisi layar dan efek pantulan. Tetapi tampilan web di dalam aplikasi asli chrome dapat dibedakan dari asli.
Ada metode standar dan didokumentasikan dengan baik untuk aplikasi asli dan tampilan web untuk berkomunikasi.
Daftar dan tabel dapat bekerja dengan sangat baik ketika dilakukan dengan cara ini, namun entri teks adalah contoh dari sesuatu yang terbaik ditangani secara native (untuk kontrol penuh atas keyboard).
Singkatnya
Pendekatan yang tepat untuk Anda tergantung pada seberapa rumit aplikasi Anda, dan tingkat UI apa yang akan Anda setujui.
Moto saya: gunakan tampilan web di mana saja Anda bisa, tetapi pastikan pengguna Anda tidak dapat memberi tahu .