PushizoDocs
Kanallar

iOS Push (APNs)

APNs kanalı — .p8/.p12 kimlik bilgisi, sandbox/production ortamı, iOS içerik alanları, rozet/ses/kategori, Notification Service Extension ve sorun giderme.

iOS push, Apple Push Notification service (APNs) HTTP/2 API'si üzerinden token tabanlı (.p8) ya da sertifika tabanlı (.p12) kimlikle gönderilir. İstemci tarafı iOS SDK, kurulum iOS hızlı başlangıç.

Kimlik bilgisi

YöntemAlanlarNot
APNs anahtarı (önerilen).p8 dosyası, Key ID, Team ID, Bundle IDTek anahtar tüm app'ler ve iki ortam için geçerli; süresi dolmaz
Sertifika.p12 + parola, Bundle IDYıllık yenilenir; bitiş yaklaşınca dashboard uyarır

Ortam (environment): sandbox (Xcode build, geliştirme profili) ya da production (TestFlight, App Store). Pushizo cihaz bazında da ortamı tutar: SDK embedded.mobileprovision'dan tespit eder ve abonelikle gönderir; aynı app'te iki ortamın cihazları birlikte yaşayabilir. En sık görülen hata ortam uyuşmazlığıdır (BadDeviceToken).

API: PUT /v1/apps/{app_id}/channels/ios_push { "provider": "apns", "config": { "key_id", "team_id", "bundle_id", "environment", "p8": "-----BEGIN PRIVATE KEY-----…" } } (dosya yükleme için multipart desteklenir); POST …/validate APNs'e bağlanıp kimliği doğrular.

İçerik alanları

AlanAPNs karşılığı
headings, subtitle, contentsalert.title, alert.subtitle, alert.body
ios_soundsound (uygulama paketindeki dosya adı)
ios_badge_type (None, SetTo, Increase) + ios_badge_countbadge; Increase NSE ile cihazda artırılır
ios_categorycategory (aksiyon düğmeleri)
thread_idthread-id (gruplama)
ios_interruption_level (passive, active, time-sensitive, critical)interruption-level; critical için entitlement gerekir (critical alert)
ios_relevance_scorerelevance-score (0–1)
target_content_identifiertarget-content-id
big_picture, ios_attachmentsNSE ile indirilen ek (resim, video, ses)
buttonsKategori tabanlı aksiyonlar (SDK kayıt eder)
content_available, mutable_contentSessiz push (content-available: 1), NSE için mutable-content: 1 (ek varsa otomatik)
collapse_idapns-collapse-id
ttl, priority (5/10)apns-expiration, apns-priority
dataÖzel yük (hs anahtarı altında teslimat kimliği, URL ve düğmeler de taşınır)

Push yükü 4 KB sınırına göre doğrulanır; aşım 422 HS_CONTENT_INVALID.

Notification Service Extension

NSE, zengin medyayı indirir, rozet artışını uygular, aksiyon düğmelerini ekler ve uygulama kapalıyken bile cihaza ulaştı (received) kaydını gönderir. Uygulama ve NSE aynı App Group ile depolamayı paylaşır (bölgesel API kökü ve kuyruk). Kurulum: iOS SDK → NSE.

Teslimat ve geri bildirim

  • APNs yanıtı anında işlenir: 200 → sent; 410 Unregistered / BadDeviceToken → abonelik invalid, subscription.invalidated; TooManyRequests/5xx → üstel yeniden deneme (30 sn → 2 sa).
  • received NSE'den, opened SDK tıklama işleyicisinden gelir; ikisi de Mesaj İzleme zaman çizelgesinde ve webhook'larda (delivery.delivered, delivery.opened) görünür.
  • Kanal sağlık işi 6 saatte bir kimlik bilgisini APNs'te doğrular; reddedilirse kanal invalid olur ve org sahiplerine e-posta gider.

Sorun giderme

Hata / belirtiNeden ve çözüm
BadDeviceTokenOrtam uyuşmazlığı (sandbox build'e production push). Kanal ortamını ve cihaz ortamını kontrol edin.
InvalidProviderToken / 403Key ID / Team ID / .p8 eşleşmiyor; anahtar APNs için yetkili mi?
TopicDisallowedBundle ID yanlış ya da anahtar bu app için yetkisiz.
Bildirim geliyor, received yokNSE kurulu değil ya da mutable-content için ek yok; App Group paylaşımı eksik.
Rozet artmıyorios_badge_type: "Increase" NSE gerektirir.
Sessiz push çalışmıyorcontent_available: true ve Background Modes → Remote notifications; iOS kısıtlamaları (pil, sık gönderim).

Bu sayfada