GELECEĞİ YAZANLAR BLOG

Firebase ile Bildirim Gönderme (Android)

İbrahim Höbekkaya - 07 Eylül 2016

Firebase için genel anlatım yapıldığı için o konulara girmeyeceğim.

İlgili konular;

Firebase nedir? Avantajları nelerdir?

bu adreste anlatılmıştır.

Şimdi Firebase ile nasıl notification gönderebiliriz adım adım bunu gerçekleştirelim. Öncelikle Firebase giriş yapıp üstte Konsola Git kısmına giriyoruz. Google hesabınızla giriş yaptıktan sonra bir uygulama oluşturuyoruz. Bunun için altta gördüğünüz ekrandan Create New Projecttıklayoruz.

Burada karşınıza çıkan ekrandan Create New Project diyoruz. Ve gelen ekranda uygulama adıyla beraber konumumuzu da seçtikten sonra create project diyoruz.

Sonrasında açılan pencerede (pencere açılmazsa projenize tıklayarak açabilirsiniz) karşımıza çıkan menüde Add Firebase to your Android App kısmına tıklayıp devam ediyoruz.

İlk adımda karşınıza çıkan pencerede package name kısmına oluşturacağınız projenin package adını yazıyoruz ve Add App diyoruz.

Debug signing certificate SHA-1 kısmını boş geçebilirsiniz.

Bu adımdan sonra  google-services.json isminde bir dosya indirecek.

Bu dosyayı altta gördüğünüz şekilde app dizinine atıyoruz.

 

Sonraki adımda ise hem projenin hemde uygulamanın Gradle dosyalarına eklememiz gereken kodlar veriliyor. Bunlarıda uygun yerlere ekleyerek Android Studio'da "Gradle" dosyalarını senkronize etmek için Sync Now tıklıyoruz ve Firebase consoldaki adımları Finish diyerek bitiriyoruz.

Şimdide projemizde bildirim servisini kullanabilmemiz için gerekli dependency alttaki gibi projenizin build.gradle(Mpdule: app) dosyasına ekleyerek Sync Now tıklıyoruz.

dependencies {

compile 'com.google.firebase:firebase-messaging:9.0.1'

}

apply plugin: 'com.google.gms.google-services'

 

En alttaki apply plugin kısmını dependencies in dışına eklememiz gerekiyor.

Sonrasında projemizde bir FirebaseMessagingService oluşturmamız gerekiyor ve onMessageReceived metodunu kullanarak bildirim işlemlerini bu metod içerisinde gerçekleştiriyoruz.

 

public class MyFirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService {
    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        showNotification(remoteMessage.getData().get("message")); // Mesaj içeriği alınıp bildirim gösteren metod çağırılıyor
    }

    private void showNotification(String message) {

        Intent i = new Intent(this,MainActivity.class); // Bildirime basıldığında hangi aktiviteye gidilecekse
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent = PendingIntent.getActivity(this,0,i,PendingIntent.FLAG_UPDATE_CURRENT);

        NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
                .setAutoCancel(true) // Kullanıcı bildirime girdiğinde otomatik olarak silinsin. False derseniz bildirim kalıcı olur.
                .setContentTitle("FCM Test") // Bildirim başlığı
                .setContentText(message) // Bildirim mesajı
                .setSmallIcon(R.drawable.common_google_signin_btn_icon_dark) // Bildirim simgesi
                .setContentIntent(pendingIntent);

        NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

        manager.notify(0,builder.build());
    }
}

Daha sonra da bir MyFirebaseInstanceIDService sınıfı oluşturuyoruz aşağıdaki gibi olması gerekiyor.

public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {

    @Override
    public void onTokenRefresh() {
        String token = FirebaseInstanceId.getInstance().getToken();
        registerToken(token);
        Log.d("TOKEN Verildi", token);
    }

    private void registerToken(String token){

    }}


MainActivity kısmına hiç birşey eklemiyoruz bildirim için bildirimleri servis olarak dinliyoruz çünkü, siz uygulamanızı istediğiniz gibi yönetebilirsiniz servisler dışında.

Son olarak Manifest dosyamızın aşağıdaki gibi olması gerekiyor:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mrhobekkaya.firebasenotification">
<uses-permission-sdk-23 android:name="android.permission.INTERNET"/>

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service
            android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>

        <service
            android:name=".MyFirebaseInstanceIDService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
    </application>

</manifest>

 

Uygulama tarafındaki kodlar bu şekilde. Şimdi de yine Firebase konsola gelip soldaki Notifications kısmına gelerek yeni bir bildirim göndermek için Send your First Message'ı tıklıyoruz.

Send Message dediğimizde sonuç;

İşte bu kadar basit arkadaşlar, iyi çalışmalar.

24 Cevap

Yusuf

09 Eylül 2016

Güzel bir yazı olmuş elinize sağlık :)

İbrahim Höbekkaya

10 Eylül 2016

Teşekkür ederim iyi çalışmalar.

zühtü

10 Eylül 2016

RemoteMessage  sınıfı Eklenmemiş .Hata veriyor.

İbrahim Höbekkaya

13 Eylül 2016

Herhangi bir sorun yok kodların çalışması gerekiyordu.

Hüseyin

12 Eylül 2016

Bende sorunsuz çalıştı, paylaşım için teşekkürler..

Sayfalar

Yorum yapmak için Giriş Yapın ya da Üye olun.