Delphi Can
FMX Android Push Notification Sorunu - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7)
+--- Konu Başlığı: FMX Android Push Notification Sorunu (/showthread.php?tid=2146)



FMX Android Push Notification Sorunu - rafikhasguller - 13-04-2018

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.


Cvp: FMX Android Push Notification Sorunu - Fesih ARSLAN - 24-04-2018

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


Cvp: FMX Android Push Notification Sorunu - rafikhasguller - 26-04-2018

(24-04-2018, Saat: 17:24)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
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.


FMX Android Push Notification Sorunu - mrmarman - 26-04-2018

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"'
                +'}'
                ;



Cvp: FMX Android Push Notification Sorunu - Fesih ARSLAN - 26-04-2018

(26-04-2018, Saat: 09:37)rafikhasguller Adlı Kullanıcıdan Alıntı:
(24-04-2018, Saat: 17:24)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
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ı: 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.

Muharrem hocam, 
Yukarıda vermiş olduğum JSon'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.


FMX Android Push Notification Sorunu - mrmarman - 26-04-2018

Cevabımı aşağıda belirtilen şekilde yazdım. 
bkz. bu link

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