Soru & Cevap

F.Base veri eklendiğinde belirli cihazlara bildirim gönderme

09.10.2019 - 10:02

Bir uygulamam var fakat kullanıcılar için üye olma sistemim yok benim istediğim eğer kullanıcı uygulama üzerinden anlık bildirimleri kabul ederse firebase realtime database her ver eklendiğinde bildirim gitmesi. Aslında bunu arka planda çalışan bir Service ile başardım fakat bir süre istediğim gibi çalışsa da uygulama kapanıp 20-25 dk gibi bir süre geçince sanırım isletim sistemi otomatik kapatıyor background servisimi .Firebase Messaging servis ile ilgili araştırmalar yaptım fakat bir türlü aradığımı bulamıyorum dediğim gibi mesela veri tabanına bir veri eklendi kullanıcılara Bir veri eklendi diye mesaj gidecek istediğim olay bu çok uzun süredir araştırıyorum son çare buraya yazıyorum sizce ne yapmalıyım servis yerine retrofit,web service yapısının üzerine mi gitmeliyim nasıl halledebilirim bu sorunu ? Şimdiden yardımcı olacak herkese çok teşekkürler.

103 Görüntülenme

5 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-112887-1506457490.jpg
recepözen
11.10.2019 - 10:08

Merhaba attığınız mesajı geç gördüm müsait iseniz yardımcı olmak isterim

picture-212675-1544546140.png
yasinege1328
11.10.2019 - 01:52

Attığınız link yardımıyla Cloud Functions kurulumunu yapıyorum fakat sizinde başınıza geldi mi bilmiyorum firebase de projemin adı SamsunRadarProject diye geçiyor verilen talimatlara göre;

mkdir samsunradarproject

cd samsunradarproject 

firebaselogin 

ve en son firebase initfunction dedigimde masaüstündeki hali hazır daki android projemin olduğu klasöre yazmak istiyor verileri seçeneklerden yeni bir klasör oluştur dersem de firebase de farklı bir proje olusturuyor bu başına geldimi ne yapmam gerek ? zaten yayınlanmış bir uygulamayı bozmak istemiyorum açıkcası yardımcı olursan sevinirim :)

Recep Özen
11.10.2019 - 11:15
Tabi yardımcı olmak isterim burası benim discord adresim buradan daha kolay anlatırım diye düşünüyorum https://discord.gg/JQBH9f
picture-112887-1506457490.jpg
recepözen
10.10.2019 - 12:53

Ne demek bende çok hakim değilim sizin gibi ihtiyacım olmuştu tam bir hafta araştırma sonucu bulabilmiştim. Yine yardıma ihtiyacınız olursa yardım etmekten memnun olurum.

picture-212675-1544546140.png
yasinege1328
10.10.2019 - 12:50
Java script bilmiyorum ama çok teşekkür ederim üzerimden büyük bir yük aldınız şuan derse gidiyorum dediğiniz şeyleri araştırdım tam aradığım konu olduğunu gördüm akşam sorunumu çözmeye çalışacağım , cevabınız için çok teşekkürler
picture-112887-1506457490.jpg
recepözen
10.10.2019 - 12:31

Burada kullanmanız greken Fibase Function eğer javascript bilginiz var ise bu konu sizin için çok zor olmayacaktır. Genel olarak anlatırsam Firebase in function özelliğini kullanarak veri tabanınıza anlık veri kayıtlarını yakalaya biliyorsunuz. Daha sonrda Firebase Cloudmessaging kullanarak mesaj atabiliyorsunuz. Ben bir uygulamamda bunu kullanmıştım. Gayet verimli çalışıyor. Öğretici olması açısından https://www.youtube.com/watch?v=7IkUgCLr5oA&list=PLl-K7zZEsYLkPZHe41m4jfAxUi0JjLgSM&index=1 bu video listesini incelemenizi öneririm. Firebase fumctionu öğrenmenizde yardımvı olcaktır.

Ayrıca aşağıda paylaştığım bir typescript kodu tam da bu işi yapıyor. Ancak ufak bir nokta var kullanıcılarınızı firebase cloudmessaging te bir konu ya üye etmeniz gerek bunu unutmayın.


import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
admin.initializeApp()

export const sendPush =
    functions.firestore.document('PublicChat/{mesaj}').onCreate(async (change, context) => {
        //const mesaj = context.params.mesaj
        const sender = change.data();
        const payload = {
            data: {
                title: String(sender.pushUserNme) + ' bir mesaj gönderdi.',
                body: String(sender.text)
            }
        }
        //console.log(payload)
        return admin.messaging().sendToTopic("PublicChat", payload)
            .catch(function (error) {
                console.log('Error subscribing to topic:', error);
            });
    })