Ana içeriğe atla
OneSignal dashboard’unuzda Push mesaj raporlarında:
  • Teslim edildi, OneSignal’ın bildirimi push servisine (FCM, APNs veya HMS) başarıyla ilettiği ve başarı yanıtı aldığı anlamına gelir.
  • Onaylandı, cihazdaki OneSignal SDK’sının bildirimi aldığı anlamına gelir.
Bildiriminiz Teslim Edildi ancak Onaylanmadı ise ve cihazda görünmediyse aşağıdan başlayın.

Başlamadan önce

Sorun gidermeye yardımcı olmak için aşağıdakileri toplayın. Doğru Aboneliği belirlemek ve teslimat durumunu kontrol etmek için bunlara ihtiyacınız olacak.
Yalnızca External ID’niz varsa Audience > Subscriptions’da Device Type, Last Session veya IP Address ile filtreleyerek Aboneliği bulun.

Cihaz ayarları

Bu bölüm tüm platformlar için geçerlidir. Platforma özgü veya kod düzeyindeki nedenleri araştırmadan önce bunları kontrol edin.

İzin ve abonelik durumu

Cihazda:
  1. Ayarlar > Bildirimler’e gidin ve uygulamanın bildirim ayarlarını açın.
  2. Bildirim izninin etkin olduğunu onaylayın.
  3. Ardından uygulamayı açın. SDK başlatılırsa abonelik durumunu OneSignal’a geri senkronize eder.
OneSignal dashboard’unuzda:
  1. Audience > Subscriptions’a gidin.
  2. Subscription ID veya External ID ile arayın ya da Device Type, Last Session veya IP Address’e göre sıralayın.
  3. Push durumunun Subscribed olarak göründüğünü onaylayın. Abonelik iptal edildi olarak görünüyorsa veya görünmüyorsa, ne gönderirseniz gönderin cihaz bildirim almaz. Durum beklenmedikse aşağıdaki Sorun giderme bölümüne bakın.

Rahatsız etmeyin ve odaklanma modları

Android ve iOS’taki Rahatsız Etmeyin ve Odaklanma modları bildirimleri tamamen gizleyebilir veya mod temizlenene kadar görünmez hale getirecek şekilde gruplayabilir. Test etmeden önce bu modları devre dışı bırakın:
  • iOS: Ayarlar > Odaklanma > Rahatsız Etmeyin > kapat
  • Android: Ayarlar > Bildirimler > Rahatsız Etmeyin > kapat
Devre dışı bıraktıktan sonra bir test bildirimi gönderin. Bildirim görünürse mod nedeniydi.
iOS’ta Odaklanma modu sırasında bir bildirim gelirse ve kullanıcı gruplanmış bildirim özetini kaydırarak kapatırsa, bu bildirimler daha sonra ayrı ayrı tekrar görünmez.

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

iOS: Test etmeden önce Ayarlar > Pil’de Düşük Güç Modunu devre dışı bırakın. Android cihazlar: Pil Ayarlarında uygulamayı “Kısıtlanmamış” veya “Optimize Edilmemiş” olarak ayarlayın. Bu seçeneği görmüyorsanız Pil Optimizasyonu, Güç Tasarrufu Modu, Enerji Tasarrufu, Arka Plan Kullanım Limitleri veya Uyarlanabilir Pil Ayarları’nı arayın ve uygulama için devre dışı bırakın.

Ağ ve bağlantı

Cihazların push bildirimleri alabilmesi için çevrimiçi olması gerekir. Cihaz kapalıysa, uçak modundaysa, kararsız veya internet bağlantısı yoksa, uygun bir bağlantı sağlanana kadar push görünmez. FCM ve APNs’nin bağlantı bekleyeceği süreyi Time To Live (TTL) parametresiyle ayarlayabilirsiniz (varsayılan 3 gündür). Cihaz güvenlik duvarı veya VPN bulunan bir WiFi ağındaysa, bu ağ Apple veya Google sunucularına bağlantıyı engelliyor olabilir. Hücresel veriye geçerek test edin. Güvenlik duvarı üzerinden ağ trafiğini yönetiyorsanız aşağıdakilere izin verecek şekilde yapılandırın:
  • FCM (Android): Giden TCP bağlantı noktaları 5228, 5229 ve 5230. Tam gereksinimler için FCM belgelerine bakın.
  • APNs (iOS): Giden TCP bağlantı noktası 5223 ve TCP bağlantı noktası 443 veya 2197. Tam gereksinimler için Apple belgelerine bakın.

Bildirim gruplama davranışı

Android ve iOS’un farklı sürümlerinin kendi bildirim gruplama davranışları vardır. Bildirim gruplama, aynı veya birden fazla uygulamadan gelen birkaç bildirimin bildirim merkezinde bir araya getirilmesidir. Gruplanmış bildirimlerin birlikte kapatılması kullanıcıların bireysel bildirimleri kaçırmasına sık sık neden olur.

Android sorunları

Bu bölüm yalnızca Android cihazlar için geçerlidir. iOS sorununu gideriyorsanız iOS sorunları bölümüne geçin.

Android Zorla Durdurma

Bir Android uygulaması Zorla Durdurulduğunda, işletim sistemi kullanıcı uygulamayı manuel olarak yeniden açana kadar push bildirimleri almasını engeller. Bu, Android’de kaçırılan bildirimlerin en yaygın nedenlerinden biridir. Samsung, Xiaomi ve Huawei dahil bazı üreticiler, kullanıcı son kullanılan uygulamalar listesinden uygulamayı kaydırarak kapattığında Gmail ve WhatsApp gibi büyük uygulamaları muaf tutarken diğerlerini agresif biçimde zorla durdurur. Cihaza özgü davranış için dontkillmyapp.com’a bakın. Etkilenen cihazda Zorla Durdurma davranışını azaltmak için aşağıdaki adımları sırayla deneyin:
  1. Arka plan etkinliğine izin ver: Ayarlar > Uygulamalar > Uygulamanız > Pil > Arka plan etkinliğine izin ver.
  2. Uyuyan uygulamaları 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, Son Uygulamalar düğmesine dokunun, ardından uygulama penceresine uzun basın ve Bu uygulamayı kilitle’yi seçin (bazı Samsung modellerinde mevcut).
  4. Otomatik Başlatmayı etkinleştir (bazı cihazlar): Ayarlar > Uygulamalar > Uygulamanız > İzinler > Otomatik Başlatma > Etkinleştir.
  5. 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).
Uygulamanızın Zorla Durdurulup durdurulmadığını kontrol etmek için aşağıdaki komutu çalıştırın. com.company.appname yerine paket adınızı yazın:
adb shell dumpsys package com.company.appname | grep stopped
stopped=false uygulamanın Zorla Durdurulmadığı anlamına gelir. stopped=true zorla durdurulduğu anlamına gelir. Birkaç bildirim gönderip logcat’te bu girişi de kontrol edebilirsiniz:
W/GCM-DMM: broadcast intent callback: result=CANCELLED forIntent {
   act=com.google.android.c2dm.intent.RECEIVE pkg=com.onesignal.example (has extras)
}
Bu iptal edilen intent’i görürseniz uygulama bildirimi işlemek için başlatılamadı.
FCM, bir cihazın FCM sunucularına en son ne zaman bağlandığını kontrol eden bir API sağlar. Bu, cihazın hiç erişilebilir olup olmadığını doğrulayabilir. Ayrıntılar için uygulama örneği bilgilerine ilişkin Google belgelerine bakın.Kullanıcıların bunu kendileri düzeltmesine yardımcı olmak için bilinen Android cihaz kullanıcılarını arka plan etkinliğini etkinleştirme talimatlarıyla hedeflemek için uygulama içi mesaj kullanın. Bkz. Örnek: Belirli Android üreticilerini ve cihazları hedefleme.

Android bildirim kategorileri devre dışı

Android bildirim kategorileri (kanal olarak da bilinir), kullanıcıların uygulamanızdan belirli türde bildirimleri devre dışı bırakmasına olanak tanır. Bir kategori devre dışı bırakılırsa, o kategoriyle gönderilen bildirimler cihazda görünmez — uygulama bildirim iznine sahip olsa bile. Cihazdaki kategori durumunu kontrol edin: Ayarlar > Bildirimler > Uygulamanız. “Bildirimleri göster” etkin ve tüm kategorilerin açık olduğunu onaylayın.
Android uygulama bildirim ayarları, Abandoned Cart - Urgent kategorisinin kapalı olduğunu gösteriyor; bu da o kategorideki bildirimlerin cihazda görünmesini engelliyor.
Bildirimde kategori ayarlanmamışsa OneSignal varsayılan Miscellaneous kategorisini kullanır. Özel kategoriler kullanmıyorsanız bu kategorinin etkin olduğunu doğrulayın. Kurulum ayrıntıları için Android Bildirim Kategorileri’ne bakın.
Samsung One UI 6.1, pek çok uygulama için bildirim kategorilerini otomatik olarak devre dışı bırakır. Kullanıcılarınız Samsung cihazlardaysa ve yakın zamanda belirli bildirimleri almayı kestiyse bu muhtemel bir nedendir. Ayrıntılar için Android Police’in haberine bakın.
Kategorileri yeniden etkinleştirme talimatlarıyla Samsung kullanıcılarını hedeflemek için uygulama içi mesajlar kullanabilirsiniz. Bkz. Örnek: Belirli Android üreticilerini ve cihazları hedefleme.

Android Doze modu, öncelik ve önceliği düşürülmüş mesajlar

Android’in Doze modu ve App Standby özellikleri, cihaz fişten çekildiğinde ve hareketsiz kaldığında arka plan süreçlerini — push teslimatı dahil — geciktirir. Bu modlar otomatik olarak etkinleşir ve kullanıcı tarafından görülmez. Yüksek öncelikli mesajlar göndermek cihazı uyandırır ve Doze modunu atlatır. Ancak görünür bildirimle sonuçlanmayan çok fazla yüksek öncelikli mesaj gönderirseniz FCM mesajlarınızı otomatik olarak normal önceliğe düşürebilir. FCM belgelerinden:
Android’deki yüksek öncelikli mesajlar, zamana duyarlı ve kullanıcı tarafından görülebilir içerik içindir. 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.
Öncelik düşürme şüpheleniyorsanız yüksek öncelik kullanımını yalnızca zamana duyarlı mesajlarla sınırlayın.

Android emülatör kurulumu

Android emülatörlerinde push bildirimleri Google Play Services gerektirir. Emülatörde test edip bildirim almıyorsanız aşağıdakileri doğrulayın:
  1. Emülatör görüntüsünün Google Play Store içerdiği
  2. Emülatörün Cold Boot kullanacak şekilde yapılandırıldığı
Cold Boot ayarı için: Android Studio Device Manager’ı açın > cihazınızı seçin > Düzenle > Ek Ayarlar > Başlatma seçeneğini Cold Boot olarak ayarlayın > kaydedin ve yeniden başlatın.

iOS sorunları

Bu bölüm yalnızca iOS cihazlar için geçerlidir. Android sorununu gideriyorsanız Android sorunları’na bakın.

APNs bildirim birleştirme

Bir iOS cihazı çevrimdışıyken veya erişilemezken birden fazla bildirim gönderildiyse, cihaz yeniden bağlandığında yalnızca en son bildirim görünebilir. APNs, cihaz çevrimdışıyken uygulama başına yalnızca bir bildirim saklar ve önceki bildirimleri siler. Bu, beklenen bir APNs davranışıdır ve OneSignal veya uygulamanız tarafından değiştirilemez.

iOS ön plan engelleme

iOS UNUserNotificationCenterDelegate’i yapılandırdıysanız, uygulama ön plandayken bildirimin gösterilmesini engelleyen kodunuz olabilir. Bu özel kodu kaldırın ve bunun yerine SDK’mızın Foreground Event Listener’ını kullanın.

iOS rozet temizleme

Bir uygulama rozet sayısını temizlediğinde iOS, Bildirim Merkezi’nden o uygulamanın tüm bildirimlerini kaldırır. OneSignal SDK uygulama açıldığında rozetleri otomatik olarak temizler; bu da daha önce teslim edilen bildirimlerin kullanıcı uygulamayı bir sonraki açışında kaybolabileceği anlamına gelir. Bu durum test sırasında kafa karışıklığına neden oluyorsa bu davranışı nasıl kontrol edeceğiniz için Rozetler’e bakın.

Mesaj yapılandırması

Bu bölüm, cihaz nedeniyle değil OneSignal’da bildirimin yapılandırılma biçiminden kaynaklanan sorunları kapsar.

Abonelik hedef kitlede değil

Mobil Aboneliğinizin dahil edildiğini doğrulamak için mesaj kitlesini kontrol edin:
  • Segmentler: Aboneliğinizin tüm kitle filtresi koşullarını karşıladığını doğrulayın.
  • Doğrudan gönderme: Hedeflediğiniz ID’nin doğru olduğunu onaylayın:
    • Abonelik hâlâ push’a abone olmuş durumda.
    • Son oturum tarihi yakın zamanda — eski veya etkin olmayan bir Aboneliğe gönderiyor olabilirsiniz.

Collapse ID bildirimlerin yerini alıyor

Mesajlarınızda Collapse ID ayarlıyorsanız, aynı Collapse ID’ye sahip yeni bir bildirim aynı ID’li okunmamış bildirimlerin yerini sessizce alır. Kullanıcı önceki bildirimi açmadıysa yalnızca en yenisini görür. Collapse ID’nin nasıl çalıştığına dair ayrıntılar için Bildirimleri kaldır ve TTL’ye bakın.

Kod düzeyindeki nedenler

Bu bölüm uygulamanın kaynak koduna erişim gerektirir. Kod erişiminiz yoksa bu kontrolleri geliştirme ekibinizle paylaşın.

OneSignal ön plan bildirim engelleme

OneSignal SDK’sının Foreground Event Listener’ı, uygulama ön plandayken bir bildirimi baskılayan event.preventDefault() metodunu içerir. Bu metod kodunuzda koşulsuz olarak çağrılıyorsa tüm ön plan bildirimleri sessizce engellenir. Test ederken, ön plan baskılamasını neden olarak dışlamak için uygulamayı arka planda veya tamamen kapalı tutun.

Android Notification Service Extension

Android Notification Service Extension’ı uyguladıysanız bu, uygulamanızdaki gelen bir bildirimin ilk giriş noktasıdır. Bu Extension içinde event.preventDefault() çağrılırsa bildirim uygulama durumundan bağımsız olarak engellenir. Extension kodunu gözden geçirin ve bu metodun yalnızca kasıtlı olarak çağrıldığını onaylayın.

Firebase Messaging SDK çakışması

Uygulamanız Firebase Messaging SDK’sını da içeriyorsa, OneSignal FCM mesajlarını işlemeden önce Firebase’in bunları ele geçirmediğini doğrulayın. Bu sorun genellikle şu durumlarda ortaya çıkar:
  • Bildirimler OneSignal’da İletildi olarak görünür ancak cihazda hiç görünmez.
  • Uygulama hem OneSignal’ı hem de firebase_messaging’i (veya özel bir FirebaseMessagingService) içerir.
  • Firebase Messaging kaldırıldığında push çalışır, ancak her iki SDK da mevcutken başarısız olur.
  1. AndroidManifest.xml’inizde com.google.firebase.iid.FirebaseInstanceIdReceiver gibi eski Firebase alıcılarını kontrol edin ve OneSignal push teslimatından sorumluysa bunları kaldırın veya koşullu olarak hariç tutun.
  2. onMessageReceived’i geçersiz kılan özel FirebaseMessagingService uygulamalarını (veya Flutter’da firebase_messaging gibi kütüphaneleri) kontrol edin. Başka bir servis mesajları tamamen işliyor veya baskılıyorsa, OneSignal bildirimi görüntüleyemeden önce FCM yükünü tüketebilir.
  3. FirebaseMessaging.getToken() veya FirebaseMessaging.deleteToken() gibi Firebase token yönetim API’lerini çağırmaktan kaçının.
OneSignal push teslimatından sorumluysa, push token yaşam döngüsünü yöneten tek SDK olmalıdır. FCM token’ını doğrudan almak veya yönetmek, token sahipliği çakışmalarına ve tutarsız teslimat davranışına yol açabilir. Cihazın push token’ına diğer sistemler için ihtiyacınız varsa, OneSignal’dan okuyun (örneğin, User.pushSubscription.token) ve SDK’nın gözlemci API’lerini kullanarak abonelik/token değişikliklerini dinleyin.

Sorun giderme

Yukarıdaki bölümleri inceledikten sonra sorun çözülmediyse bir hata ayıklama günlüğü yakalayın. Teslimatın tam olarak nerede başarısız olduğunu belirlemenin en hızlı yolu budur. Uygulamanızda ayrıntılı günlüğü etkinleştirmek için Hata Ayıklama Günlüğü Alma’yı takip edin. Ardından:
  1. Uygulamayı arka plana alın
  2. Etkilenen cihaza bir test bildirimi gönderin
  3. Günlükte hata olup olmadığını kontrol edin. OneSignal’ın başlatıldığını ve günlükteki subscription-id’nin push’a abone olduğunu ve mesaj gönderdiğiniz ID ile aynı olduğunu görün.

Yardıma mı ihtiyacınız var?support@onesignal.com adresindeki Destek ekibimizle iletişime geçinLütfen şunları ekleyin:
  • OneSignal App ID’niz
  • Subscription ID veya External ID
  • OneSignal Dashboard’unda test ettiğiniz mesajın URL’si
  • Hata Ayıklama Günlüğü Alma’dan alınan tam hata ayıklama günlüğü
Yardımcı olmaktan mutluluk duyarız!