Ana içeriğe atla
OneSignal’den gönderdiğiniz push bildirimleri önce farklı push servislerine (örneğin, FCM, APNS, HMS) gitmelidir. Push servislerinden, mesajlar her kullanıcının cihazına teslim edilir. OneSignal dashboard’unuzda Push mesaj raporlarında:
  • Delivered push bildiriminin push servislerine başarıyla teslim edildiği anlamına gelir. Push servislerinden yanıt alırız.
  • Confirmed cihazdaki OneSignal SDK’nın bildirimi aldığı anlamına gelir. Bu durumu doğrudan her kullanıcının cihazından alırız.
Bildiriminiz “Delivered” olduğu halde “Confirmed” olmadıysa ve cihazda görünmediyse (veya geciktiyse), bu kılavuz nedenini gidermenize yardımcı olur.

Ön koşullar

Etkili bir şekilde sorun gidermek için aşağıdakileri toplayın:
Yalnızca External ID’niz varsa, Device Type, Last Session ve IP Address gibi filtreler kullanarak Audience > Subscriptions sekmesinde aboneliği arayın.

Cihaz düzeyinde sorunlar

Kullanıcı tarafından cihazda kontrol edilen ve push bildirim teslimatını etkileyebilecek öğeler.

Push izni ve abonelik durumu

Cihazda, uygulamanın Bildirim Ayarlarını kontrol edin. Bildirim izinlerinin etkin olduğunu doğrulayın. Ardından uygulamayı açın. SDK’mızın abonelik durumunu ve diğer özellikleri güncellemesi için cihazdaki uygulamayı açmanız zorunludur. OneSignal dashboard’unuzda Audience > Subscriptions:
  • Subscription ID’yi arayın
  • Subscription ID’niz yoksa, External ID’yi arayarak ve/veya Device Type, Last Session ve IP Address’e göre filtreleyerek bulmayı deneyin.
Push Subscription’ın “Subscribed” push durumuna sahip olduğunu görmelisiniz.

Android kategorileri devre dışı

Cihaz bir Android ise, Settings App > Notifications > Your App bölümünü kontrol edin, “Show notifications” etkin ve altındaki tüm kategorilerin etkin olduğunu görmelisiniz. Devre dışı bir kategoriniz varsa, o kategoriden bildirim alamazsınız. Bu örnekte, Abandoned Cart - Urgent Kategorisi kapalı. Bu kategori bir bildirimde kullanılırsa, cihaz bildirimi almayacaktır.

Resim, cihazdaki uygulamanız için devre dışı bırakılmış kategoriyi gösterir, bu nedenle o kategori ile gönderirken, cihaz bu push'u almayacaktır.

Kategori ayarlanmamışsa, OneSignal varsayılan bir “Miscellaneous” kategorisi kullanır. Devre dışı görüyorsanız bu kategorinin etkin olduğundan emin olun. Daha fazla ayrıntı için Android Bildirim Kategorileri.
Bazı Samsung cihazları, uygulamalar için kategorileri varsayılan olarak otomatik olarak kapatır. Bu reddit gönderisinde ve Android Police ve makale 2 tarafından hazırlanan bu makalelerde ayrıntılara bakın.
Kullanıcılarınızı bu konuda eğitmeye çalışmak için, Samsung kullanıcılarını hedeflemek ve kategorileri etkinleştirme talimatlarını görüntülemek için uygulama içi mesajlar kurabilirsiniz. Örnek: Belirli Android üreticilerini ve cihazları hedefleme adlı bir öğretici sağlıyoruz.

Android uygulaması Zorla Durduruldu

Bir Android uygulaması Zorla Durdurulduğunda, cihaz o uygulama için push bildirimlerinin görüntülenmesini engelleyecektir. Pil ömrünü tasarruf etmeye yardımcı olmak için, Xiaomi, Huawei, Samsung ve diğerleri gibi bazı Android üreticileri, kullanıcı uygulamayı kaydırdığında (Facebook, Whatsapp, Gmail vb. gibi daha büyük uygulamaları atlayarak) uygulamanızı Zorla Durdurabilen agresif arka plan işlem yönetimi uygulamıştır. Bu konuda çevrimiçi olarak çok fazla bilgi var: https://dontkillmyapp.com/ ve bu konuda bir blog yazısı yazdık ve bu Reddit’te çok tartışma yarattı. Cihaza bağlı olarak, bunun olmasını önlemek için aşağıdaki adımları atmanız gerekebilir:
  1. Arka Plan Etkinliğine İzin Ver:
    • Ayarlar > Uygulamalar > Uygulamanız > Pil > Arka plan etkinliğine izin ver.
  2. Uyuyan Uygulamalar Özelliğini Devre Dışı Bırak:
    • Ayarlar > Pil ve Cihaz Bakımı > Pil > Arka Plan Kullanım Limitleri > Uyuyan Uygulamalar > Uygulamanızı bu listeden kaldırın.
  3. Uygulamayı Son Uygulamalarda Kilitle:
    • Uygulamanızı açın, ardından Son Uygulamalar düğmesine dokunun.
    • Uygulamanızı bulun, uygulama penceresine dokunup basılı tutun, ardından Bu uygulamayı kilitle (bazı Samsung modellerinde mevcuttur).
  4. Uygulama için Otomatik Başlatmayı Etkinleştir (Bazı Cihazlarda):
    • Ayarlar > Uygulamalar > Uygulamanız > İzinler > Otomatik Başlatma > Etkinleştir.
  5. Uygulama için Uyarlanabilir Pil Optimizasyonunu Devre Dışı Bırak:
    • Ayarlar > Pil ve Cihaz Bakımı > Pil > Daha Fazla Pil Ayarları > Uyarlanabilir Pil > Kapat (veya uygulamanızı hariç tut).
Test ederken, bildirim gönderirken uygulamanızın çalıştığından emin olun. Mesajı aldığınızı doğrulamak için Debug Günlüğü Alma’ya bakın.

Ağ bağlantısı

Cihazların push bildirimleri alabilmesi için çevrimiçi olması gerekir. Cihazınız kapalıysa, uçak modundaysa, kararsız veya internet bağlantısı yoksa, uygun bir bağlantı yapılana kadar push gösterilmeyecektir. Ayrıntılar için Time To Live (TTL) Parametresi’ne bakın.

Wifi bağlantısı, Güvenlik Duvarı veya VPN

Bağlandığınız ağı / WiFi’yi kontrol edin çünkü Apple veya Google sunucularına bağlantınızı kapatmış olabilir. Internet bağlantınızı devre dışı bırakmayı ve yeniden etkinleştirmeyi deneyin. Ayrıca wifi olmadan hücresel veri kullanarak deneyin. İnternet’e gelen veya giden trafiği kısıtlıyorsanız, push servisleriyle bağlantıya izin verecek şekilde yapılandırmanız gerekir.

Rahatsız etmeyin & odaklanma modları

Cihaz bir “Rahatsız Etmeyin” veya “Odaklanma” modu kullanıyorsa, bildirimlerin görüntülenmesini engelleyebilir veya bildirimleri uygulamanız için diğer bildirimlerden farklı şekilde gruplandırabilir. Odaklanma modu gruplanmış bildirimlerini kaydırırsanız, uygulamanız için cihazın bildirim merkezindeki zaten gruplanmış bildirimlerde daha sonra görünmeyecekler. Bu modları cihazda kontrol edin ve devre dışı bırakın.
  • iOS: Ayarlar > Bildirimler > Odaklanma Modu
  • Android: Ayarlar > Bildirimler > Odaklanma Modu
Ardından kendinize bazı test bildirimleri gönderin.

Bildirim gruplama davranışı

Odaklanma Modlarıyla birlikte, farklı Android sürümlerinin kendi bildirim gruplama davranışı olabilir. Deneyebileceğiniz çözümler:
  1. OneSignal dashboard’unuzda veya kod kullanarak Android bildirim kategorileri oluşturmayı deneyin. Ardından bu ID’yi tüm bildirimlerinizde ayarlayarak bunun herhangi bir etkisi olup olmadığını görün.
  2. Cihaza özel ayarları gözden geçirin: Cihazda, cihaza özel gruplama seçenekleri için Ayarlar > Bildirimler > Gelişmiş ayarlar’ı kontrol edin.
  3. Bildirim limitlerini kontrol edin: Bu özel cihazda uygulamanız için pil optimizasyonu veya uygulama uyku özelliklerinin etkin olup olmadığını doğrulayın.

Düşük güç modu & pil optimizasyonu

iOS cihazları: Test ederken düşük güç modunu devre dışı bırakın veya cihazı şarj edin. Android cihazları: Cihaz üreticisine ve işletim sistemi sürümüne bağlı olarak “Pil Optimizasyonu” ayarları için birkaç farklı ad vardır. Pil Ayarlarında, uygulamayı “Unrestricted” veya “Not Optimized” olarak ayarlayın. Bu ayarınız yoksa, Battery Optimization veya Power Saving Mode veya Energy Saving veya Background usage limits veya Adaptive Battery Settings arayın ve uygulama için veya test ederken devre dışı bırakın.

Emülatör tuhaflıkları

Emülatör cihazınızın her ikisine de ihtiyacı var:
  1. Google Play Services (Google Play Store) yüklü olmalı
  2. Soğuk önyükleme ile başlamalı
  • Android Studio Device Manager’ı açın
  • Cihazınızı seçin, Google Play Store’un yüklü olduğundan emin olun ve Edit’e tıklayın
  • Additional Settings veya More düğmesine gidin
  • Boot option’ı Cold Boot olarak ayarlayın
  • Değişiklikleri kaydedin ve emülatörü yeniden başlatın

Push gönderme

Push bildirimleri gönderirken kontrol edilecek yaygın şeyler.

Cihaz mesaj kitlesinde değil

Aboneliğiniz mesajın hedeflenen kitlesine dahil edilmemiş olabilir. Segmentler veya filtreler kullanıyorsanız, aboneliğinizin kriterlere uyduğundan emin olun. External ID veya diğer takma adları hedefliyorsanız, bunun ayarlandığını ve doğru olana gönderdiğinizi kontrol edin.

Collapse ID

Mesajlarınıza bir Collapse ID ekliyorsanız, en yeni bildirim aynı ID’ye sahip eski bildirimlerin yerini alacaktır. Bunu ayarlamadığınızı veya değiştirmek istediğiniz bildirimler için doğru şekilde ayarladığınızı kontrol edin. Ayrıntılar için Bildirimleri kaldır & TTL bölümüne bakın.

Android Doze modu, öncelik & önceliği düşürülmüş (daraltılmış) mesajlar

Android’in güç tasarruf özellikleri (Doze modu ve App Standby) bildirimleri geciktirebilir veya engelleyebilir. Bu modlar, cihaz fişten çekildiğinde ve bir süre hareketsiz kaldığında otomatik olarak devreye girer. Cihaz bu modlardaysa, yüksek öncelikli mesajlar göndermek uygulamayı uyandıracaktır. Ancak, çok fazla göndermek bildirimlerinizin önceliğinin düşürülmesine ve normal öncelikle gönderilmesine neden olabilir. FCM şunu belirtir:
Android’deki yüksek öncelikli mesajlar, zamana duyarlı, kullanıcı tarafından görülebilir içerik için tasarlanmıştır ve kullanıcıya yönelik bildirimlere yol açmalıdır. FCM, mesajların kullanıcıya yönelik bildirimlere yol açmadığı bir model algılarsa, mesajlarınız normal önceliğe düşürülebilir veya Google Play Services tarafından işlenmek üzere devredilebilir.

Geliştiriciler: Kodu engelleme veya bildirimleri kaldırma

OneSignal ön plan bildirim önleme

SDK’mız bir Foreground Event Listener yöntemine sahiptir. Bu yöntem içinde event.preventDefault() çağırabilirsiniz, bu da uygulama açıkken bildirimin gösterilmesini engelleyecektir. Test ederken, bunun bildirimleri engellemediğini doğrulamak için uygulamanın arka planda veya kapalı olduğundan emin olun.

Android Service Extension bildirimleri engelliyor

Android Notification Service Extension’ı kurduysan bu, bildiriminizin uygulamaya giriş noktasıdır. event.preventDefault() yöntemiyle bildirimleri engelliyor olabilirsiniz. Bunun kullanılıp kullanılmadığını ve hangi koşullar altında kullanıldığını görmek için kodunuzu kontrol edin.

iOS UNUserNotificationCenterDelegate ön planda bildirimleri engelliyor

iOS UNUserNotificationCenterDelegate’i kurduysanız, iOS cihazının ön plandayken bildirimi göstermesini engelleyen kodunuz olabilir. Bu özel kodu kaldırın ve bunun yerine SDK’mızın Foreground Event Listener yöntemini kullanın.

iOS rozet temizleme

Rozet temizleme bildirimleri etkileyebilir. Bir uygulama rozetleri temizlediğinde Bildirim Merkezi’nden mevcut bildirimleri kaldırabilir. OneSignal’in SDK’sı uygulama açıldığında rozetleri de temizler, bu da bildirimleri kaldırır. Bunu nasıl önleyeceğinize dair ayrıntılar için Rozetler bölümüne bakın.

Bildirimleri kaldırma

Apple, Bildirim Merkezi’nden uygulamanızın teslim edilmiş tüm bildirimlerini kaldırmak için removeAllDeliveredNotifications() yöntemini sağlar. Apple’ın removeAllDeliveredNotifications() ile ilgili geliştirici dokümantasyonuna bakın.

Firebase çakışmaları

Firebase Messaging SDK kullanıyorsanız, Android Manifest dosyanızda aşağıdaki satırı kontrol edin. Bu bildirimlerinizi engelliyor olabilir.
com.google.firebase.iid.FirebaseInstanceIdReceiver

Test

Uygulamaya ayrıntılı hata ayıklama yöntemlerimizi eklemek için Debug Günlüğü Alma’yı takip edin. Uygulamayı arka planda çalıştırın ve kendinize bir mesaj gönderin. Mesaj olayını almıyorsanız, aşağıdaki bilgilerle support@onesignal.com’a başvurun:
  • Testten tam günlük. Ayrıntılar için Debug Günlüğü Alma’ya bakın.
  • Hata ayıklama yaparken gönderdiğiniz onesignal.com dashboard’unuzdaki mesaj raporunun bağlantısı. Bu, Delivery > Sent Messages altında bulunabilir. Gönderdiğiniz mesaja tıklayın, ardından URL’yi kopyala-yapıştır yapın ve bizimle paylaşın.

Uygulama durumunuzu kontrol etme

Uygulamanızın mevcut durumunu kontrol etmek için aşağıdakileri çalıştırın. “com.company.appname” yerine paket adınızı yazın.
adb shell dumpsys package com.company.appname | grep stopped
Her şey yolundaysa stopped=false görürsünüz, aksi takdirde stopped=true görürsünüz, bu da uygulamanızın bir şekilde zorla kapatıldığı anlamına gelir. Başka bir yol birkaç bildirim göndermek ve aşağıdaki GCM logcat girişini kontrol etmektir.
W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent {
   act=com.google.android.c2dm.intent.RECEIVE pkg=com.onesignal.example (has extras)
}
Yukarıdaki iptal edilen intent’i görürseniz, uygulamanız bildirimi işlemek için başlatılamadı. Bazı cihaz üreticileri, uygulamaların zorla kapatılma durumuna girmesini beyaz listeye alacaktır. Gmail ve Whatsapp gibi örnekler.

Ek Hata Ayıklama

FCM, bir cihazın FCM’ye en son ne zaman bağlandığını sorgulamak için bir REST API sağlar. Bunu nasıl alacağınıza ilişkin aşağıdaki Google dokümantasyonuna bakın. https://developers.google.com/instance-id/reference/server#get_information_about_app_instances