RSS Feed

Android için gerçek zamanlı “push” servisi

December 17, 2011 by Oğuz Yarımtepe

Android için gerçek zamanlı “push” servisine ihtiyacımız vardı. Hem Internet hem de Intranette çalışssın istiyorduk. Android için böylesi bir araÅŸtırma yapınca ilk akla gelen c2dm oluyor. android 2.2 ile gelen bu servis Google sunucularını kullanarak gerçek zamanlı olarak cihazınıza mesaj göndermenizi saÄŸlıyor. Gel gör ki bunu için Internet gerekiyor. En tipik örneÄŸi cihaz kapalı iken, Android Markete girip bir uygulamayı indir dedikdten sonra cihazınız açılıp Internete baÄŸlandıktan sonra o uygulamayı indirmeye baÅŸlaması.

Biraz araÅŸtırınca MQTT kullanarak, bir aracı sunucu ile de bu iÅŸin yapılabileceÄŸini gördüm. Hatta yapılmış örnekler de bulmak mümkün. Ben buradaki örnek uygulamasını Android projesi olarak Eclipse’e aktardım. Yerelime “broker” denilen ve MQTT üzerinden iletiÅŸip gönderdiÄŸiniz mesajları Android cihazlara yollayacak olan bir sunucu kurdum. Tercihim Mosquitto‘dan yana oldu. Ubuntu için


apt-add-repository ppa:mosquitto-dev/mosquitto-ppa

demek ve sonrasında mosquitto paketini kurmak yeterli. Ayar dosyasında cihaz erişimleri için güvenlik tanımlamaları yapmak mümkün. Kullanıcı adı tanımlamak, üye olunacak başlıkları belirlemek ve bu başlıklar için cihaz IDleri tanımlamak mümkün.

Varsayılan ayarlarla da örnek Android uygulaması çalışıyor. Derlemenin olabilmesi için MQTT için bir jar dosyasına ihtiyaç var. IBM sayfasından indirilebilir. wmqtt.jar dosyasını (J2SE dizini altındaki) Android projenizin derleme yoluna harici bir jar olarak eklemeniz gerekiyor.

Gelen arşiv dosyası içerisinde wmqttSample.jar isimli bir de istemci örneği var. J2SE dizini altındaki bu uygulamayı yerelinizde


java -jar wmqttSample.jar

deyip çalıştırabiliyorsunuz. Gelen ekranda “Connect” kısmına tıklayıp sonrasında da “testing” dite bir baÅŸlığa üye olup yazdığınız mesajları “Publish” kısmına tıklayarak Android uygulamanızda görebilirsiniz.  Kaynak koddaki String topics[] = { “testing/#” }; kısmını testing olarak deÄŸiÅŸtirdim.

Bu sayede yerel aÄŸda/Internet’te çalışan bir MQTT sunucu kullanarak bir API aracılığı ile (Python APIsi var) Android cihazlarınıza yerel/Internet üzerinden gerçek zamanlı mesajlar göndermiÅŸ olabilirsiniz.


1 Comment »

  1. Cagdas says:

    Tam c2dm ile boşuboşuna internet üzerinden çalışacak bir uygulama üretmeye başlayacaktık ki bu konuyu gördük. Çok teşekkürler, tam amaca yönelik güzel bir yazı olmuş.

Leave a Reply

Your email address will not be published. Required fields are marked *