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.jsvePushizoSDKWorker.jsAPI 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.phpdosyasına eklenen script etiketi parçacığı (WordPress eklentisi de kullanılabilir). - Sunucu tarafı REST API: herhangi bir dilden cURL/HTTP istemcisiyle
/v1uç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ı
| Platform | Paket | Rehber | Örnek |
|---|---|---|---|
| Web (tarayıcı) | @pushizo/web, PushizoSDK.js (API /sdk-web/) | Web | examples/web-vanilla, examples/web-nextjs |
| iOS | Pushizo (SPM / CocoaPods) + PushizoExtension | iOS | examples/ios-swiftui |
| Android | com.pushizo:pushizo-android | Android | examples/android-kotlin |
| Flutter | pushizo_flutter | Flutter | examples/flutter-app |
| React Native | @pushizo/react-native (Expo config plugin dahil) | React Native | examples/react-native |
| Capacitor (Ionic) | @pushizo/capacitor (web'de @pushizo/web'e devreder) | Capacitor | examples/ionic-capacitor |
| Cordova | cordova-plugin-pushizo | Cordova | examples/cordova |
| .NET MAUI | Pushizo.Maui | .NET MAUI | examples/maui-app |
| Unity | com.pushizo.unity (UPM) | Unity | sdk/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ı
| Dil | Paket | Rehber |
|---|---|---|
| Node.js ≥ 20 | @pushizo/node | Node |
| PHP ≥ 8.1 | pushizo/pushizo-php | PHP |
| Python ≥ 3.9 | pushizo (PyPI) | Python |
| Go ≥ 1.23 | github.com/exec0de/pushizo/sdk/go | Go |
| Java ≥ 17 | io.pushizo:pushizo-java | Java |
| .NET 8 | Pushizo (NuGet) | .NET |
| Ruby ≥ 3.0 | pushizo (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
loginyalnızca sunucunuzun ürettiğiidentity_hash = HMAC-SHA256(sdk_secret, external_id)ile kabul edilir (sunucu SDK'larındaidentityHash/identity_hashyardımcıları). - Gizlilik onayı:
requiresPrivacyConsentaçıkkensetConsentGiven(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(AndroidonMessageReceived, iOS Notification Service Extension, web service worker), tıklandığındaopened(+button_id) kaydedilir; Dashboard → Mesaj İzleme'de zaman çizelgesi görünür. - E-posta / SMS aboneliği:
User.addEmail/User.addSmsadresi 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, olaylarSession.sendEvent; tetik kuralları tüm SDK'larda aynıdır (sdk/testdata/messaging-vectors.jsonortak vektörler). - Bölgesel API adresi (veri yerleşimi, ADR-0032 §4):
apiUrlverilmezse 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; özelapiUrlkorunur. Başka bölgedeki org için gelen 421HS_WRONG_CELLyanıtındadetails.api_urlköküne geçilir ve istek bir kez yeniden denenir (istek başına tek yönlendirme, döngü yok). Yalnızca geçerlihttpsadresler kabul edilir (kullanıcı bilgisi, sorgu, parça reddedilir; yerel geliştirmede loopbackhttpistisnası); ortak vektörlersdk/testdata/cell-routing-vectors.json. - Bildirim kutusu:
Inbox.list / markRead / markAllRead / archive / unreadCount;add_to_inbox: truemesajları.
Uçtan uca doğrulama (her platform)
- 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ı.
- Örnek uygulamayı çalıştırın, Bildirim izni iste.
- Dashboard → Abonelikler: cihaz kaydı görünür; kaydı Test cihazı yapın.
- Dashboard → Mesajlar → Test push gönder. Bildirim gelir; tıklayınca uygulama/sayfa açılır.
- 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ü).