Friday, September 16, 2011

Android Push Notification

Dalam OS Android sampai saat ini belum tersedia dukungan untuk push notification secara native seperti milik Blackberry ataupu iOS.
Secara fasilitas UI sudah tersedia elemen STATUS BAR yang dapat mengakomodasi container untuk message yang akan di push. Ada beberapa alternatif untuk dapat menggunakan fasilitas Push Notification ini di Android :
  • Poll : request data ke server setiap periode waktu tertentu, tidak butuh cost tambahan apapun, tapi tidak akan pernah benar-benar real-time dan semakin sering request ke server, batere akan semakin boros.
  • SMS : Android mengijinkan kita meng-intercept SMS. Server mengirimkan SMS yang di-encode khusus, setting Listener di Android untuk mengecek SMS, dan bila ditemukan encode khusus tersebut sms akan di-intercept dan dijadikan notifikasi di status bar. Benar-benar bisa mencapai realtime, tetapi bisa dibilang costly karena butuh investasi SMS server dan biaya pengiriman SMS.
  • Persistent TCP/IP: HP kita menginisialisasi koneksi TCP-IP yang terbuka terus dan dimaintain dengan mengirimkan “keep alive messages”. Setiap ada hal yang baru di server akan mengirimkan pesan yang diterjemahkan sebagai notifikasi. Full realtime, benar-benar hanya tergantung kecepatan koneksi. Isu yang mungkin muncul tentang sistem android yang otomatis bisa kill program atau service bila membutuhkan memori, juga mengenai boros baterai.


Yang akan dibahas lebih lanjut mengenai TCP-IP connection. Ada beberapa riset dari orang-orang di web dan juga tawaran aplikasi.
  1. Urban Airship
    Layanan berbayar, satu API untuk Android, BB dan iOS. Sudah mantap layanannya, banyak yang sudah memakai. Kekurangannya kita harus menginstall aplikasi tambahan AirMail yang merupakan aplikasi penjaga koneksi.
    Secara sistem hampir tidak ada kekurangannya, sudah lengkap, banyak dukungan tutorial dan sample untuk development.
    Ada dua sistem Pricingnya, Basic yang berdasar jumlah message yang akan dikirim dan Premium yang berdasar jumlah user pemakai.
  2. Google C2DM
    Server dari Google yang mengijinkan pengiriman message dari 3rd Party application server ke aplikasi Android. Minimal Android 2.2, menggunakan Google Account, jadi harus setting account dan harus ada aplikasi Market terinstall.
    Aplikasi di hp Android tidak perlu berjalan terus ataupun membuat service tertentu, Google yang akan mengurus pemanggilan aplikasi dengan Intent Broadcast tertentu saat ada message yang masuk. C2DM tidak memberikan interface apapun, hanya mengirimkan raw data yang diterimanya dari server aplikasi apa adanya dan diharapkan aplikasi di handset Android memilliki kapabilitas penuh message itu menjadi suatu notification di status bar, dialog ataupun sinkronisasi data secara silent.
    Dukungan penuh API dari Google tentu bersama contoh developmentnya.
    Batasannya adalah maksimal ukuran message 1kb dan Google juga membatasi jumlah pengiriman pesan ke aplikasi secara agregat maupun jumlah pengiriman ke device tertentu.
  3. Ericsson Labs – Mobile Push Java
    API dan library berbasis JAVA bisa digunakan untuk J2ME dan Android. Menggunakan SMS yang dikirimkan melalui protokol HTTP.
    Utilisasi SMS.Intent.android.provider.Telephony.SMS_RECEIVED yang mulai ada di Android 1.6. Ada web interface dari Ericsson Lab untuk mengirim message langsung dari web, juga bisa menggunakan XML-RPC API yang sudah tersedia untuk mengirimkan message dari web application kita sendiri.
    Cukup menjanjikan karena lewat SMS dan cutting Cost tidak perlu biaya server sama sekali. Terbatas untuk Android(1.6++) dan J2ME. Dukungan sample dan dokumentasi bagus.
  4. Josh Guilfoyle – long keep alive message lewat alarm manager
    Riset dan working example menggunakan AlarmManager untuk membangunkan program dan koneksi juga penggunaan handler untuk running multiple thread dan waktu yang berbeda untuk memastikan koneksi ada terus. Sukses berjalan tapi bermasalah karena Android yang terkadang secara otomatis meng-kill aplikasi dan service. Meskipun kemudian bisa di bangunkan lagi tapi ada kemungkinan state program dan servie ada yang hilang , bisa diakali menggunakan shared preferences.
  5. Dave Rea – Deacon Project
    Merupakan project yang menggunakan Meteor Web Server dan Comet Technology untuk pengiriman notifikasi, masih dalam pengembangan, belum release versi 1 bahkan. Cukup emnjanjikan sebagai opensource Push Notification untuk Android dan JAVA tapi sekarang belum ada dokumentasi, WIKI tapi sudah ada demo aplikasi dan source codenya.
  6. Dale Lane – MQTT
    MQ Telemetry Transport (MQTT) adalah lightweight broker-based publish/subscribe messaging protocol yang didesain untuk menjadi terbuka, simpel, ringan dan mudah untuk diimplementasikan.Sangat cocok digunakan untuk environment yang memiliki banyak keterbatasan seperti ketika netwok mahal, bandwidth kecil dan tidak bisa diandalkan atau juga saat menjalankan embedded device yang terbatas prosesor dan memorynya.
    Menggunakan protokol TCP/IP, menyediakan beberapa kualitas service yang dapat digunakan sesuai kebutuhan, ukuran yang kecil (fixed-length headernya hanya 2bytes).
    MQTT kemudian membutuhkan suatu message broker untuk pengiriman pesan, server untuk pengiriman ke message broker dan library MQTT di aplikasi.
    Mr Dale membuat contoh aplikasi Twitter, dimana ia membuat server untuk mem-pool setiap tweet dan kemudian memilih beberapa tweet yang 'istimewa' untuk kemudian dilanjutkan ke message broker dan kemudian ke aplikasi androidnya.
  7. Anton Laproev – penyempurnaan MQTT (working example)
    Pengembangan dari contoh Mr Dale, lebih lengkap dan benar-benar sudah berjalan, lengkapa komponennya juga. Di bawah merupakan diagram sistemnya. RSMB (Really Small Message Broker) merupakan script dari IBM dan bis dipergunakan juga dengan bebas, bisa digantikan dengan web server lain misalnya Mosquitto. SAM (Simple Asynchronous Message) PHP Library merupakan library PHP yang akan menyediakan metode pengiriman pesan ke RSMB dan send_mqtt.php merupakan web services yang akan digunakan untuk proses input dan pengiriman. Di aplikasi akan digunakan library wmqtt.jar sebagai mekanisme penerimaan pesan di handset.
    Aplikasi bisa berjalan dengan baik dan menjalankan fungsi mengirim pesan dan menerimanya.
    Kelemahan penggunaan MQTT ini adalah mengenai keterbukaannya, bila ada orang yang mengetahui IP dan PORT dimana Message Broker (RSMB) berjalan akan dapat meng-intercept pesan dan membacanya. Untuk aplikasi dengan pesan yang sensitif kemudian bisa digunakan enkripsi.

Categories: , , , , ,

0 komentar:

Copyright © Johannes Dwi Cahyo | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com | BTheme.net      Up ↑