Mar 01

gcm1

Google Cloud Messaging (GCM), geliştiricilerin, sunuculardan kendi android uygulamalarına veri göndermelerine yardımcı olan ücretsiz bir hizmettir. Bu hizmet kullanılarak, sunucudan android uygulamasına 4 KB’a kadar yük verisi içerebilen iletiler taşınılabilir.

Peki, bu teknoloji neden kullanılır?

Bir android uygulaması yazdığınızı ve bu uygulama aracılığıyla anlık maç skorlarını uygulamanıza çektiğinizi varsayalım.

Uygulamanızın belirli aralıklarla, kullandığınız sunucuya gidip anlık bilgileri alması gerekir.

“Gol olmuş mu?” , “Maçın kaçıncı dakikası?” , “Kart gören futbolcu var mı?” vb. birçok durum için uygulamanın sunucu ile sürekli haberleşmesi gerekir.

Peki, böyle bir durumun dezavantajları nelerdir?

  • Bu durum, sunucu yoğunluğuna neden olur.
  • Cihazın mobil veri aktarımı yüksek olur.
  • Sürekli bir aktivite mobil cihazın daha fazla ram kullanmasına neden olur.
  • Cihazın şarjı fazla kullanılacağından, bu durum bataryanın çabuk bitmesine neden olur.

Öyleyse bir teknoloji kullansak da uygulamamız sürekli sunucuya çıkacağına, maç sırasındaki olası değişikliklerde sunucu uygulamaya erişip “maç bilgilerinde değişiklikler var git onları al” dese. Yâda o değişiklikleri (boyut problemi yoksa) beraberinde getirse.

İşte Google Cloud Messaging tam da bu işe yarıyor. Sunucudaki verilerde olan olası değişiklikleri kullanıcının cihazına bildiriyor. Hem sunucu yoğunluğu azalıyor, hem cihazın mobil veri, ram ve batarya tüketimi azalmış oluyor.

Şimdi GCM teknolojisini biraz yakından inceleyelim.

Bir GCM sürecinde 3 aktör görev yapar.

  1. Android Uygulamamız
  2. Google’ın GCM Sunucuları
  3. Sunucumuz.

Bu 3 aktör arasındaki ilişki aşağıdaki şekildedir.

gcm2

Şekil 1 GCM İlişki Yapısı

Şu açıklamayı yapmakta fayda var. Öncelikle https://cloud.google.com/console gidip uygulamamız içerisinde GCM teknolojisini kullanacağımız söylenir. Burada Google bize GCM sunucuları ile anlaşmamız için kullanacağımız gönderici id (sender id) ve API key bilgilerini verir. Biz bu bilgilerden sender id bilgisini android uygulaması içerisinde, API key bilgisini ise yazacağımız web servis içerisinde kullanırız.

Şekil X.X deki ilişkiyi biraz açıklayacak olursak,

1 numaralı ok ile gösterildiği üzere, mobil cihaz Google Cloud Messasing sunucusu ile uygulamamızın (daha önce Google’dan aldığımız) sender id bilgisini paylaşır ve GCM sunucusuna bu bilgi ile kaydını yaptırır.

2 numaralı ok ile gösterildiği üzere, GCM sunucusu uygulamadan gelen sender id bilgisi ile uygulamayı register eder. Ve uygulamaya bir registration id bilgisi gönderir.

3 numaralı ok ile gösterildiği üzere, uygulama GCM sunucusundan aldığı registration id bilgisini push notification yapacak olan sunucuya iletir.

4 numaralı ok ile gösterildiği üzere, sunucu kendisine gelen registration id bilgisini kendi veri tabanına kaydeder.

Bu işlemlerden sonra sunucu üzerinden mobil cihaza bir bilgi gönderilmek istenildiğinde sırasıyla a ve b durumları gerçekleştirilir.

Sunucu cihaza bir bilgi göndermek istediğinde, GCM Api key bilgisini kullanarak ilgili mobil cihazın registration id’si ile birlikte göndermek istediği bilgiyi GCM sunucusuna iletir (a durumu).

GCM sunucusu kendisine gelen registration id’yi kullanarak o registration id’sine sahip olan mobil cihaza bilgiyi iletir (b durumu).

Google Cloud Messaging teknolojisinin çalışma mantığı bu şekildedir.

Yorum Yaz