![]() |
|
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ü: ![]() Not: Vermiş olduğum JSon kod örneğini eklerken, formumuzda JSON syntax highlight (kod biçimlendirme) özelliğinin olmadığını fark ettim. 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.
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, 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, 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. 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. |