Merhabalar.
Bu yazıda Android üzerinden Firebase ile bildirim gönderme işlemini anlatmaya çalışacağım. Öncelikle biraz Firebase’den bahsedelim. Google tarafından satın alındıktan sonra oldukça işlevsel hale getirilen Firebase gerçek zamanlı veritabanı, uygulama istatistikleri, veri depolama, authentication, uygulama içi reklamlarınızı yönetme, harici dosyalarınızı tutabilme ve daha birçok servisi içerisinde barındıran aynı zamanda hem mobil (Android, IOS) hemde Web için kullanabileceğiniz bir platformdur.
Google I/O 2016 etkinliğinde bu sayılan özelliklerin birçoğunu duyuran Firebase özellikle mobilde GCM (Google Cloud Messaging) ile gönderilen push notification olayını bizzat üstlenmiş durumda.
Ş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 Project tıklayoruz.
Daha sonra karşımızı böyle bir ekran çıkıyor. Burada uygulamanızın adını üste yazdıktan sonra Create Project tıklıyoruz.
Sonrasında projeye tıklayıp karşımıza çıkan menüde Add Firebase to your Android App kısmına tıklayıp adımları takip etmeye başlıyoruz.
İ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.
2.adımda google-services.json
isminde bir dosya indirecek. Bu dosyayı altta gördüğünüz şekilde app dizinine atıyoruz.
3.adımda ise hem projenin hemde uygulamanın Gradle dosyalarına eklememiz gereken kodlar veriliyor. Bunlarıda uygun yerlere ekleyerek Android Studioda 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
dosyasına ekleyerek Sync Now tıklıyoruz.
1 2 3 4 |
dependencies { // ... compile 'com.google.firebase:firebase-messaging:9.4.0' } |
Unutmadan AndroidManifest.xml
dosyasına INTERNET izin kodunu ekliyoruz.
1 |
<uses-permission android:name="android.permission.INTERNET" /> |
Sonrasında projemizde bir FirebaseMessagingService
oluşturmamız gerekiyor ve onMessageReceived
metodunu kullanarak bildirim işlemlerini bu metod içerisinde gerçekliyoruz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
public class MyFirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "MyFirebaseMessagingService"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { Log.d(TAG, "From: " + remoteMessage.getFrom()); // notification geldiğinde konsolda yazdırılacak olan kısım Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); // alttaki metod sayesinde gönderilen notification alınıp metoda parametre olarak gönderiliyor. sendNotification(remoteMessage.getNotification().getBody()); } // notification göndermek için gerekli metod private void sendNotification(String messageBody) { Intent intent = new Intent(this,MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("Firebase Push Notification") .setContentText(messageBody) .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, notificationBuilder.build()); } } |
Daha sonra AndroidManifest.xml
dosyasına yazdığımız servisi tanıtıyoruz.
1 2 3 4 5 6 7 8 9 |
... <service android:name=".MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> </application> |
Uygulama tarafındaki kodlar bu şekilde. Şimdide yine Firebase konsola gelip soldaki Notifications kısmına gelerek yeni bir bildirim göndermek için Send your First Message tıklıyoruz.
Üstteki gibi bir mesaj oluşturup Send Message tıklıyoruz.
ve sonuç
Umarım faydalı olmuştur. İyi Çalışmalar
Kaynaklar
- https://firebase.google.com/docs/notifications/android/console-audience
- https://www.codementor.io/android/tutorial/send-push-notifications-to-android-with-firebase
- https://www.simplifiedcoding.net/firebase-cloud-messaging-tutorial-android/
Hocam eline koluna emeğine sağlık Faydalı bilgiler eyvallah…
Faydalı olabildiysek ne mutlu. Neşeli kodlamalar 🙂
Peki bu işlemin birde web versiyonunu gösterebilir misiniz ?
acaba firebase veya benzer hizmet veren platformlarda facebook un bildirimini nasıl gönderebilirim?
peki veri tabanından istediğim bir bilgiyi nasıl bildirim olarak gönderebilirim?
Firebase içerisindeki veriler için mi yoksa kendi veritabanınızdaki veriler için mi?