Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Giriş

Kayıt Ol

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu. Fusce viverra neque at purus laoreet consequa. Vivamus vulputate posuere nisl quis consequat.

Android Firebase Cloud Messaging ile Push Notification Göndermek

Merhaba Arkadaşlar,
mobilhanem.com üzerinden anlattığımız/yayınladığımız android uygulama geliştirme derslerine Firebase Cloud Messaging ile devam ediyoruz. Firebase Cloud Messaging yani FCM , Google Cloud Messaging push servisinin yeni versiyonudur. Google yeni uygulamalara ve GCM kullanan uygulamalara Firebase kullanılması yönünde tavsiyede bulunmaktadır.Google Cloud Messaging sayfasına girdiğinizde sayfanın üstünde bu uyarıyı görebilirsiniz.

Google Cloud Messaging warning

Gelelim FCM ‘i uygulamamıza nasıl entegre edeceğimize. Ben tüm adımları detaylı bir biçimde anlatmaya çalışacağım.Dolayısıyla uzun bir yazı olacaktır. Öncelikle bu linke tıklayarak Firebase konsolumuza giriyoruz. Gmail hesabımız ile login oluyoruz.

Firebase Konsol Ayarları

Firebase Create project

 

 

Sonra karşımıza çıkan ekranda Create New Project butonuna tıklıyoruz.

 

 

firebase create

 

 

 

Açılan popupta  projemize isim veriyor  ülkemizi seçiyoruz ve Create Project butonu ile devam ediyoruz.

 

 

 

 

firebase notifications

 

 

 

Açılan sayfada farklı farklı firebase servisleri var. Biz Notifications olanı seçiyor ve Get Started Linkine tıklıyoruz.

 

 

 

 

 

Firebase notifications

 

 

Android iconuna tıklayarak devam ediyoruz.

 

 

Firabase notification

 

Açılan popupta ilk alana packagename alanına oluşturduğumuz uygulamanın package name adını giriyor ,ikinci alanı boş bırakıyor ve ADD APP diyerek devam ediyoruz.

 

 

 

 

firebase push notification

 

 

 

Otomatik olarak bilgisayarımız inen google-services.json dosyamızı Android Projemizde nereye eklememiz gerektiğini göstermektedir. Continue diyerek devam ediyoruz.

 

 

 

firebase gradle ayarları

 

 

 

Build.gradle’da yapmamız gereken değişiklikleri gösteriyor. Burda bizden gradle dosyamıza eklememiz gereken kodları gösteriyor.

 

 

 

Android Ayarları

Öncelikle yukarıdaki adımları izlerken otomatik olarak inen google-services.json dosyamızı buluyoruz. Bu dosyayı projemizin bulunduğu klasörde app klasörünün içine yerleştiriyoruz. Aksi takdirde google-services.json dosyasını bulamadım hatası alıyoruz. Yukarıdaki resimlerde zaten bu adımı anlatıyor. Sonrasında uygulamamızı refresh ediyoruz.

android project viewer

 

 

Eğer Android Studio’da  google-services.json klasörünü eklemiş olmamıza rağmen dizinde gözükmüyorsa Project viewer’ımızı değiştiriyoruz. Ve sadece Project olanı seçiyoruz.

 

 

 

Sonra build.gradle dosyamızı açıp bize söylediği scriptleri ekliyoruz. Öncelikle Projenin root dizininde bulunan build.gradle’mızı açıyoruz(Yanında Project:ProjeAdınız yazan build.gradle dosyamız). dependencies içine aşağıdaki gibi düzenleyip “com.google.gms:google-services:3.0.0” satırını ekliyoruz.

Sonra app klasörümüz içinde olan build.gradle dosyamızı açıyoruz(yanında Module:app yazan build gradle dosyamız). Bunun içine ise “apply plugin: ‘com.google.gms.google-services'” ve dependencies kısmına ise “compile ‘com.google.firebase:firebase-messaging:9.6.1’
” satırlarını ekleyeceğiz. Aşağıda oluşturduğum gradle dosyasını inceleyebilirsiniz.

Not: “apply plugin: ‘com.google.gms.google-services’ ”  bu kodu en alta eklemeye dikkat edelim aksi takdirde MultiDex hatası alacaksınız.

Gradle ayarlarımızı yaptıktan sonra projemizi Sync etmeyi unutmayalım.

Yukarıdaki gibi ayarlarımızı yaptıktan sonra Projemize iki adet Class ekleyeceğiz. Bu classlardan birincisi FirebaseInstanceIdService class’ına extend edecek diğeri ise FirebaseMessagingService class’ına extend edecek. FirebaseInstanceIdService class’ı ve FirebaseMessagingService’i class’ı build.gradle’ın dependencies kısmına eklediğimiz Firebase-messaging kütüphanesi ile projemize dahil oldu. Bu iki class’ta Service Class’lardır. Yani uygulamanın arka planında çalışmaktadırlar. Android Service Class’lar hakkında detaylı bilgiyi bu yazımızdan bulabilirsiniz.

Öncelikle bu service classlarımızı AndroidManifest.xml dosyamıza ekleyelim. İsimlerini Google’n örnek projesinde verdiği gibi MyFirebaseInstanceIdService ve MyFirebaseMessagingService verelim. Ne iş yaptıklarını ise kodlarını paylaştıktan sonra anlatalım 🙂

AndroidManifest.xml  :

 

MyFirebaseInstanceIdService :

Yukarıdaki class bir Service class olduğu için kendisi otomatik çalışacaktır ve içindeki onTokenRefresh() methodu uygulama ilk kurulduğunda , Token oluştuğu zaman otomatik olarak çağırılacaktır. onTokenRefresh() methodu sadece uygulama ilk kurulduğunda çalışmaz. Firebase ,token değiştiği zamanda otomatik olarak bu methodu çağıracaktır.  Log.d kullanarak oluşan Token’ı yazdırdık ayrıca Toast mesajı olarak bastırdık. Bu Token sizin cihazınıza özel bir unique token’dır ve notifikasyon gönderilirken bu token sayesinde sizin cihazınıza notifikasyon gönderilmektedir. Oluşan token’ı  sendRegistrationToServer methoduna gönderdik. Bu methodda oluşmuş olan token’ı servisimize gönderme işlemlerini yapmalısınız. Bunu Asynctask , volley kütüphanesi veya Retrofit kütüphanelerini ile yapabilirsiniz. Bu yapıyı nasıl kuracağınıza siz karar verebilirsiniz.

FirebaseMessagingService :

FirebaseMessagingService kodlarını paylaşmadan önce Firebase Cloud Messaging sistemindeki mesaj tiplerinden bahseledim. Firebase’n 2 farklı tip mesaj çeşidi bulunmaktadır. 1. tip Notification mesaj ve 2.tip Data mesaj olarak ayrılmaktadır.
1-Notification Mesaj
Notification mesaj direk Firebase SDK tarafından handle edilir.Yani uygulamamıza eklediğimiz SDK bizim yerimize notifikasyon gösterme işlemini yapmaktadır. Uygulama arka planda(background) ise notification mesaj geldiği an bizim uygulamamız içinde birşey yapmamıza gerek kalmıyor. Firebase otomatik olarak notification mesajını ve uygulama iconunu göstermekte ve notifikasyona tıklandığında uygulamamız açmaktadır.

Not: Firebase console’dan sadece Notification mesaj gönderilebilmektedir. Data mesaj için Server kullanmanız gerekmektedir. Server’dan hem notification mesaj hemde data mesaj gönderebilirsiniz.Firebase console’dan gönderilen mesajda Notifikasyon sesi çıkmamaktadır.

Server’dan aşağıdaki şekilde notification mesaj gönderebilirsiniz.

2-Data Mesaj

Bu mesaj tipinde ise aşağıdaki paylaşacağım FirebaseMessagingService class’ın onMessageReceived methodu tetiklenmektedir. Yani uygulama ön planda(foreground) veya arka planda(background) olması farketmez. Uygulamada notifikasyon gösterme, notifikasyon sesi,notifikasyon iconu vs.. uygulama içinde uygulamayı yazan kişi tarafından yapılmaktadır. Bu mesaj tipi ile farklı datalarda göndermek mümkündür. Bu dataları onMessageReceived methodu içinde handle edip uygulama içinde istediğimiz gibi kullanabiliriz. Notifikasyon göstermek zorunda da değiliz. İstersek sadece gelen datayı uygulama içinde kullanabiliriz.

Google Cloud Messaging dersimde en çok gelen sorulardan biri notifikasyon olarak gönderilen linki uygulama içinde açtırmaktı. İşte data mesaj tipi bunun kullanımına örnek olabilir.

onMessageReceived() methodu içinde  remoteMessage.getData() ile gönderilen bilgileri alıp uygulama içinde istediğimiz gibi kullanabiliriz.

Ayrıca yukarıdaki farklı iki mesaj tipini tek bir mesaj içindede aşağıdaki gibi gönderebiliriz.

Gelelim FirebaseMessagingService class’ımıza:

Evet arkadaşlar android ayarları bukadar. Gelelim Notifikasyon nasıl göndereceğimize:

Firebase Panel Kullanarak Notifikasyon Gönderme

Yukarıda da belirttiğim gibi Firebase panel kullanarak sadece Notification tipinde mesaj gönderebilirsiniz.Uygulama arka planda ise Firebase SDK kendisi notifikasyon çıkarmaktadır. Eğer ön planda ise uygulama onMessageReceived() methodu içinde kendimiz handle edip notifikasyon işlemlerini kendimiz yapabiliriz.

https://console.firebase.google.com/?hl=tr adresine girerek oluşturduğumuz uygulamayı seçiyoruz. Sol taraftaki menüden Notifications kısmını seçip açılan sayfadan New Message diyerek aşağıdaki sayfayı açıyoruz ve aşağıdaki şekilde bilgileri doldurduktan sonra SEND MESSAGE ile göndere tıklıyoruz.

firebase panel

Böylelikle telefonunda uygulamamız kurulu olan cihazlara notification tipinde notifikasyonlarımızı ServerSide olmadan göndermiş oluyoruz.

Server Side Kullanarak Notifikasyon Göndermek

Server Side kullanarak hem notification tipinde hemde data tipinde notifikasyonlar gönderebiliriz.

Önce Server Side’dan notifikasyon göndermemiz için gerekli olan Web API Key’imizi Firebase konsolundan almamız gerekiyor.https://console.firebase.google.com/?hl=tr adresine girerek oluşturduğumuz uygulamayı seçiyoruz.

firebase konsol project setting

 

 

Sonra sol üstteki uygulama adımızın yanında bulunan ayarlar iconuna tıklıyor ve Project settings’e tıklıyoruz.

 

Firebase web api key

 

Açılan sayfada Web API Key karşısında bulunan uzun string bizim API key’imiz oluyor.

 

 

Gelelim PHP’den Notifikasyon göndermeye:

 

Bilgisayarımızın Konsolundan Notifikasyon Göndermek (Curl)

Yukarıdaki satırda notification kısmını data yaparak data tipindede mesajlar gönderebilirsiniz.


Not: Kendi google-services.json dosyanızı dahil etmezseniz çalışmayacaktır.

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

Dersimiz çok uzun oldu fakat Push notification konusu genel olarak biraz daha zor ve uğraştırıcı bir konudur. Umarım sizlere faydası olacaktır bu dersimizin. Sorularınızı konu altından veya sorucevap.mobilhanem.com adresinden sorabilirsiniz.

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

Yazar Hakkında

iOS & Android & Apple Watch Developer, Mobilhanem.com yazarı, Karadeniz Uşağu, Ordu Sevdalısı, Anti Fenerbahçeli, Koyu Galatasaraylı
  • Pingback: Android Google Cloud Messaging ile Push Notification Gönderimi(PHP + MYSQL)()

  • Engin KAN

    Taha bey detaylı ve harika anlatımınız için teşekkür ederim
    ben 2 gündür bu FCM ile uğraşıyorum , bir türlü başarılı olamadım,
    sizin yazınıza denk geldim araştırırken , siz komple projenizi paylaşmışsınız,
    sizin projenizi indirdim ve sadece google.service.json dosyasını ekledim çalıştırdım uygulama çalıştı ancak yine notification alamadım , acaba benim google developer hesabımdamı bir sorun var yada google consol danmı bir ayar yapmam gerekiyor, veya google cloud api simi almam gerekiyor , programsal olarak herşeyi denedim ancak başarılı olamadım , bu konuda yardımınızı rica ediyorum teşekkürler iyi çalışmalar .

    • Öncelikle yorum için teşekkür ederim. Benim kaynak kodu indirip kendi google-services.json dosyanızı dahil ederken paket adını değiştirdiniz mi ? Benim kaynak kodumun paket adı com.mobilhanem.firebasepush . Sende Firrbase consoledan uygulama oluştururken paket adını aynısı mı yaptın ? Yok kendi paket adını yaptıysan kaynak kodun paket adını değiştirmen gerekir.

      • Engin KAN

        yanlış anlaşılma olmasın sizden aldığım proje için json ürettirdim firebaseden , bir tek onu ekledim , eklerken eski dosyanın üzerine yazayımmı diye sordu yaz dedim hepsi bu , bir nokta ekleyip çıkarmadım başka 🙂

        • o zaman firebase de proje oluştururken paket adını com.mobilhanem.firebasepush şeklinde oluşturmazsan çalışmayacaktır.

          • Engin KAN

            şimdi firebase de oluşturduğum projeyi komple sildim firepush diye proje oluşturdum paket adınıda
            “package_name”: “com.mobilhanem.firebasepush” olarak belirledim , hatta adım adım print screen yaptım , ancak malesef yine olmadı , printscreenleri ve projeyi zipleyip size mail atabilirim , eğer yanlışımı bulursanız çok sevinirim burda takılıp kaldım , yardımlarınıza çok ihtiyacım var , tekrardan ilginiz ve alakanız için çok teşekkür ederim.

          • Kusura bakmayın o şekilde yardımcı olamıyoruz.

          • Engin KAN

            Sizi çok rahatsız ettim kusura bakmayın son bir kaç soru sorup olmazsa google’a yazıcam,
            sizin uygulamanızı normal android studio üzerinden çalıştır diyerek test ettim , acaba apk yaparak real cihazamı yüklemem gerekir ? , siz testleri real cihazdanmı yoksa emulator denmi yaptınız ?
            şimdiden çok teşekkür ederim
            başarılarınızın devamını diliyorum…

          • Est. ne rahatsızlığı. Ben testlerimi gerçek cihazda yaptım. Apk yaparaktan kastınızı anlamadım ama zaten uygulamayı Run ettiğinizde oluşan apk cihazınıza yüklenmektedir. Android Studio ‘da Logcat çıktılarını iyi okumanız gerekmektedir. Orada loglarda bişeyler yakalayabilirsiniz.

          • Engin KAN

            Değerli Taha , konu eskisede edindiğim tecrübeyi sizinle paylaşmak isterim ,

            Yukarıdaki denemelerimde hep başarısız olma nedenim çok basit bir detaydan kaynaklanıyormuş
            öncelikle bu FirebaseCloudMessaging servisini kullanacak arkadaşların developer hesaplarını açmış olmaları gerekiyor daha sonra developer olması için gereken ücreti yatırmaları gerekiyor , sonrasında ise benim takıldığım yer burasıydı , bir tane uygulama yazıp google playde yayınlamış olması gerekiyor , eğer daha önce bir uygulama yayınlamadı iseniz bu servisten faydalanamıyorsunuz , Google ile uzun yazışmalarımdan sonra ortaya çıkan sonuç bu oldu , bende ilk önce basit bir El feneri uygulaması yazıp hemen yayınladım google playde , sonra senin yukarıda paylaşmış olduğun uygulamayı yeniden test ettiğimde bu sefer çalıştı , kısaca açıklaması bu şekilde , çok uğraştığım için umarım bu bilgi başka arkadaşların hayatlarını kolaylaştırır,

            başarılarınızın devamını diliyorum iyi çalışmalar…

  • Yusuf

    Android uygulamamdan otomatik bildirim göndermek istiyorum söyle ki vBulletin siteme mobil uygulama yapacağım ben istiyorum ki siteden bir başkasına özel mesaj atıldığınsa gelen kişiye otomatik olarak bildirim gelsin istiyorum bubi nasıl yapabiliriz

  • Alpaslan Kaya

    Merhabalar elinize sağlık çok başarılı olmuş yazınız. Denedim çalışıyor bunu eclipse nasıl uyarlarız acaba ? yardımcı olursanız sevinirim

    • Teşekkür ederim. Eclipse gradle plugin kurman gerekir.
      Aşağıdaki linkte anlatılmış.
      http://www.vogella.com/tutorials/EclipseGradle/article.html

      • Alpaslan Kaya

        Hocam İki gündür eclipse de uygulamanızı çalıştımaya çalışıyorum ama başaramadım eclipse gradle yi yükledim ama olmadı. Eclipse için firebase projeleri araştırdım ama sonuç yok. varsa temel de olsa bir örnek gönderebilir misiniz.?

        • Alpaslan Kaya

          yada bu konuyla ilgili bir makale paylaşmayı da düşünüyor müsünüz?

          • Eclipse ile ilgili bir makale hazırlamayı düşünmüyoruz kusura bakmayın.

  • Engin Karakaya

    Merhaba MyFirebaseInstanceIdService dosyasını nereye ekliyoruz klasör yapısında. yardımcı olursanız sevinirim (not yazılımcı değilim) bir de uzantısı java mı oluyor tşk

    • app klasörünün içine. Evet uzantısı java olacak. Not: Önce androidin temllerini öğrenirsen daha rahat yazarsın uygulamanı.

      • Engin Karakaya

        Yazı ve desteğiniz için teşekkürler Taha Bey, Codecanyondan uygulama almıstım onu editliyorum. push bildirimi yok ekleme için de develope çok para istedi:) geri kalan herşeyi hallettim mobilhanem deki değerli yazarlar sağolsun yazıların da çok faydası oldu

        • Yorum için teşekkür ederiz. Örnek projemizi indiripincelersen daha iyi anlayabilirsin mantığını ve ona göre kendi projene dahil edebilirsin.

          • Engin Karakaya

            mutlaka bakıcam görmemişim en altta imiş

          • Engin Karakaya

            Taha Bey, firebase konsolundan bildirim göndermeyi başardım fakat bildirim iconu beyaz bir kare şeklinde çıktı bende. bu düzeltilebiliyor mu ?

          • Benm uygulamanın iconunu gösteriyor uygulama iconunu değiştirerek orada çıkacak iconu değiştirebilirsiniz.

  • highaxi

    Taha Bey başarılı bir şekilde çalıştırdım kodları. ben sorucevap ta da firebase ile ilgili bir ders hazırlamanızı rica etmiştim, siz de görmezden gelmemişsiniz çok teşekkürler tekrar. benim sorum şöyle; gcm kullanırken cihazların reg_id lerini bir array’ e atıp ‘registration_ids’ => $registatoin_ids, şeklinde toplu olarak bildirim gönderebiliyorduk. henüz firebase için deneyemedim ancak php deki ‘to’ => $token, kısmındaki $token değişkenini gcm deki gibi array olarak yapılandırıp toplu olarak gönderilebiliyor mu notification acaba?

    • Önemli değil işinize yaraması dileğiyle. Evet array koyup göndereceksiniz. Dikkat etmeniz gereken husus tek seferde en fazla 1000 tane notification gönderebilirsiniz.

      • highaxi

        Tekrar merhaba Taha Bey. Firebase de ‘to’ kısmına array koyunca çalışmıyor ve bu kısım string olmalı gibi bir hata dönüyor. eğer birden fazla cihaza notification gönderilmek isteniyorsa GCM de olduğu ‘registration_ids’ => ‘$registrationIds’ şeklinde yazmak gerekiyor php kısmına. benim için sorun teşkil eden diğer bir husus ise onMessageReceived kısmı uygulama background da ise çalışmıyor maalesef. Notification geliyor cihaza fakat gönderdiğim dataları bu kısımda alamıyorum. yaptığım araştırmalar sonuçsuz kaldı. bu konuda eğer sizin bildiğiniz bir çözüm varsa paylaşabilirseniz sevinirim. yazınızda notification sesi çalmadığını söylemişsiniz, bu da ‘notification’ => array(‘title’ => ‘Mobilhanem.com’, ‘body’ => ‘Mobilhanem.com Firebase Push Mesaj’) bu kısma ‘sound’=>’default’ eklenince çözülüyor. araştıran arkadaşlara faydalı olabilir diye tecrübelerimi paylaşmak istedim. kolay gelsin.

  • fahri

    diğer konuda olduğu gibi php+mysql olarak nasıl göndereceğiz?

    • Diğer konuda olduğu gibi yapabilirsin. Burda Php de nasıl gönderileceğini anlattık diğer konudan da mysql tarafna bakabilirsin. Aynı mantık.

  • Şükrü

    Firebase ile ilgili olarak kendi uygulamama entegre etmeye çalışırken aşağıdaki uyarıyı alıyorum nasıl düzeltebileceğim konusunda fikri olan var mı?

    [url=http://hizliresim.com/rEkzVB][img]http://i.hizliresim.com/rEkzVB.png[/img][/url]

    • Şükrü

      Biraz araştırdıktan sonra compile ‘com.google.firebase:firebase-messaging:9.2.1’ //Firebase Meesaging library olarak değiştirdim sorunum çözüldü arkadaşlar aynı problemi yaşayanlar firabase sürümünü değiştirip deneyebilir.

      • gradle’ın güncel olmayabilir. Sorun çözüldüyse problem yok.

  • Pingback: Android Firebase Admob Banner Reklam Eklemek - Mobilhanem()

  • Şükrü

    Notification gönderdiğimde uygulama splash ekrandan açılıp mainActivitye geçiyor ancak ben bildirimi tıklayınca uygulamada tanımladığım başka bir activityden açılmasını istiyorum. “MainActivity” yazan yerleri değiştirip istediğim activity adını yazdım uygulamada denedim ancak yine splash ekranla main den başlıyor. Bu projenin hangi kısımlarında değişiklik yaparsam istediğim activityden açılmasını sağlayabilirim?

    • Dersi iyi okumalısın. Notification mesaj tipinde push gönderirsen ,uygulama arka planda ise firebase kendisi notification çıkarmaktadır. Dolayısıyla bu durumda sen istediğin activity e yönlendiremezsin. Data mesaj tipinde push gönderirsen yapabilirsin istediğini.

  • Pingback: Android Firebase Cloud Messaging ile Push Notification Göndermek – Yakup KALEBAŞI()

  • Pingback: Android Firebase Admob Geçiş (Tam Sayfa) Reklamı Eklemek - Mobilhanem()

  • veli

    merhaba, uygulama update oldugunda onMessageReceived calışıyor mu? Calışmıyorsa nasıl call edebiliriz yeni token almak ve eskisini silmek için? teşekkürler.

    • Token değişeceği zaman onMessageReceived otomatik çağırılıyor. Uygulama update olduğunda değişmiyorsa çağrılmaz zaten.

  • kaan

    bu kodu uygulama her açıldığında çalıştırmam mümkün mü?
    private void sendRegistrationToServer(String token) {
    // token’ı servise gönderme işlemlerini bu methodda yapmalısınız
    }

    • evet mümkün. Açılan Activity’de aşağıdaki gibi token ı alıp, sunucuya gönderebilirsin.
      String token = FirebaseInstanceId.getInstance().getToken();

  • Tarık

    Merhaba bunları kendi uygulamama uygulayamadım acaba videolu şekilde var olan bir uygulamaya firebase ile bildirim gönderebielcek şekilde düzenlemeyi analtırmısınız

    • Kusura bakma, videolu ders yapmıyoruz genel olarak.
      Kolay gelsin.

  • Tekin

    Merhaba
    Detaylı açıklamalar için teşekkürler. Sormak istediğim konu , bildirim gönderdiğimiz cihazdan bildiminin okunduğuna dair geri dönüş alabiliyor muyuz (onay- tarih saat gibi) – whatsapp vari birşey. Firebase bunu sağlıyormu yok sa uygulamaya fazladan kod eklememiz gerekiyor mu?

  • Halit Coşkun

    Merhaba, firebase ile push notification yapmak istiyorum. Herşeyi gösterdiğiniz gibi ayarladım. Çalıştırdım ve notifikasyon atabiliyorum. Fakat bildirime özel stil vermek istiyorum. Mesela gelen iconu başka bir icon resmiyle değiştirmek gibi. Yada notificationBuilder sınıfının setLargeIcon gibi özelliklerini kullanmak. Fakat kodu yazıp çalıştırıyorum. Hiç bir değişiklik olmuyor. Sanki MyFirebaseMessagingService class’ındaki kodlar çalışmıyor. Notifikasyon ayarlarını başka bir yerden alıyormuş gibi. Kod tarafından title ve body kısmını elle dolduruyorum. Yine konsoldan gönderilen mesajın içeriği geliyor. Uygulamayı sildim tekrar denedim daha sonra fabrika ayarlarına döndüm tekrar denedim olmadı. Yardım edebilir misiniz?

    • Mesut Dokumacı

      eğer çözüm bulabildiyseniz paylaşırsanız sevinirim

      • Arkadaşlar bunun neden olduğunu ben derste açıkladım. Öncelikle dersi baştan sona okuyunuz. Sonra zaten çözümü göreceksiniz.
        Dersteki 1-Notification Mesaj başlığı altındaki kısım sorunuzun cevabı.

  • melike elif

    taha bey merhaba, push notificationa tıkladıktan sonra activity yada popup açmak istiyorum. data değil mesaj yolladım. bununla alakalı mı?

    Mesela aşağıdaki kodta yeni activity açmak için Doğru yer aşağıdaki kod mu ? MAin activity yerine başka activiyye yönlendiriyorum açılmıyor.

    public void onMessageReceived(RemoteMessage remoteMessage) {
    String title = remoteMessage.getNotification().getTitle();
    String message = remoteMessage.getNotification().getBody();

    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);
    // PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 1,
    // intent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
    notificationBuilder.setContentTitle(title);
    notificationBuilder.setContentText(message);
    notificationBuilder.setSmallIcon(R.mipmap.image);
    notificationBuilder.setAutoCancel(true);
    notificationBuilder.setContentIntent(pendingIntent);
    NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0,notificationBuilder.build());

    }

  • Mesut Dokumacı

    Merhaba herşey tamam mesaj atabiliyorum fakat databaseye yeni veri girildiğinde kullanıcıya göre php’nin tetiklenmesini nasıl yapacağım

    • Merhaba Mesut, Php konusu bu dersin konusu değil. Ben bu dersimde Android tarafında Push notiification olayını anlatmaya çalıştım ve test amaçlı Push notification atmayı gösterdim. Php ile gönderimi sormak istiyorsan sorucevap.mobilhanem.com adresinden sorabilirsin.

      • Mesut Dokumacı

        Merhaba Taha Bu konu direk php ile mi alakalı tetikleme işlemi androidden yapılması gerekli değil mi

        • Kullanıcıya göre tetiklemen için kullanıcının bilgilerini alman lazım, Token’ı gönderirken yada kullanıcının bilgilerini gönderirken yanında token’ıda göndereceksin. Yani sadece bu uygulama ile olmaz. Uygulamayı geliştirmen lazım.

          • Mesut Dokumacı

            Kullanıcı Token’ı alıp database kayıt ediyorum onda problem yok. Uygulamayı geliştirmem gerektiğinin farkındayım ama tek takıldığım yer Database yeni kayıt eklendiğinde tetikleme işlemi nasıl olacak. Otomatik yapmam lazım

          • Token’i gönderirken kullanıcı bilgilerinide yanında göndereceksin ve kaydedeceksin. database’e kayıt eklendiğinde neyi tetiklemek istiyorsun anlamadım.

          • Mesut Dokumacı

            Kullanıcı Bilgileri dediğini anlamadım ama ben kullanıcının Token bilgisini ,ad ,soyad gibi bilgilerini kayıt ediyorum.
            Ben şuanda servis ile her 20 saniyede json dosyasında veri kontrolü yapıp veri varsa bildirim verdiriyorum aynı bunun gibi servis gibi olmasını istiyorum
            Bir json dosyam var bunun içinde veri varsa bildirim vermesini istiyorum

          • Bunu php ile yapacaksın. Database kısmında tetikleme veya bir başka işlemi Php ile yapman gerekiyor. Androidden token ile kullanıcı bilgilerini database gönderip kaydettirdiysen gerisi webservice’n işi

          • Mesut Dokumacı

            Teşekkürler Taha bey bu konuda soru-cevap kısmında mı sormam gerekli webservice işin bu kadar iyi değilim

  • mehmet

    herşey güzel çalışıyor fakat, şöyle bir sorun var, bir bildirim atıyoruz bu bildirim ekrana yansıyor peşinden ikinci bildirimi attığımızda eski bildirim kayboluyor yenisi gözüküyor. Yani ekrana sadece bir bildirim yansıyor. 5 bildirim attık diyelim bu beş bildirimin de ekranda gözükmesini nasıl sağlayacağız?

    • ayhan

      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
      bu satırdan olabilir. Bu satırı kaldırın.

  • mehmet

    Taha Bey yardımcı olabilir misiniz, çok can sıkıcı bir sorun bu.

  • ayhan

    Merhaba. Paylaşım çok güzel olmuş. Teşekkürler. Ancak php üzerinden gönderme çalışmadı. php sayfasını tarayıcıda açıyorum. Hiç bir bildirim gelmiyor.

  • Ayşe

    Merhaba benim projem de build.gradle dosyaları yok. Nasıl ekleyebilirim.

    • Nasıl build.gradle dosyası yok _ Android Studio kullanmıyor musun ?

  • Bahadır

    Merhaba, kullanıcı token bilgilerini android uygulama olmadan kaydedebileceğimiz bir sistem var mı? Fcm dışında başka bir servis de olabilir. Ya da sadece bildirimler için kullanılabilecek bir android uygulaması… Örneğin uygulamayı indiriyorsunuz site bilgilerinizi giriyorsunuz ve uygulama sizi bu sitenin kullanıcılarına ekliyor. Siz de web üzerinden bu kullanıcılara bildirim gönderiyorsunuz. Böyle bir sistem var mı?

  • Cengiz Bursalioğlu

    Merhaba , firebase consoledan yazdığım mesaj emülatore gelmiyor. Emülatorda uygulama kapalıyken, açıkken, arka planda açıkken denedim bir türlü alamadım bildirimi. firebase dökümandaki adımların hepsini yaptım.

  • Murat

    Merhaba Taha güzel yazı olmuş eline sağlık.
    Tek dikkatimi çeken “Firebase console’dan gönderilen mesajda Notifikasyon sesi çıkmamaktadır.” demişsin ancak gelişmiş ayarlar sekmesinde ses etkin hala getirilebiliyor.

    • Yorum ve Bilgilendirme için teşekkürler.

  • Ayhan Sarı

    Gelelim PHP’den Notifikasyon göndermeye: başlığındaki kodlarla bir php dosyası (örn: push_mesaj.php) oluşturup web sunucusuna yükledim. Daha sonra adres satırına mobil-okul.com/push_mesaj.php yazdığımda, ‘notification’ kısmındaki mesaj bildirim olarak telefonuma mı gelecek?

    • Ayhan Sarı

      Belirttiğim şekilde yaptığımda hiç bir şey olmuyor. Önce android uygulamayı telefonda çalıştırıyorum. Uygulama çalışıyorken, internet tarayıcı adres satırından (http://mobil-okul.com/push_deneme.php) php sayfasına erişiyorum. Herhangi bir bildirim gelmiyor. Sanırım hata oluşuyor. Kodun son satırına;
      $result = curl_exec($ch);
      curl_close($ch);
      print_r($result); kodunu ekledim.

      Sonuç olarak aşağıdaki ekran çıktısını aldım. Hata nerede?

      Unauthorized

      Error 401

    • Ayhan Sarı

      Bu arada, Firebase Consol üzerinden bildirim mesajı gönderebiliyorum. Orada bir sıkıntı yok.

  • alper

    merhaba uygulama kapalı olduğu zaman ya da kullanıcı kapattığında bildirim gönderdiğimde telefona bildirim gelmiyor. Bununla ilgili bir çözüm var mı?

  • MURAT ASLAN

    Merhaba dersiniz çok açıklayıcı ve yararlı oldu.
    Tek takıldığım nokta tokenleri serverda kayıt ediyorum fakat token yenileme olduğunda eskisi ile nasıl değiştireceğim yani tokenle birlikte birde kimlik,Id gibi değişmeyecek bişe kayıt etmem gerekir.Bu konudaki öneriniz nedir.
    Birde token değişme sıklığı nedir acaba burda.
    Tekrardan teşekkürler.

  • Pingback: Android Firebase Veritabanı CRUD İşlemleri - Mobilhanem()

  • Burak GÜNGÖR

    Öncelikle cok tesekkur ederim. Özel olarak bir kullanıcıya uygulama içinden bir bildirim göndermem mümkün mü ? örnek vericek olursam bir toplantı düzenlendiginde toplantıya katılacak olan kullanıcılara bildirim gitsin , kullanıcılar firebase veri tabanında bir yerde tutuyorum ve her cihazın Token bilgisini tutuyorum . Yani kisilerin sicil bilgisine göre cihazlarına bildirim yapabilir miyim ?

    • Merhaba bunu yapabilmen için uygulamanda login ekranı gibi bir ekran olmalıki kullanıcı bilgilerini alıp elindeki token ile eşleştrebilesin.