Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 3 oy
  • 1
  • 2
  • 3
  • 4
  • 5
FMX Android Push Notification Sorunu
#1
Merhaba Arkadaşlar,

Hazırlamaya çalıştığım uygulamamda Google'ın Firebase Cloud Messaging servisini kullanıyorum. Uygulamam açık iken bildirim ve içeriği sorunsuz bir şekilde gelmekte, ancak uygulama kapalı iken sadece içi boş uygulama adını içeren bir bildirim gelmekte.

OnReceiveNotification procedure'um içinde;


ShowAndroidNotification(ServiceNotification.DataObject.GetValue('gcm.notification.body').Value,ServiceNotification.DataObject.GetValue('gcm.notification.title').Value, 0);
Yukarıdaki komut ile gelen bildirimin içeriğini alıyorum ve ShowAndroidNotification procedure ile gösteriyorum. Uygulama çalışırken bu verilerin gelmesine rağmen kapalıyken sadece bildirim olarak geliyor başlık ve içeriği almıyor.

Bu konu ile ilgilenen arkadaşlar var ise yardımcı olabilir mi? Anlaşılmayan kısım olursa daha detaylı bilgi verebilirim.
Cevapla
#2
Merhaba,
Google FCM Servisi başlık kısmı için title, içerik kısmı için ise message anahtar kelimelerini kullanıyor. 
Notification veya Data mesaj tipinde bu iki anahtara bir değer vermeniz durumunda uygulama kapalı iken veya arka planda iken başlık ve mesaj bilgisi görüntülenecektir.
Aşağıda bununla ilgili bir örnek paylaşıyorum.  
{
 "to": "APA91bEVD4heG9FXU8ImZGA_XN96Aw_CjW_XE7_TokenDeğeri",
 "data": {
   "title": "Mesaj Başlığımız",
   "message_id": "msgId1",
   "message": "Merhaba, Nasılsınız? Bu mesajın metin kısmıdır!",
   "image-url": "http://www.delphican.com/images/logo.png"
 }
}

Uygulama kapalı iken gelen Push Notification ekran görüntüsü:

fcm1.png

Not: Vermiş olduğum JSon kod örneğini eklerken, formumuzda JSON syntax highlight (kod biçimlendirme) özelliğinin olmadığını fark ettim.  Undecided
Bu vesile ile JSon kod biçimlendirmeyi de kod editörümüze eklemiş bulundum. 
Json kod biçimlendirmeyi kullanmak için mesaj editörünün sağ üst köşesinde bulunan Kod Biçimlendirme butonuna (süslü parantezler), tıklayıp JSon kodunu yapıştırmanız yeterli olacaktır.

json1.png
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(24-04-2018, Saat: 17:24)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Google FCM Servisi başlık kısmı için tittle, içerik kısmı için ise message anahtar kelimelerini kullanıyor. 
Notification veya Data mesaj tipinde bu iki anahtara bir değer vermeniz durumunda uygulama kapalı iken veya arka planda iken başlık ve mesaj bilgisi görüntülenecektir.
Aşağıda bununla ilgili bir örnek paylaşıyorum.  
{
 "to": "APA91bEVD4heG9FXU8ImZGA_XN96Aw_CjW_XE7_TokenDeğeri",
 "data": {
   "title": "Mesaj Başlığımız",
   "message_id": "msgId1",
   "message": "Merhaba, Nasılsınız? Bu mesajın metin kısmıdır!",
   "image-url": "http://www.delphican.com/images/logo.png"
 }
}

Merhaba Hocam,
Yanıtınız için teşekkür ederim, şurada bir yazım yanlışımız mı var acaba, kırmızı ile işaretlediğim "tittle" ve Json kod bloğu içindeki "title" ifadelerinde "t" sayısında farklılık mı var? 
Sorunu şu şekilde çözdüm bende fcm'nin örneklerindeki yapıya göre
'gcm.notification.message'
'gcm.notification.title'
gcm.notification.body
'gcm.data.message'
'gcm.data.title'
gcm.data.body

komutlarının hepsini kullanmama rağmen alamayınca bende, gelen json'u inceledim, bana gelen jsondan doğrudan title ve message parametreleri ile çektim bu şekilde aldı. Zaten uygulamama bildirimleri Firebase Console üzerinden göndermeyeceğim kendi serverımdan fcm sunucularını kullanarak göndereceğim için yapıyı kendim oluşturuyorum. O sebeple problem olmadan alabildim.
Ancak bu alamama durumum kafama takıldı, sanırım müsait ilk vaktimde farklı bir uygulama açıp bu bildirim meselesinde neden alamadığımı inceleyeceğim ve sizin tavsiyelerinizi uygulayacağım inşaallah.
Teşekkürler, vesselâm.
Cevapla
#4
Uygulama arka planda çalışmazken gelen push bildirimlerini almak ve cihaza yerel bir notification oluşturmak için ortada program olmadığını hatırlayalım. 

Zaten firebase bu işlemi cihaza otomatik yaptırıyor. Tıklayınca da ancak yazılım o zaman açılıyor.

Burada suç sizin yerel kodlarınızda değil. 

Gönderilen push bildirimi içerisindeki notification başlıklı array içerisindeki bilgi bu işlemden sorumlu.


Şu yapıyı bir inceleyin
      strJson := '{'
                +'   "priority": "normal", '
                +'   "registration_ids":'
                +'   [';
                       while DeviceList.Count > 0 do
                       begin
                         strJson := strJson + '"' + DeviceList[0] + '"';
                         DeviceList.Delete(0);
                         if DeviceList.Count > 0
                           then strJson := strJson + ',';
                       end;
      strJson := strJson
                +'   ],'
                +'   "notification": {' // notification mesaj tipi
                +'       "body": "'  + strMesaj   + '",'
                +'       "title": "' + strMesajID + '",'
                +'       "icon" : "'+FPhpPush+'mesaj.png",'
                +'       "color": "#f45342"'
                +'   },'
                +'   "data": {' // data mesaj tipi
                +'     "id": "'      + strMesajID + '",'
                +'     "message": "' + strMesaj   + '",'
                +'     "site_adi": "armanlab.com",'
                +'     "link": "http://www.armanlab.com"'
                +'   },'
                +'   "collapse_key": "Bilgi_Mesaj"'
                +'}'
                ;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#5
(26-04-2018, Saat: 09:37)rafikhasguller Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(24-04-2018, Saat: 17:24)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Google FCM Servisi başlık kısmı için tittle, içerik kısmı için ise message anahtar kelimelerini kullanıyor. 
Notification veya Data mesaj tipinde bu iki anahtara bir değer vermeniz durumunda uygulama kapalı iken veya arka planda iken başlık ve mesaj bilgisi görüntülenecektir.
Aşağıda bununla ilgili bir örnek paylaşıyorum.  
{
 "to": "APA91bEVD4heG9FXU8ImZGA_XN96Aw_CjW_XE7_TokenDeğeri",
 "data": {
   "title": "Mesaj Başlığımız",
   "message_id": "msgId1",
   "message": "Merhaba, Nasılsınız? Bu mesajın metin kısmıdır!",
   "image-url": "http://www.delphican.com/images/logo.png"
 }
}

Merhaba Hocam,
Yanıtınız için teşekkür ederim, şurada bir yazım yanlışımız mı var acaba, kırmızı ile işaretlediğim "tittle" ve Json kod bloğu içindeki "title" ifadelerinde "t" sayısında farklılık mı var? 
Sorunu şu şekilde çözdüm bende fcm'nin örneklerindeki yapıya göre
'gcm.notification.message'
'gcm.notification.title'
gcm.notification.body
'gcm.data.message'
'gcm.data.title'
gcm.data.body

komutlarının hepsini kullanmama rağmen alamayınca bende, gelen json'u inceledim, bana gelen jsondan doğrudan title ve message parametreleri ile çektim bu şekilde aldı. Zaten uygulamama bildirimleri Firebase Console üzerinden göndermeyeceğim kendi serverımdan fcm sunucularını kullanarak göndereceğim için yapıyı kendim oluşturuyorum. O sebeple problem olmadan alabildim.
Ancak bu alamama durumum kafama takıldı, sanırım müsait ilk vaktimde farklı bir uygulama açıp bu bildirim meselesinde neden alamadığımı inceleyeceğim ve sizin tavsiyelerinizi uygulayacağım inşaallah.
Teşekkürler, vesselâm.

Kırmızı ile işaretlediğiniz sözcüğü yanlış yazmışım (İngilizce bilgi seviyemden kaynaklıdır). Düzelttim.

(26-04-2018, Saat: 09:47)mrmarman Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlUygulama arka planda çalışmazken gelen push bildirimlerini almak ve cihaza yerel bir notification oluşturmak için ortada program olmadığını hatırlayalım. 

Zaten firebase bu işlemi cihaza otomatik yaptırıyor. Tıklayınca da ancak yazılım o zaman açılıyor.

Burada suç sizin yerel kodlarınızda değil. 

Gönderilen push bildirimi içerisindeki notification başlıklı array içerisindeki bilgi bu işlemden sorumlu.

Muharrem hocam, 
Yukarıda vermiş olduğum Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol'u doğrudan herhangi bir araçla (Push Notification sunucusu) gönderdiğinizde, uygulama kapalı da olsa, arka planda da olsa (ekran görüntüsünü paylaştığım cihazda da görüldüğü gibi) message ve title bilgilerini içeren bildirim system try'a düşüyor. Uygulama ön planda ise sizin de belirttiğiniz gibi gelen JSon bir receive metodu ile alınarak lokal notification veya doğrudan bir mesaj şeklinde son kullanıcılara yansıtılabilir. 
Bu durumda @rafikhasguller in bahsettiği sorunun farklı bir durumdan kaynaklı olduğunu düşünüyorum.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#6
Cevabımı aşağıda belirtilen şekilde yazdım. 
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Sadece Data yeterli ama ancak program ön planda iken. Program çalışmıyorken notification array önceliği var. Data kısmı da yedekte duruyot, onu program açılırken startup notifications ile çekiyoruz. 

Alıntı:App behavior when receiving messages that include both notification and data payloads depends on whether the app is in the background or the foreground—essentially, whether or not it is active at the time of receipt.
  • When in the background, apps receive the notification payload in the notification tray, and only handle the data payload when the user taps on the notification.

  • When in the foreground, your app receives a message object with both payloads available
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Notification gonulali 3 148 11-08-2018, Saat: 21:32
Son Yorum: Fesih ARSLAN
  Tokyo Android Kurulumunda aldığım hata hakkında adelphiforumz 8 228 01-08-2018, Saat: 10:56
Son Yorum: Fesih ARSLAN
  [Ödüllü Soru] FMX Android projede input alan ve sanal klavye konumu Abdullah ILGAZ 1 142 20-07-2018, Saat: 12:37
Son Yorum: ssahinoglu
  Rad Studio C++ Android iile Editte Barkod Okutma Hatası Ahmet YILMAZ 1 437 19-07-2018, Saat: 17:01
Son Yorum: Abdullah ILGAZ
  android media player arsl01 2 131 19-07-2018, Saat: 07:55
Son Yorum: arsl01



Konuyu Okuyanlar: 1 Ziyaretçi