Site icon Mobilhanem

Android Parse SDK ile Anlık Bildirim Gönderme (Push Notification)

Merhaba Arkadaşlar,
mobilhanem.com sitemiz üzerinden anlattığımız/yayınladığımız derslerimize bugün Parse SDK kullanarak, Anlık Bildirim ( Push Notification ) olayından  bahsedeceğim. Push Notification; mobil uygulamalarımız da bildirim çubuğuna bildirim bırakmaktır. En önemli özelliklerinden biri , uygulamamız kapalı dahi olsa, bildirimin kullanıcıya ulaşmasını sağlar. Yani, Sunucudan – cihaza bilgi ve uyarının gönderilmesine olanak sağlar. Google Cloud Messaging(GCM) yani Google Bulut Mesajlaşma Servisi kullanarak, cihaz üzerindeki uygulamalarımıza veri gönderimi yapabiliriz. Bildiğiniz gibi bu servis, anlık olarak yeni veri kullanılabilir olduğunda, sunucudan mobil uygulamalarımıza istek gönderebilir. Eğer kendi sunucunuz da bildirim gönderme işlemini gerçekleştirmek istiyorsanız(Google Cloud Messaging), bu dersimizi inceleyiniz. Ben ise, sunucuya bağlı kalmadan Parse servislerini kullanarak anlık bildirim nasıl gerçekleşir onu anlatacağım.

İlk olarak https://parse.com/ sitesine girerek üye oluyoruz ve uygulamamıza bir isim verip (ben MyPushNotify ismini verdim ) Create app butonuna tıklıyoruz.

Daha sonra karşımıza gelen sayfada bulunan key lerden Application ID ile Client Key verilerini bir kenara not ediyoruz. Çünkü uygulamamızın kodlama kısmında bu verileri kullanacağız. Android uygulamamıza import edebilmemiz için Parse SDK yı bu link den indiriyoruz. Tıkladığımız an da bilgisayarımıza rar dosyası olarak inecektir. ( Not: Parse SDK yı kullanabilmeniz için Android API Level minimum 9 olmak zorundadır )

İndirdiğimiz bu dosyadan , Parse-1.9.2.jar ile bolts-android-1.2.0.jar ı android uygulamamızın libs klasörü içine atıyoruz. Aşağıdaki gibi olacaktır daha iyi anlamak açısından ekran görüntüsüne bakabilirsiniz.

Jar dosyalarınıda eklediğimize göre şimdi onları Android Studio da kullanabilmemiz için tanıtmamız gerekiyor bunun içinde Gradle-Scripts kısmından build.gradle segmesini açıyoruz. dependencies kısmına bu kodu yapıştırıyoruz. Daha sonra Android Studio projeyi sync etmemizi isteyecek sync ettikten sonra da jar dosyalarını tanıtma işlemini tamamlamış oluyoruz.

files('libs/Parse-1.9.2.jar', 'libs/bolts-android-1.2.0.jar')

Şimdi ise AndroidManifest.xml kısmını açıp bazı izinler almamız gerekiyor. Bu izinleri eklemeden önce neler olduklarına bir bakalım ,

//  Uygulama içinde İnternet kullanımına izin verir.

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

// Network durumuna erişim iznini verir.

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

// Eğer uygulama uyku modun dan normal moda geçmesi gerekiyorsa kullanılır.

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

// Notification gelmesi durumunda , titreşim özelliğinin çalışmasına izin verir.

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

// GCM verilerine ulaşabilmek ve kullanabilmek için gerekli olan Google Accounts iznidir.

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

Daha sonra, bildirimleri dinlememize ve yakalamamıza yardımcı olan Parse servisleri ile broadcast receiver larıda AndroidManifest.xml dosyamıza ekliyoruz. ( Not: <category android:name = ” com.mobilhanem.mypushnotifyexample ” />  bu taglerin arasında yer alan benim paket adım , bu yüzden sizde o kısmı yaratırken kendi paket isminizi yazmalısınız )

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mobilhanem.mypushnotifyexample" >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <permission android:protectionLevel="signature"

        android:name="com.mobilhanem.mypushnotifyexample.permission.C2D_MESSAGE" />

    <uses-permission android:name="com.mobilhanem.mypushnotifyexample.permission.C2D_MESSAGE" />


    <application
        android:name=".PushNotifyApplication"
        android:allowBackup="true"
        android:icon="@drawable/mobilhanem_icon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <service android:name="com.parse.PushService" />
        <receiver android:name="com.parse.ParseBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.parse.ParsePushBroadcastReceiver"
            android:exported="false">
            <intent-filter>
                <action android:name="com.parse.push.intent.RECEIVE" />
                <action android:name="com.parse.push.intent.DELETE" />
                <action android:name="com.parse.push.intent.OPEN" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.parse.GcmBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND">
            <intent-filter>
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="com.mobilhanem.mypushnotifyexample" />
            </intent-filter>
        </receiver>


    </application>


</manifest>

Şimdi ise kendi Application sınıfımızı oluşturalım bu sınıfın içinde en başta belirtmiş olduğum saklamanız gerektiğini söylediğim Application ID ile Client Key verilerini kullanarak Parse servisi ile uygulamamızın iletişime geçmesini sağlıyoruz. Application sınıfımızın ismini PushNotifyApplication koydum buraya istediğiniz her hangi bir adı verebilirsiniz.  Aşağıda gördüğünüz gibi initialize ederek iletişime geçmesini sağladık. ( Not: Aşağıdaki kod da “Application ID”, “Client key” yazan yerlere kendi yaratmış olduğunuz key leri vermeyi unutmayın !  ve AndroidManifest.xml deki <application> tag’ına android:name=”PushNotifyApplication” ekleyelim )

PushNotifyApplication.java

package com.mobilhanem.mypushnotifyexample;

import android.app.Application;
import android.util.Log;

import com.parse.Parse;
import com.parse.ParseException;
import com.parse.ParsePush;
import com.parse.SaveCallback;

/**
 * Created by Alper on 10.6.2015.
 */
public class PushNotifyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        Parse.initialize(getApplicationContext(),"Application ID","Client key");

        ParsePush.subscribeInBackground("",new SaveCallback() {
            @Override
            public void done(ParseException e)
            {

                    if(e==null)
                    {
                        Log.d("msg_info","successful!");
                    }
                    else
                    {
                        Log.d("problem_info","failed!"+e);
                    }

            }
        });


    }
}

Şimdi de Receiver methodu tanımlıyoruz bu method u ParsePushBroadcastReceiver sınıfından türetiyoruz. Bildirim geldiği zaman ne yapılması gerektiğine bu sınıf içinde karar veriyoruz. Zaten bu receiver methodunu AndroidManifest.xml de tanımlamıştık , oraya bakarsanız tekrardan bu sınıfın yapabileceği modülleri yazdık. (Bildirimi alma, açma ve silme ) Yaratmış olduğum bu sınıf ta,bildirime tıkladığımız an da (MainActivity sınıfımızı çalıştırıyoruz ) webview kullanarak sitemizin ( http://www.mobilhanem.com/ ) açılmasını sağlıyoruz. Parse.com sitesi üzerinden gönderilen mesajlar Json formatında oluyor

Buda MainActivity sınıfımız içerisinde webview tanımladık ve verdiğimiz url yi açmasını sağladık.

MainActivity.java

package com.mobilhanem.mypushnotifyexample;


import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends BaseActivity {

    private WebView webView;
    private String url = "http://www.mobilhanem.com/";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView)findViewById(R.id.web_view);

        webView.setWebViewClient(new WebViewClient());

        webView.getSettings().setJavaScriptEnabled(true);

        webView.loadUrl(url);
    }



}

 

Bütün entegrasyonları ve kodlama kısmını da bitirdiğimize göre şimdi Parse sitesine girip en başta yaratmış olduğumuz projeyi açıyoruz. Sağ üst köşede Send a push kısmına tıklıyoruz. Karşımıza gelen ekranda iki seçeneğimiz var birinde Everyone seçeneği diğerinde Segment seçeneği var. Ben Everyone seçtim böylece uygulamayı indiren bütün cep telefonlarına bildirim gönderebileceğim. Eğer Segment seçeneğini seçmiş olsaydık bir koşul belirlememiz gerekecekti sonucunda belirlediğimiz koşullara uyan kişilerin cep telefonuna bildirim göndermiş olacaktık.

Daha sonra , iletmek istediğimiz mesajı yazma işlemine sıra geliyor. Message Type kısmında Plain Text ve JSON formatı seçenekleri var. Tek bir yazılık bildirim göndereceğim için Plain Text seçeneğini kullanıyorum ve gönderilecek mesaja “Parse SDK ile Push Notification Anlatımı Yapıldı” yazısını yazıyorum. JSON gönderecek olursak ta gelen mesajı parse ederek kullanmamız gerekecektir. Zaten Json tipinde gelen verileri kullanmak en temel ve bilinmesi gereken bir konu. Bu dersimden sonra Json formatında bir bildirim yollayıp nasıl olacağını gösterebilirim.

 

Böylece cihazımıza mesajı gönderdik ekran görüntüsü aşağıdadır. İşte anlık bildirim göndermek bu kadar kolay parse servislerini kullanarak. Bu dersimizin de sonuna geldik umarım faydalı olmuştur , kaynak kodlarını da paylaşıyorum fakat neden çalışmıyor hata veriyor demeyin. PushNotifyApplication sınıfının içindeki Application ID ve Client Key kısımları bana özel olduğu için kaynak kodları buraya koyarken Application ID ve Client Key verilerini kaldırdım bu yüzden kendi anahtar değerlerinizi yazmayı unutmayın !!!

Ders hakkında soru ve önerilerinizi çekinmeden yorum bırakabilirsiniz. Bol Android’li günler sizin olsun

Sizlerden ricamız facebook.com/mobilhanem sayfamızı beğenmenizdir. Diğer dersimde görüşmek üzere kendinize iyi bakın..

Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.

0
Exit mobile version