- 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.
Ön koşullar
Etkili bir şekilde sorun gidermek için aşağıdakileri toplayın:- OneSignal App ID’niz
- Gösterilmeyen push’un Message ID’si
- Kullanıcının:
- Subscription ID’si
- External ID’si
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.
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.
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:-
Arka Plan Etkinliğine İzin Ver:
- Ayarlar > Uygulamalar > Uygulamanız > Pil > Arka plan etkinliğine izin ver.
-
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.
-
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).
-
Uygulama için Otomatik Başlatmayı Etkinleştir (Bazı Cihazlarda):
- Ayarlar > Uygulamalar > Uygulamanız > İzinler > Otomatik Başlatma > Etkinleştir.
-
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).
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.- FCM şu portların açık olmasını gerektirir: 5228, 5229 ve 5230. Daha fazla ayrıntı: https://firebase.google.com/docs/cloud-messaging/concept-options
- APNS şuna bağlanmalıdır: TCP port 5223 & TCP port 443 veya 2197. Daha fazla ayrıntı: https://support.apple.com/en-us/HT203609
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
Bildirim gruplama davranışı
Odaklanma Modlarıyla birlikte, farklı Android sürümlerinin kendi bildirim gruplama davranışı olabilir. Deneyebileceğiniz çözümler:- 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.
- Cihaza özel ayarları gözden geçirin: Cihazda, cihaza özel gruplama seçenekleri için Ayarlar > Bildirimler > Gelişmiş ayarlar’ı kontrol edin.
- 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:- Google Play Services (Google Play Store) yüklü olmalı
- 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çindeevent.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çinremoveAllDeliveredNotifications() 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.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 bilgilerlesupport@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.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.