firebase registration_id geçerlilik süresi

Rapor et
Soru

Bu soru rapor edilmelidir hissediyorum neden kısaca açıklayınız.

Rapor et
İptal

Merhabalar,
Bildiğiniz üzere firebase ile push notification gönderiminde, bildirimi göndermek için oluşturulan token ı <pre>FirebaseInstanceId.getInstance().getToken();</pre> kodu ile alıp uzak sunucumuza kaydediyoruz.

Fakat farkettim ki, tam olarak zaman söyleyemiyorum ama bir süre sonra (yaklaşık 2-3 saat, bilemediniz 6 saat) bu token ı kullanarak server üzerinden notification göndermeye çalıştığımda (IOS da daha kısa bir süre sonra) {“multicast_id”:xxxxxxxxxxxxxxxxx,”success”:1,… şeklinde cevap dönmesine rağmen bildirim cihaza ulaşmıyor.

Cihazda uygulamam üzerinden logout-login işlemi yaptıktan sonra (Çünkü token ı bu işlem esnasında güncelliyorum sunucumda) tekrar gönderdiğimde ise ulaşıyor bildirim.

Yaptığım bazı araştırmalarda bu token ın 3600 saniye (1 saat) geçerli olduğuna dair bazı bilgilerle karşılaştım, ama ingilizcem pek yeterli olmadığı için tam da anlayamadım.

Bu konuda bilgisi olan ve eğer token geçerlilik süresi gerçekten sınırlı ise bu konuya bir çözüm bulabilmiş ya da bulabilecek olan arkadaşlar yardım ederlerse sevinirim.

Şu an için, token ı alıp SharedPreference (ya da userdefaults) a kaydediyor, daha sonra her açılışta FirebaseInstanceId.getInstance().getToken(); dan dönen token ile bunu karşılaştırıyor, tutmuyorsa server da güncelliyorum.

Ama takdir edersiniz ki, kullanıcı akşam yatıp sabah kalktığında token geçersiz oluyor ve bildirim gönderilemiyor. Ta ki uygulamayı tekrar başlatana kadar.

Google ın böyle bir saçmalık yapmayacağını düşünüyorum ama araştırma ve denemelerimden sonuç alamadım.

Uygulama tarafındaki kodlarda da bir sorun yok çünkü dediğim gibi bildirim alabiliyorum.

Teşekkürler…

Cevaplandı 0
Android 3 sene 5 Cevap 819 görüntüleme Intern 0

Yazar HakkındaIntern

Cevaplar ( 5 )

  1. Avatar

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    Debug yaparken sürekli uygulama silinip yüklendiği için yeni bir token atanıyo olabilir belki ama bu yüzden olacağınıda sanmıyorum.

    ama işini garantiye almak için onTokenRefresh methodunda üye id ile tokeni sunucuya gönderip token değiştiğinde sunucuda da güncelleyebilirsin.

  2. Taha Kırca

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    Burda olay token in değişmesi değil. Sen token’in değişip değişmemesiyle ilgilenmiceksn. Değişse zaman zaten firebase method tetikliyor.
    FirebaseInstanceId.getInstance().getToken() deyip token’i sunucuna gönderme işlemini sadece onTokenRefresh() metodu içinde yapacaksın. Firebase token i ilk oluşturduğunda ve token değiştiğinde bu methodu kendisi tetikleyecektir.
    Bu dersimi iyice okursan bu konudan bahsettim.
    https://www.mobilhanem.com/android-firebase-cloud-messaging-ile-push-notification-gondermek/

    Yukarıdaki kodlar bir servis class’ı yani arka plandada kendisi çalışır. Diyelim ki token değişti otomatik olarak onTokenRefresh tetiklenir. Sende sendRegistrationToServer metodu ile yeni tokeni server’ına gönderebilirsin.

    En iyi cevap
    • Avatar

      Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

      Rapor et
      İptal

      Yani MyFirebaseInstanceIDService class ı sadece uygulama çalıştırıldığında çalışmıyor, doğru mu anladım acaba? Örneğin kullanıcı 3 gün hiç açmadı uygulamamı ve o arada token değişti. Bu Class kendi kendine çalışıyor mu uygulama kapalı olsa da?

  3. Taha Kırca

    Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

    Rapor et
    İptal

    Aynen öyle. Ayrıca uygulamayı ilk açtın token’in oluşması 3 4 sn sürebiliyor. Sen uygulama açılır açılmaz token’i alıp sunucuya gönderiyorsun. Ancak token daha oluşmadığı için sen boş bir değer gönderiyorsun. Sen işlemlerini MyFirebaseInstanceIDService e bırakırsan zaten token oluştuğu zaman sendRegistrationToServer metotunu çağıracaktır. Sen sadece token gönderme servisni yazacaksın.

    • Avatar

      Bu cevap rapor edilmelidir hissediyorum neden kısaca açıklayınız.

      Rapor et
      İptal

      Çok teşekkür ederim. Ben InstanceIdService class ının background da token ı dinlediğini bilmiyordum. Uygulama çalıştırıldığında eğer token refresh olduysa çağırılıyor diye düşünmüştüm. Ama adı üzerinde Service aslında 🙂 Biliyordum google ın böyle saçma bir iş yapmayacağını. Tekrar çok teşekkürler.

Cevap bırak

Gözat

KOD PAYLAŞIRKEN DİKKAT!!!!

HTML kod paylaşmak için

<pre class="html">HTML KOD</pre>
XML kod paylaşmak için
<pre class="xml">XML KOD</pre>
Diğer dillerde(php,java,android,javasvript,c# vs..) kod paylaşmak için
<pre>KOD</pre>
tagları arasında paylaşmayı unutmayın.