Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PhoneGap
Code

PhoneGap: Membuat Pembaca Umpan - Logika Aplikasi

by
Difficulty:IntermediateLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Muhamad Zulfiqor (you can also view the original English article)

Ini adalah bagian kedua dari seri tentang Audero Feed Reader. Dalam artikel ini, kami akan mempelajari logika bisnis aplikasi kami dan memberikan latar belakang tambahan pada plugin dan API yang digunakan untuk proyek kami.


Ikhtisar Plugin & API

Plugin Notifikasi

Di beberapa titik dalam aplikasi Pembaca Umpan Audero Feed Reader kami akan menggunakan metode alert() pada Notification Plugin. Bagaimana peringatan akan ditampilkan benar-benar tergantung pada platform yang akan dijalankan aplikasi. Bahkan, sebagian besar sistem operasi yang didukung menggunakan kotak dialog asli, tetapi yang lain, seperti Bada 2.x, menggunakan fungsi alert() klasik browser, yang kurang dapat disesuaikan. Metode ini menerima hingga empat parameter:

  1. message: String yang berisi pesan yang akan ditampilkan.
  2. alertCallback: callback untuk meminta ketika dialog siaga dipecat.
  3. title: judul dialog (nilai default adalah "alert").
  4. buttonName: teks tombol yang disertakan dalam dialog (nilai default adalah "OK")

Perlu diingat bahwa Windows Phone 7 dan 8 tidak memiliki tanda built-in browser. Jadi, jika Anda ingin menggunakan alert('message'); Anda harus menetapkan window.alert = navigator.notification.alert.

InAppBrowser Plugin

Dalam bagian pertama dari seri ini, saya sebutkan bahwa titik yang menarik dari halaman kredit adalah atribut target = "_blank" diterapkan untuk link. Bagian ini akan menjelaskan bagaimana metode openLinksInApp() kelas aplication bekerja.

InAppBrowser adalah sebuah browser web yang akan ditampilkan di app ketika Anda menggunakan panggilan window.open. Seperti saya katakan dalam bagian pertama, mulai dari versi 2.3.0, memiliki dua metode baru: executeScript() dan insertCSS(). Saat ini, plugin ini menyediakan lima metode berikut dalam Total:

  • addEventListener(): memungkinkan pengguna untuk mendengarkan peristiwa tiga (loadstart, loadstop, dan exit), dan untuk melampirkan fungsi yang berjalan segera setelah peristiwa-peristiwa dipecat.
  • removeEventListener(): digunakan untuk menghilangkan pendengar terpasang sebelumnya.
  • Close(): digunakan untuk menutup jendela InAppBrowser.
  • executeScript(): memungkinkan injeksi kode JavaScript ke jendela InAppBrowser.
  • executeScript(): memungkinkan injeksi kode CSS ke jendela InAppBrowser.

Jika Anda tidak menggunakan Cordova selama beberapa bulan, atau jika Anda tetap untuk versi 2.0.0, Anda akan ingat bahwa secara default itu membuka pranala di Cordova WebView sama yang menjalankan aplikasi. Oleh karena itu, setelah halaman eksternal dikunjungi Halaman ditampilkan terakhir ditunjukkan persis seperti itu sebelum pengguna meninggalkan. Dari versi itu pada, hal ini tidak lagi perilaku standar. Pada kenyataannya, link eksternal sekarang dibuka menggunakan Cordova WebView jika URL dalam aplikasi Anda daftar putih. URL yang tidak pada daftar putih Anda dibuka menggunakan InAppBrowser Plugin (lebih pada ini dalam dokumentasi). Tapi apa ini berarti praktis? Itu berarti bahwa jika Anda tidak mengelola link dengan benar dan jika aplikasi Anda pengguna mengklik link dan kemudian kembali ke aplikasi, Semua Mobile jQuery atau perangkat tambahan lain seperti hilang. Hal ini terjadi karena semua CSS dan JavaScript file yang dimuat hanya di halaman utama, dan URL berikutnya dimuat menggunakan AJAX (sistem default yang diadopsi oleh jQuery Mobile).

Perbaikan untuk masalah ini dilaksanakan dalam metode openLinksInApp(). Pada kenyataannya, solusinya adalah untuk menangkap klik semua link eksternal dengan menetapkan target = "_blank" atribut, mencegah perilaku default yang tidak diinginkan dan membuka link menggunakan metode window.open(). Untuk bekerja dengan baik, solusi ini akan mengharuskan Anda menetapkan daftar putih di file konfigurasi.

Google Feed API

Sebelum berbicara tentang kelas di Audero Feed Reader, kita perlu menyelidiki Google Feed API dan antarmuka Google Feed JSON karena kita akan menggunakannya dalam fitur inti dari aplikasi kita. Seperti yang saya tunjukkan di bagian pertama dari seri ini, antarmuka mem-parsing umpan RSS atau ATOM dan mengembalikan objek JSON yang bersatu dan mudah diuraikan. Tentu saja, kita bisa mengelola objek JSON ini menggunakan JavaScript.

Antarmuka ini mendukung dua jenis queri: Temukan Umpan dan Umpan akan di Muat. Pencarian pertama untuk feed, berdasarkan kata kunci yang diberikan dilewatkan sebagai argumen, sedangkan pencarian kedua untuk feed berdasarkan URL feed yang disediakan. Dalam aplikasi kami, kami hanya akan menggunakan fitur Load Feed.

Setiap permintaan ke Google API ini harus mengirim setidaknya dua parameter: v dan q, mereka punya nama yang sangat samar! Parameter pertama, v, menentukan nomor versi protokol. Pada saat penulisan ini, satu-satunya nilai yang valid adalah '1.0'. Pada parameter kedua, q, kita meneruskan URL untuk mengurai. Selain ini, aplikasi kami juga akan menggunakan parameter num Dokumentasi menentukan jumlah entri untuk memuat dari umpan yang ditentukan oleh q. Nilai -1 menunjukkan jumlah entri maksimum yang didukung, saat ini 100. Secara default, load feed menghasilkan empat hasil. Jadi, penting untuk menerapkan fitur kami memuat 10 entri secara default dan kemudian naik dengan 10 lainnya setiap kali pengguna diminta untuk menampilkan lebih banyak

Sekarang Anda menyadari bagaimana kami akan meminta layanan Google, penting untuk mengklarifikasi hasil yang akan dihasilkannya. Jika URL yang kami berikan benar, kami akan menemukan entri Umpan di dalam properti responseData.feed.entries. Setiap entri memiliki banyak informasi, tetapi kami akan menggunakan hanya beberapa dari mereka. Secara khusus, kami akan mencetak properti berikut:

  • title: Judul entri
  • link: URL untuk versi HTML dari entri.
  • author: Penulis entri.
  • contentSnippet: Potongan kurang dari 120 karakter dari atribut konten. Cuplikan tidak mengandung tag HTML apa pun.

Detail yang di berikan di atas cukup untuk tujuan aplikasi kami, tetapi jika Anda ingin mempelajari lebih lanjut, lihat Dokumentasi Google Feed.


Membangun Kelas Feed

Bagian ini akan menjelaskan kelas Feed dan metodenya, semua termasuk dalam file feed.js. Seperti yang kami tunjukkan di bagian sebelumnya, kami hanya akan menyimpan dua bidang untuk setiap umpan: judul dan URL. Jadi, kelas ini menerima dua titik data ini sebagai parameter Di dalamnya, kami membuat dua properti pribadi: _db dan _tableName. Ingat bahwa JavaScript sebenarnya tidak memiliki pengubah visibilitas properti dan metode, jadi kita sebenarnya meniru data pribadi.

Yang pertama adalah shortcut untuk properti localStorage dari objek window. Ini digunakan untuk mengakses metode yang diekspos oleh Plugin Penyimpanan, di mana aplikasi kami berbasis, dan yang akan kami gunakan untuk menyimpan Feed. Yang kedua adalah string yang berisi nama kunci tempat kami akan menyimpan data. Bahkan, mengingat spesifikasi Storage, menyimpan data menggunakan format nilai-kunci. Oleh karena itu, untuk menyimpan array feed kami, kami perlu JSON-ify it. Itulah tepatnya yang akan dilakukan oleh metode save (). Dengan cara yang sama, untuk mengambil data kita harus mem-parse string JSON untuk mengubahnya menjadi objek. Tugas ini dicapai dengan metode load (). Metode-metode tersebut adalah satu-satunya yang perlu berada di dalam definisi kelas karena mereka menggunakan properti pribadi.

Bagian relatif dari file feed.js tercantum di bawah ini:

Sekitar dua metode sederhana ini kami akan membuat yang banyak umum lainnya. Secara khusus, kami akan membuat beberapa metode instance seperti add (), untuk menambahkan Feed baru, delete (), untuk menghapus feed, dan compareTo (), untuk membandingkan instance Feed dengan Feed yang lain. Selain ini, kami juga akan mengembangkan beberapa metode statis seperti getFeeds() untuk mengambil semua umpan dari penyimpanan, getFeed() untuk mengambil hanya satu, dan compare() untuk membandingkan dua objek.

Metode perbandingan layak dibahas sedikit untuk memahami bagaimana kami akan membandingkannya. Kami akan melewatkan deskripsi compareTo() karena tidak melakukan apa pun kecuali memanggil pasangan statisnya, compare(), yang benar-benar melakukan pekerjaan. Di dalamnya, pertama-tama kita akan menguji apakah salah satu dari nilai yang diberikan adalah null-like. Jika tidak ada yang seperti nol, kami akan membandingkan secara leksikografis nama mereka dan, jika mereka sama, bandingkan URL mereka. Namun, seperti yang akan Anda temukan nanti, kami akan memaksa pengguna untuk tidak pernah memiliki dua feed dengan nama atau URL yang sama.
Metode compare() penting karena mendefinisikan cara kita membandingkan dua feed, dan ini sangat penting untuk menetapkan bagaimana Feed akan diurutkan dalam halaman list-feeds.html. Bahkan, kami akan menggunakan metode array sort() yang menerima parameter opsional fungsi, yang menentukan urutan urutan array berdasarkan nilai kembalinya.

Kode yang mengimplementasikan apa yang saya jelaskan adalah sebagai berikut:

Selain metode yang terlihat sejauh ini, kita akan membuat dua metode pencarian yang akan kita gunakan untuk menemukan dan menghapus Feed yang diberikan: searchByName() dan searchByUrl(). Metode terakhir yang ingin kami soroti adalah getIndex(), dan itu adalah yang digunakan untuk mengambil indeks file tertentu.

Sekarang setelah kami menemukan semua detail kelas ini, kami dapat mencantumkan seluruh kode sumber file:


Membangun Kelas Aplikasi

Bagian ini membahas kelas kedua dan terakhir dari proyek Application, yang terdapat di dalam file application.js. Tujuannya adalah menginisialisasi tata letak halaman, melampirkan acara ke elemen halaman aplikasi, dan menggunakan kelas Feed untuk menyimpan, memuat, dan mengambil feed.

Kelas ini diatur untuk memiliki titik masuk dalam metode initApplication(). Ini disebut segera setelah Cordova telah diinisialisasi dan API-nya siap untuk bertindak. Dalam metode ini, kami melampirkan khusus untuk setiap inisialisasi halaman sehingga kami dapat mengelola peristiwa yang dipicu oleh widget mereka. Di dalamnya, kami juga akan memanggil Application.openLinksInApp() untuk alasan yang dibahas sebelumnya. Selain itu, untuk meningkatkan pengalaman pengguna, kami akan menangkap setiap penekanan tombol fisik (yang memang ada) untuk mengalihkan pengguna ke halaman beranda aplikasi kami.

Fungsi inti dari aplikasi kami adalah initShowFeedPage() karena menggunakan antarmuka JSON Google Feed. Sebelum menjalankan permintaan ke layanan, kami menghitung jumlah entri yang sudah dimuat (currentEntries variable) dan menghitung berapa banyak entri layanan harus mengambil (entriesToShow variabel). Kemudian kita akan menjalankan permintaan AJAX, menggunakan metode jQuery ajax(), dan pada saat yang sama kita menampilkan widget pemuatan halaman ke pengguna. Ketika callback sukses dijalankan, pertama-tama kita menguji apakah jumlah entri yang dikembalikan sama dengan jumlah yang sudah ditampilkan, dalam hal ini kita menunjukkan pesan 'Tidak ada lagi entri untuk dimuat'. Jika tidak, kami menambahkannya ke daftar dan menyegarkan widget akordion ($list.collapsibleset ('refresh')). Seiring dengan setiap entri, kami juga melampirkan handler ke tombol yang dibuat jadi jika koneksi dimatikan pesan diminta bukan mengakses halaman.

Akhirnya, metode updateIcons() akan dibahas di bagian berikutnya dan terakhir dari seri.

Kode yang mengimplementasikan kelas yang didiskusikan tercantum di bawah ini:


Kesimpulan

Pada seri ketiga dan terakhir dari seri ini, kita akan melihat bagaimana membangun dan menguji installer menggunakan CLI dan Adobe PhoneGap Build.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.