Pushizo Docs
SDK rehberleri

SDK'lara genel bakış

İstemci (Web, iOS, Android, Flutter ve köprüler) ve sunucu (Node, PHP, Python, Go, Java, .NET, Ruby) SDK'ları; ortak kavramlar ve uçtan uca doğrulama.

Tüm istemci SDK'ları aynı kavramsal API'yi sunar (OneSignal v5 ile neredeyse birebir): initialize → login → User.addTags → Notifications.requestPermission → Session.sendEvent. Sunucu SDK'ları public REST API'nin tamamını kaynak × metot olarak sarar.

Erişilebilirlik durumu

Bugün doğrudan kullanılabilen kurulum yolları paket kayıt defteri gerektirmez; hazır parçacıklar Dashboard → SDK Kurulumu sayfasındadır:

  • Web script etiketi: PushizoSDK.js ve PushizoSDKWorker.js API sunucunuzdan /sdk-web/ altında sunulur (Web SDK → Script etiketi).
  • Google Tag Manager: aynı script etiketi Özel HTML etiketi olarak (GTM şablonu da kullanılabilir).
  • WordPress: temanın functions.php dosyasına eklenen script etiketi parçacığı (WordPress eklentisi de kullanılabilir).
  • Sunucu tarafı REST API: herhangi bir dilden cURL/HTTP istemcisiyle /v1 uçları (API başvurusu, Hızlı başlangıç).

Paket kayıt defterleri üzerinden dağıtılan SDK'lar (npm, Maven Central, CocoaPods, pub.dev, NuGet, PyPI, RubyGems, Packagist, Go modülü, Unity UPM) yakında yayınlanacak; aşağıdaki tablolardaki paket adları yayından sonra geçerli olur. O zamana kadar bu SDK'lar monorepo içinden derlenerek kullanılabilir (her rehberin kurulum bölümü).

İstemci SDK'ları

PlatformPaketRehberÖrnek
Web (tarayıcı)@pushizo/web, PushizoSDK.js (API /sdk-web/)Webexamples/web-vanilla, examples/web-nextjs
iOSPushizo (SPM / CocoaPods) + PushizoExtensioniOSexamples/ios-swiftui
Androidcom.pushizo:pushizo-androidAndroidexamples/android-kotlin
Flutterpushizo_flutterFlutterexamples/flutter-app
React Native@pushizo/react-native (Expo config plugin dahil)React Nativeexamples/react-native
Capacitor (Ionic)@pushizo/capacitor (web'de @pushizo/web'e devreder)Capacitorexamples/ionic-capacitor
Cordovacordova-plugin-pushizoCordovaexamples/cordova
.NET MAUIPushizo.Maui.NET MAUIexamples/maui-app
Unitycom.pushizo.unity (UPM)Unitysdk/unity/Samples~/Demo (UPM örneği)

Köprü SDK'ları (React Native, Capacitor, Cordova, MAUI, Unity) yerel Android/iOS SDK'larını sarar; kuyruk, oturum, teslimat geri bildirimi, in-app çizimi ve tetik değerlendirme yerel tarafta çalışır. Çatı entegrasyonları: React, Vue, Angular.

Sunucu SDK'ları

DilPaketRehber
Node.js ≥ 20@pushizo/nodeNode
PHP ≥ 8.1pushizo/pushizo-phpPHP
Python ≥ 3.9pushizo (PyPI)Python
Go ≥ 1.23github.com/exec0de/pushizo/sdk/goGo
Java ≥ 17io.pushizo:pushizo-javaJava
.NET 8Pushizo (NuGet).NET
Ruby ≥ 3.0pushizo (RubyGems)Ruby

Python, Go, Java, .NET ve Ruby SDK'ları api/openapi.yaml'dan üretilir (npm run sdk:generate); kimlik doğrulama, yeniden deneme, idempotency, sayfalama ve webhook imza doğrulaması el yazımı katmandadır. Hepsi aynı kaynak/metot adlarını (dil kurallarına uyarlanmış) kullanır.

Ortak kavramlar

  • App ID (app_…): Dashboard → App ayarları. İstemci SDK'ları yalnızca App ID ile çalışır; gizli anahtar gerekmez.
  • API anahtarı (hs_live_…): yalnızca sunucu SDK'larında; istemciye gömülmez.
  • external_id: sizin kullanıcı kimliğiniz. login(externalId) anonim cihazı bu kullanıcıya bağlar; birden fazla cihaz aynı kullanıcıda birleşir. logout() cihazı yeni bir anonim kullanıcıya taşır.
  • Identity verification: App ayarlarında zorunlu kılınırsa login yalnızca sunucunuzun ürettiği identity_hash = HMAC-SHA256(sdk_secret, external_id) ile kabul edilir (sunucu SDK'larında identityHash / identity_hash yardımcıları).
  • Gizlilik onayı: requiresPrivacyConsent açıkken setConsentGiven(true) çağrılana kadar hiçbir ağ çağrısı yapılmaz (KVKK/GDPR).
  • Çevrimdışı kuyruk: tag, özellik, olay, alias, e-posta/SMS ekleme ve teslimat geri bildirimleri cihazda kuyruğa alınır; bağlantı gelince sıralı ve idempotent gönderilir.
  • Teslimat izleme: push alındığında received (Android onMessageReceived, iOS Notification Service Extension, web service worker), tıklandığında opened (+ button_id) kaydedilir; Dashboard → Mesaj İzleme'de zaman çizelgesi görünür.
  • E-posta / SMS aboneliği: User.addEmail / User.addSms adresi normalize edip (ayse@example.com, +905321234567) cihazın kullanıcısına bağlı abonelik oluşturur.
  • Tercihler: Dashboard'daki mesaj kategorileri için User.getPreferences() / setPreferences([...]) (kullanıcı × kanal opt-in).
  • In-app mesajlar: InAppMessages.addTrigger / setScreen / paused, olaylar Session.sendEvent; tetik kuralları tüm SDK'larda aynıdır (sdk/testdata/messaging-vectors.json ortak vektörler).
  • Bölgesel API adresi (veri yerleşimi, ADR-0032 §4): apiUrl verilmezse veya global kök (https://api.pushizo.com) verilirse istemci SDK'ları app yapılandırmasındaki bölgesel kökü (api_url) öğrenir, saklar ve tüm istekleri oraya gönderir; özel apiUrl korunur. Başka bölgedeki org için gelen 421 HS_WRONG_CELL yanıtında details.api_url köküne geçilir ve istek bir kez yeniden denenir (istek başına tek yönlendirme, döngü yok). Yalnızca geçerli https adresler kabul edilir (kullanıcı bilgisi, sorgu, parça reddedilir; yerel geliştirmede loopback http istisnası); ortak vektörler sdk/testdata/cell-routing-vectors.json.
  • Bildirim kutusu: Inbox.list / markRead / markAllRead / archive / unreadCount; add_to_inbox: true mesajları.

Uçtan uca doğrulama (her platform)

  1. Dashboard'da ilgili kanalı etkinleştirin (Kanallar → Web Push / Android Push / iOS Push); gerçek sağlayıcı yoksa simülasyon sağlayıcısı.
  2. Örnek uygulamayı çalıştırın, Bildirim izni iste.
  3. Dashboard → Abonelikler: cihaz kaydı görünür; kaydı Test cihazı yapın.
  4. Dashboard → Mesajlar → Test push gönder. Bildirim gelir; tıklayınca uygulama/sayfa açılır.
  5. Dashboard → Mesaj İzleme: queued → sent → received → opened.

Yerel geliştirmede API http://localhost:4000; Android emülatöründen http://10.0.2.2:4000, gerçek cihazdan makinenin LAN IP'si. Dashboard yardımcıları: Başlangıç (/<org>/getting-started), SDK Kurulumu (/<org>/sdk-setup), Test Cihazları, API Explorer, Loglar (Geliştirici menüsü).

Bu sayfada