Ana içeriğe atla

Genel Bakış

Onaylanmış Teslimat, bir cihazın OneSignal aracılığıyla gönderilen bir push bildirimini gerçekten aldığını izler. Cihazdaki OneSignal SDK bir push aldığında, bildirim kimliğini ve cihazın Abonelik Kimliği’ni içeren bir onay olayını OneSignal’a geri gönderir. Bu, hangi aboneliklerin hangi bildirimleri aldığını tam olarak görmenizi sağlar. OneSignal Dashboard’unuzda Onaylanmış Teslimat, Mesaj Raporu’nda Onaylandı (veya Alındı) olarak görünür. Tüm teslimat ve etkileşim metrikleri için Metrik Sözlüğü’ne bakın.
Onaylanmış Teslimatlar Akışı
Onaylanmış Teslimat, “Teslim Edildi”den farklıdır. Platform push hizmetleri (APNs, FCM, ADM, HMS), bir bildirimin servis tarafından kabul edilip edilmediğini raporlar — cihazın gerçekten alıp almadığını değil. Onaylanmış Teslimat, cihaz tarafındaki onaylama işlemidir.

Gereksinimler

Platforma özgü sınırlamalar

iOS
  • Hem Bildirim Hizmeti Uzantısı hem de App Group kurulumu gerektirir.
  • APNs, çevrimdışıyken uygulama başına yalnızca bir mesaj tutar. Çevrimdışıyken birden fazla push gönderilirse, yalnızca en son teslim edilir.
Huawei
  • Yalnızca data Huawei mesaj türü için desteklenir.
  • message türü için Huawei, alındı verilerini yalnızca kendi gösterge panelinde sağlar.
Web
  • Safari, Onaylanmış Teslimat’ı desteklemez.

Onaylanmış Teslimat Sorun Giderme

Push bildirimi hiç almıyorsanız önce Bildirimler görüntülenmiyor’a bakın.

iOS

iOS’ta Onaylanmış Teslimat için iki şeyin birlikte çalışması gerekir:
  1. Push geldiğinde OneSignal kodunu çalıştıran bir Bildirim Hizmeti Uzantısı (NSE)
  2. Veri alışverişi yapabilmeleri için ana uygulama hedefi ile NSE hedefi arasında paylaşılan bir App Group
Herhangi biri eksik veya yanlış yapılandırılmışsa, cihaz push’u alır ancak OneSignal’a hiçbir zaman raporlamaz. iOS kurulumunuzu doğrulayın
1

NSE hedefinin mevcut olduğunu ve doğru koda sahip olduğunu doğrulayın

Xcode’da, proje hedefleriniz altında OneSignalNotificationServiceExtension hedefinin listelendiğini kontrol edin. Mevcut değilse, iOS SDK Kurulumu’nun 2. Adımı’nı izleyin.NSE’nin NotificationService.swift (veya .m) dosyasını açın. didReceive(_:withContentHandler:) içinde OneSignalExtension.didReceiveNotificationExtensionRequest’i çağırması gerekir. Dosya hâlâ Apple’ın varsayılan şablon kodunu içeriyorsa, OneSignal NSE kodu ile değiştirin.
2

NSE'nin OneSignalExtension paketine sahip olduğunu doğrulayın

NSE hedefi > General > Frameworks and Libraries (veya Build Phases > Link Binary With Libraries)‘i seçin. OneSignalExtension’ın listelendiğini doğrulayın. Ana uygulama hedefi OneSignalFramework kullanır, ancak NSE hedefi OneSignalExtension kullanmalıdır — bunlar farklı paketlerdir.
3

App Group'un her iki hedefte de doğru yapılandırıldığını doğrulayın

OneSignal SDK, ana uygulamanız ile NSE arasında veri paylaşmak için bir App Group kullanır. Bunu yapılandırmanın iki yolu vardır — kurulumunuza uyan birini seçin.
  1. Ana uygulama hedefiniz > Signing & Capabilities > App Groups’u seçin.
  2. App Group’u onaylayın.
App Group’unuz group.YOUR_MAIN_APP_BUNDLE_ID.onesignal ise — YOUR_MAIN_APP_BUNDLE_ID, ana uygulama hedefinizin General > Identity altında bulunan Bundle Identifier’ıdır — Varsayılan App Group sekmesini izleyin. Aksi takdirde Özel App Group sekmesini izleyin.
  1. NSE hedefi > Signing & Capabilities > App Groups’u seçin.
  2. Aynı App Group’un listelendiğini onaylayın. Eksikse, + Capability > App Groups aracılığıyla ekleyin ve aynı grubu seçin.
Yaygın bir hata, ana uygulama bundle identifier’ı yerine NSE’nin bundle identifier’ını kullanmaktır:
  • Doğru: group.YOUR_MAIN_APP_BUNDLE_ID.onesignal
  • Yanlış: group.YOUR_MAIN_APP_BUNDLE_ID.OneSignalNotificationServiceExtension.onesignal
Ana uygulama hedefiniz ve NSE hedefiniz aynı App Group identifier’ına sahip olmalıdır.
Build ayarları için .xcconfig dosyaları kullanıyorsanız, App Group’un bu dosyalarda geçersiz kılınmadığını veya atlanmadığını doğrulayın.
4

Minimum dağıtım hedeflerinin eşleştiğini onaylayın

NSE hedefi > General > Minimum Deployments’ı seçin. Bu değer, ana uygulama hedefinizin minimum dağıtımıyla eşleşmelidir. Uyumsuzluk, NSE’nin belirli işletim sistemi sürümlerinde çalışmamasına neden olabilir.
5

"Copy only when installing" seçeneğinin işaretini kaldırın

Ana uygulama hedefiniz > Build Phases > Embed App Extensions’ı seçin. “Copy only when installing” işaretinin kaldırıldığından emin olun. İşaretliyse, NSE geliştirme build’lerine dahil edilmez, dolayısıyla test sırasında hiçbir zaman çalışmaz.
6

Info.plist'teki NSExtension değerlerini doğrulayın

NSE hedefi > Info sekmesini seçin ve NSExtension anahtarını genişletin. Şunları içerdiğini onaylayın:
<key>NSExtensionPointIdentifier</key>
<string>com.apple.usernotifications.service</string>
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).NotificationService</string>
NSE’niz Objective-C ile yazılmışsa, $(PRODUCT_MODULE_NAME).NotificationService yerine NotificationService kullanın.
7

mutable-content'in ayarlandığını doğrulayın

OneSignal, push payload’ına otomatik olarak mutable-content: 1 ayarlar; bu iOS’a NSE’yi çağırmasını söyler. REST API aracılığıyla push gönderiyorsanız, açıkça mutable_content: false ayarlamadığınızı doğrulayın. mutable-content olmadan iOS NSE’yi çalıştırmaz ve Onaylanmış Teslimat tetiklenemez.
8

NSE'nin çalıştığını test edin

OneSignal çağrısından önce didReceive içine geçici olarak bu satırı ekleyin:
bestAttemptContent.body = "[Modified] " + bestAttemptContent.body
Kendinize bir test push gönderin. Bildirim gövdesi [Modified] ile başlıyorsa, NSE doğru çalışıyor demektir. Başlamıyorsa, yukarıdaki adımları tekrar gözden geçirin — NSE çağrılmıyor. Test ettikten sonra bu satırı kaldırın.Xcode Console günlükleriyle gelişmiş NSE hata ayıklaması için iOS Bildirim Hizmeti Uzantısı hata ayıklama’ya bakın.

Android

Web

  • Safari desteklenmez.
  • Diğer tarayıcılar için v16 SDK’ya geçişin tamamlandığından emin olun:
    • Doğru SDK başlatma:
      <script src="https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.page.js" defer></script>
      
    • Doğru Service Worker referansı:
      importScripts("https://cdn.onesignal.com/sdks/web/v16/OneSignalSDK.sw.js");
      

SSS

Neden Onaylanmış Teslimat sayılarım düşük veya eksik?

En yaygın nedenler kurulum sorunları (özellikle iOS), etkin olmayan cihazlar ve platform sınırlamalarıdır.
  1. iOS yanlış yapılandırması: Bildirim Hizmeti Uzantısı veya App Group eksik ya da hatalı. Yukarıdaki iOS’ta Onaylanmış Teslimat sorun giderme’ye bakın.
  2. Etkin olmayan veya terk edilmiş cihazlar: Çevrimdışı olan veya artık kullanılmayan cihazlar push almaz veya Onaylanmış Teslimat olayları göndermez. Aşağıdaki Etkin olmayan cihazları nasıl yönetirim?‘e bakın.
  3. Platform sınırlamaları: Huawei message türü ve Safari, Onaylanmış Teslimat’ı desteklemez.
  4. Android zorla kapatma: Bazı cihaz üreticileri, uygulamayı kaydırarak kapatmayı zorla kapatma olarak değerlendirerek SDK olaylarını durdurur. Mobil push gösterilmiyor kılavuzu’na bakın.

Etkin olmayan cihazları nasıl yönetirim?

Çevrimdışı olan veya terk edilmiş cihazlar push bildirimleri almaz veya Onaylanmış Teslimat olayları göndermez. Bu, kullanıcılar cihazlarını değiştirdiğinde veya terk ettiğinde yaygındır. Etkin olmayan kullanıcıları yeniden etkileşime geçirmek için:
  • Teslimati onaylamayan kullanıcılara yeniden göndermek için Kitle Etkinliği’ni kullanın.
  • Son Oturum’a dayalı Segmentler oluşturun (örn., 90+ gün etkin değil).
    • Onları geri kazanmak için bir Yeniden Etkileşim Journey’i ile birleştirin.
    • Ulaşılamayan cihazları temizlemek için düzenli olarak etkin olmayan kullanıcıları hedefleyin.
OneSignal’ın abonelik durumunu nasıl güncellediği hakkında daha fazla ayrıntı için Push Abonelik durumları ne zaman güncellenir?‘e bakın.

Neden Onaylandı gösteriyor ama cihazımda görünmüyor?

Onaylanmış Teslimat olayı, cihazın push payload’ını aldığı anlamına gelir. Nadir durumlarda bildirim görüntülenmeyebilir. Olası nedenler:
Need help?Chat with our Support team or email support@onesignal.comPlease include:
  • Details of the issue you’re experiencing and steps to reproduce if available
  • Your OneSignal App ID
  • The External ID or Subscription ID if applicable
  • The URL to the message you tested in the OneSignal Dashboard if applicable
  • Any relevant logs or error messages
We’re happy to help!