Kinvey üyelik alma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Kinvey üyelik alma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

13 Ağustos 2014 Çarşamba

XE6 PushEvents ve KinveyProvider Kullanımı

Merhabalar,

Aslında pek ilgi olmadığı için blogda paylaşım yapmayı bıracaktım, fakat Tahsin abi sağolsun arayıp paylaşımlardan dolayı teşekkür etti ve bende takip eden olduğunu anca o zaman farkına varmış oldum. Tahsin abiye selamlar buradan.

Gelelim asıl konumuza;

Bir çok arkadaşımız veritabanı entegreli uygulamalar yapmakta bunların çeşitli türleri mevcut google play üzerinde. Uygulamalarımız kullanıcı karşısına çıktıkça yenilenmeden duramayacağı için kullanıcılara bildirimler yapılması şarttır.
Bu bildirimleri Mail, Sms vs. birçok yöntemle yapabilirsiniz.
Ama bunların daha iyisi olarak android dünyasının bizlere sunmuş olduğu "Notification" olayı mevcuttur. Delphi XE5 ile bu işlemi Embarcadero bizlere component tadında sunmuş ve işlerimizi kolaylaştırmıştır. Fakat bence unuttular veya yetiştiremediler şöyle birşey var ki uygulama kapalı olduğu zamanda bu componentin çalışmaması başta bizleri hayal kırıklığına uğratmıştı.

"Brian Long" adlı geliştiricinin bloğunu inceleyenler bu kişinin bir takım java kodlarını delphi proje ile beraber derleyip background servisi yazdığını görmüştür fakat ben bir türlü tam anlamı ile anlayamamış ve o background servisi ile uygulamamdaki Notification componentini tetikleyememiştim.

Embarcadero XE6 sürümü ile bize birtakım componentler daha sunmuştur "BAAS Client" grubu altındaki bu componentler bizlere biraz önce bahsettiğim notification olayını Kinvey.com(Android) veya Parse.com(IOS) aracılığı ile hiç uğraşmadan kolay bir şekilde tetikliyebilmemizi sağlamaktadır.
Bu işlemide Google android mesaj servisi sayesinde yapmaktadır.

İşin kısası: Masaüstündeki exeden mesajınızı ve başlığını yazıyorsunuz Mobil cihazınıza bildirim olarak düşüyor :)

Neden bu kadar şeyi açıklama gereği duydum bende bilmiyorum fakat parmaklar yazdı derler ya o oldu işte.

Projemize ilk önce "Kinvey.com" da üyelik aldığınızı varsayarak başlıyorum. Daha bunu yapmayanlar için biraz önce yazdığım makaleden yararlanabilirler
Linki: http://brsatalay.blogspot.com.tr/2014/08/kinveycom-uyelik-alma-ve-kullanc.html


Gerekli Componentleri aşağıdaki resimde görebilirsiniz.



Öncekle 1 şey yaptırmak istiyorum tabi tercihe kalmıs KinveyProviderin aktif olayını istediğiniz gibide yapabilirsiniz ben checkboxun click olayı ile bağlamak istiyorum.

Toolbardan "View" sekmesine tıklayınız ve açılan menüden "LiveBindings Designer"i açınız aşağıda bir bölüm açıldıgını göreceksiniz.

Bu bölümde yapmanız gereken tek birşey var Chekbox'un altındaki "IsChecked" yazan yeri mouse ile tutup "PushEvents" ın Active yazan yerinin üstüne bırakmanız yani arada bir köprü(link) oluşturacas ki entegre calıssın.

Şimdi bu ekrani  kapatabilirsiniz.

"PushEvents" componentinin  "AutoActive" özelliğini false yapalım ki bu checkboxla aktifleştirelim



Ekranda gördüğünüz resimdeki KinveyProvider componentinin bazı ayarları vardır sıradaki işlemimiz önceki konularda oluşturdugumuz hesaplar ve kodları bu providere tanımlamak.

GCMAppOD = http://brsatalay.blogspot.com.tr/2014/08/google-messaging-service-ayarlamalar.html
Bu linkteki  2. resimdeki "Project Number"

AppKey, AppSecret, MasterSecret = Kinvey.com girişinde sağ alta mevcuttur

Örnek


Username, Password = http://brsatalay.blogspot.com.tr/2014/08/kinveycom-uyelik-alma-ve-kullanc.html adresindeki konuda oluşturduğumuz kullanıcıdır.


Resimdeki gibi Atamaları yapınız




Evet sıradaki atamaları bitirdiğimize göre sıradaki işlemimiz bu servisin yayınladığı mesajı yakalamaktır.

Java kodlarında olsa bir yığın kod yazmamız gerekecekti fakat işte delphiyi bu sebeble seviyorum bizim için zaman kaybetmememiz için standart kodları kendi hallediyor.

Evet olayı bölmeden devam..

"PushEvents" componentinin Event sekmesine gelerek sırayla eventlerimizi tanımlayalım.

procedure TMainScreen.PushEventsDeviceTokenRequestFailed(Sender: TObject; 
const AErrorMessage: string); 
begin //DeviceTokenRequestFailed Eventi hata anında tetiklenir.
  Memo1.Lines.Add('Hata Var!');
  BildirimMemo.Lines.Add(AErrorMessage);//Bu değişken sayesinde dönen hata mesajını yakalayabilirsiniz.
  BildirimMemo.Lines.Add('');
end;

procedure TMainScreen.PushEventsPushReceived(Sender: TObject; 
const AData: TPushData);
begin//Sorunsuz iletişim anında burası tetiklenir.
 BildirimGonder(AData.Message);//Bu değişkene Kinvey.com adresinden gönderdiğiniz mesaj gelecektir.
end;

procedure TMainScreen.BildirimGonder(T: String);
var
  Notification: TNotification;
begin
  if NotificationCenter.Supported then
  begin
    Notification := NotificationCenter.CreateNotification;
    try
      Notification.Name := 'Mesaj Başlığı';
      Notification.AlertBody := T;
      Notification.FireDate := Now;
      NotificationCenter.ScheduleNotification(Notification);
    finally
      Notification.DisposeOf;
    end;
  end
end;


Evet kod kısmımız  *.pas dosyası içerisinde bu kadar sorabilirsiniz "BildirimGonder" proceduresini neden tanımladın sebebi şu:

Uygulama kapalıyken bildirim sekmesine ileti düşer fakat uygulama açıkken herhangi bir "Notification" algısı çalışmadığı için bu işlemi manuel olarak yapmamız gerekmektedir.

Sıradaki işlemimizde "AndroidManifest.template.xml" içerisine uygulama izinleri ve servis ayarları gibi atamaları yapacağız.

"AndroidManifest.template.xml" dosyasını açıyoruz ve "<%uses-permisson%>" metini bulup altına biraz yer açıyoruz ki şu kodları yapıştırabilelim..


<!-- GCM connects to Google Services. -->

    <uses-permission android:name="android.permission.INTERNET" />



    <!-- GCM requires a Google account. -->

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />



    <!-- Keeps the processor from sleeping when a message is received. -->

    <uses-permission android:name="android.permission.WAKE_LOCK" />



    <!--

     Creates a custom permission so only this app can receive its messages.



     NOTE: the permission *must* be called PACKAGE.permission.C2D_MESSAGE,

     where PACKAGE is the application's package name.

    -->

    <permission android:name="%package%.permission.C2D_MESSAGE"

    android:protectionLevel="signature" />

    <uses-permission android:name="%package%.permission.C2D_MESSAGE" />



    <!-- This app has permission to register and receive data message. -->

    <uses-permission

    android:name="com.google.android.c2dm.permission.RECEIVE" />



Nedir bu kodlar derseniz permission yazısından anlayabileceğiniz gibi kullanacağımız işlemlerin izinleridir bu şekil manuel ayarlamak yerine Delphi içerisinden seçerekte atayabilirsiniz tercih size kalmış.


Şimdi biraz aşağılardaki

</intent-filter>

        </activity>


kodları bulun ve hemen altına şu kodları yapıştırın.

<receiver

      android:name="com.embarcadero.gcm.notifications.GCMNotification" android:exported="true"

      android:permission="com.google.android.c2dm.permission.SEND" >

        <intent-filter>

          <action android:name="com.google.android.c2dm.intent.RECEIVE" />

          <category android:name="%package%" />

        </intent-filter>

      </receiver>



Bu kodlar yanlış anlamadıysam google messaj servisinden gelen yayını dinliyor

Son olarak şu kodu ekleyiniz.

<service android:name="com.embarcadero.gcm.notifications.GCMIntentService" />


Sıradaki ve son işlemimiz Mesajımızı göndermektir :)

Bu işlem için Kinvey.com'a giriyoruz ve resimdeki adımları izleyerek Mesaj gönderme ekranına geliyoruz.



Aşağıda gördüğünüz yerdeki yazı alanına istediğinizi  yazarak uygulamanızın kapalı oldugu cihaza notification bildirimi gönderebilirsiniz.



Makalelerimi takip ettiğiniz için teşekkürler. Pek takip eden olduğunu var saymıyorum ama ilgi gösterilirse bu notification gönderme işlemini masaüstü bilgisayardan nasıl gönderildiği ile ilgili yazı yazabilirim isteğe bağlı..

Bu resimde gönderdiğimiz metni görebilirsiniz :)

Kinvey ile Google Cloud Message entegrasyonu

Merhabalar,

Bu yazımda BAAS Client componentleri için ara yazıdır. Bu yazıda Kinvey ile Google Cloud Message entegrasyonu ara konusuna değineceğiz.

Peki bu entegrasyon ne için gerekli ben makalelerimde sadece Push Notification olayı için anlatacağım fakat googlenin sağladığı bütün servisler için geçerli oldugunu bilmeniz yeterlidir örneğin konum servisleri.

Adım 1: Kinvey.com giriş yapılır. Resimdeki adımlar izlenir.



Adım 2: Soldaki Configuration bölümü seçilir ve Sağda açılan "Google Cloud Messaging Configuration" Formu doldurulur.



Buradaki verileri http://brsatalay.blogspot.com.tr/2014/08/google-messaging-service-ayarlamalar.html linkindeki makaleden alıcas.

1. Edit = Linkteki 2. resimi incelediğinizde nereden alıcağımızı görebilirsiniz doğru yeri kopyalayıp yapıştırınız.

2. Edit = Linkteki son resimdeki "API Key" dir ve oradan kopyalayıp yapıştırınız.

Bilgileri girince aşağıya buton geldiğini göreceksiniz tıklayarak kayıt ediniz.

Entegrasyon işlemimiz bu kadar.


Google Messaging Service Ayarlamaları

Merhabalar,

Bu yazımda BAAS Client componentleri için ara yazıdır. Bu yazıda "Google Cloud Message API" için key oluşturacağız.

https://console.developers.google.com/project

Adresine giriş yapılır ve sol üsteki "Create Project" butonuna basarak ekranın ortasında açılan form doldurulur.



1. Edit yöneteceğiniz proje adıdır.
2. Edit uniq bir degerdir begenmesseniz yanındaki yenileme butonuna basmanız yeterlidir. "Create" butonuna basılarak devam edilir.

projeyi oluşturduğu zaman aşağıdaki resimdeki ekran karşınıza gelir bu ekranda size lazım olacak 2 değer vardır bunu bir yere not ediniz veya tekrar buraya gelip bakabilirsiniz

bunlar kırmızı kutu içerisine aldığım "Project ID" ve "Project Number" dir.



Aşağıdaki resimde göreceğiniz gibi soldaki menüden "APIS & AUTH >> APIS" tıklayarak açılan Listede "Google Cloud Messaging for Android" seçeneğini "ON" yani aktif duruma getiriniz.



Ardından yine soldaki menüden "Credentials" seçeneğine tıklayarak "CREATE NEW KEY" butonuna basınız. Açılan Ekranda "Server Key" tıklayarak gelen ekrandaki metin kutusuna "0.0.0.0/0" değerini girmeniz kafidir.



Bu sayede aşağıdaki resimde gördüğünüz gibi "API KEY" elde etmiş olduk.

Kinvey.com Üyelik alma ve Kullanıcı oluşturma

Merhabalar,

Bu yazımda BAAS Client componentleri için ara yazıdır. Bu yazıda "Kinvey.com" üzerinde kullanıcı developer olarak hesap açarak servisleri kullanması için kullanıcı oluşturacas.

Adım 1:
http://console.kinvey.com/ adresine girilir ve aşağıdaki form ile giriş bilgileri oluşturulur.


Adım 2:

"Sing Up" butonuna bastıkdan sonra aşağıdaki ekran karşınıza gelir ve "What's your app called?" bölümüne panelde yöneteceğiniz uygulama adı yazılır  ve aşağıdan "Other >> REST API" seçenekleri seçilir ve butona basılır


Adım 3:
 Dashboard ekranında aşağıdaki resimde gördüğünüz gibi sol üsteki "Addons" yazısına tıklanır ve açılan ekrandan "Core >>> Users" seçilir.


Adım 4:
Sıradaki karşımıza gelen ekranda sol menüden "Add User" tıklanarak bilgilerin girileceği ekran sağ tarafta mevcut hala gelir

Resimde göreceğiniz gibi ekrandaki yerleri kırmızı renkle yazdım ve bir sonraki makalemizde bu bilgileri kullanarak örnekler yapacağız


Bu işlem bu kadar basit.
Artık Kinvey.com üzerindeki REST API leri kullanmak için bir Kullanıcınız var