Mobil uygulamanda "kaç kullanıcı düştü" sorusuna crash raporu cevap verir; "kullanıcılar neden düşüyor, hangi ekranda takılıyor, hangi kohort geri dönüyor" sorusuna ise ürün analitiği cevap verir. Bu yazıda mobil uygulama ürün analitiği için PostHog ve Amplitude'ın iOS SDK'larını resmi dokümantasyondaki güncel sözdizimiyle kuruyor, aynı event şemasını iki araca birden nasıl göndereceğini görüyor ve ATT/GDPR çerçevesinde nasıl kurumsal davranman gerektiğini öğreniyorsun.
💡 Pro Tip: Event taksonomisini SDK kurulumundan önce tasarla — önce kod yazıp sonra event isimlerini "düzenli hale getirmeye" çalışmak, canlıda binlerce tutarsız event adıyla sonuçlanır.
İçindekiler
- Ürün analitiği neyi ölçer, crash/performans analitiğinden farkı
- Event taksonomisi: adlandırma sözleşmesi, property'ler, kullanıcı/oturum kimliği
- Adlandırma sözleşmesi
- iOS SDK kurulumu (PostHog iOS + Amplitude iOS)
- PostHog iOS kurulumu
- Amplitude iOS kurulumu
- Aynı event şemasının iki üründe de nasıl gönderildiği
- Gizlilik: ATT, App Privacy etiketleri, GDPR
- Hangi durumda hangisi: barındırma, fiyat modeli, ekip büyüklüğü
- Doğrulama: debug/live events görünümü, test cihazı filtreleme
- Sık hatalar
- SSS
- Mobil uygulamada event taksonomisi nasıl tasarlanır?
- PostHog ve Amplitude iOS SDK kurulumu nasıl yapılır?
- Ürün analitiği ATT ve KVKK/GDPR ile nasıl uyumlu kurulur?
- PostHog mu Amplitude mı seçmeliyim?
- Event'lerim autocapture ile mi yoksa manuel mi gönderilmeli?
- Güncelleme (Eylül 2026)
- Sonuç
- Kaynaklar
Ürün analitiği neyi ölçer, crash/performans analitiğinden farkı
Ürün analitiği, uygulamanın gönderdiği event'ler üzerinden kullanıcı davranışını modelleyen bir disiplindir. PostHog'un kendi tanımıyla ürün analitiği "insanların ürününde gerçekte ne yaptığını" cevaplar ve bunun üzerine trend, funnel, retention, path, stickiness ve lifecycle insight'ları kurar. Bu, crash raporlama araçlarının (Crashlytics, Sentry gibi) odaklandığı "uygulama çöktü mü, hangi stack trace ile" sorusundan tamamen farklı bir katmandır — crash analitiği hatayı yakalar, ürün analitiği davranışı yakalar.
Bu iki katman birbirini tamamlar, birbirinin yerini almaz: crash analitiğini iOS tarafında nasıl kurduğunu daha önce iOS Crash Reporting ve Analytics yazısında anlatmıştım, performans tarafındaki instrumentation için ise iOS Performance Monitoring rehberine bakabilirsin. Bu yazı yalnız ürün/davranış katmanına odaklanıyor.
PostHog'un kendi dokümantasyonunda vurguladığı bir başka fark da entegrasyon derinliği: "baktığın her sayı, arkasındaki session replay'e, o sayıyı tetikleyen feature flag'e veya deneye tek tıkla uzak" deniyor — yani ürün analitiği aracı, tek başına bir "dashboard" değil; feature flag, A/B test ve session replay ile aynı event/kullanıcı/property setini paylaşan bir platform. Amplitude'da da benzer şekilde event ve user property'ler, sonradan kurulan segmentasyon ve cohort analizlerinin temelini oluşturur. Bu yüzden "önce event gönder, sonra taksonomiyi düzelt" yaklaşımı pahalıya patlar — taksonomi tasarımı kurulumdan önce gelmeli.
Event taksonomisi: adlandırma sözleşmesi, property'ler, kullanıcı/oturum kimliği
Amplitude'ın resmi veri planlama rehberine göre bir event taksonomisi üç adımda kurulur: önce iş hedeflerini tanımla, sonra bu hedefleri ölçecek ana metrikleri parçalara ayır, son olarak bu metrikleri besleyecek event ve property'leri optimize et. Bu sıralama önemli — "hangi event'i göndereceğim" sorusuna "hangi metriği ölçeceğim" sorusundan önce cevap vermeye çalışmak, kullanışsız bir event listesiyle sonuçlanır.
Adlandırma sözleşmesi
Amplitude'ın rehberi üç tutarlılık kuralı öneriyor: tutarlı büyük/küçük harf kullanımı, tutarlı sözdizimi (önerilen kalıp [Noun] + [Past-Tense Verb], örneğin "Purchase Completed"), ve tutarlı aktör (event isimlerini her zaman kullanıcı perspektifinden yaz — "Button Clicked" gibi, sistemin ne yaptığını değil kullanıcının ne yaptığını anlat).
- Event property: bir event örneğine özgü, o anki detayları taşır. Amplitude'ın verdiği örnekte
Purchase Completedevent'i için satın alınan ürün, tutar ve ödeme yöntemi birer event property'dir. - User property: kullanıcıyı tanımlayan ve o kullanıcının gönderdiği tüm gelecek event'lere otomatik olarak eşlenen özelliklerdir (plan tipi, kayıt kanalı gibi).
- Kullanıcı kimliği: PostHog dokümantasyonu bunu zorunlu bir adım olarak tanımlıyor — login sonrası
PostHogSDK.shared.identify("stable-user-id")çağrılmalı, ID olarak auth sistemindeki stabil bir kimlik kullanılmalı; "anonymous" gibi paylaşılan bir literal ID ASLA kullanılmamalı. - Oturum kapanışı: PostHog dokümanına göre logout'ta
PostHogSDK.shared.reset()çağrılmalı — aksi halde bir sonraki kullanıcı, cihazdaki önceki kişinin kimliğini devralabilir. - Sürüm etiketi: PostHog iOS SDK'sı her event'e ve kişi property'sine
$app_versionve$app_build'i zaten otomatik ekliyor (kaynak: PostHog iOS SDK context implementasyonu); bu yüzden sürüm için ayrı bir manuel property tanımlamana genelde gerek yok — SDK'nın otomatik göndermediği alanları (platform gibi) manuel eklemek yeterli.
Sürüm ve platform etiketini tek bir helper'da topladığında, ekibindeki her geliştirici aynı şemayı üretir:
swift
1func extraProductProperties() -> [String: Any] {2 return ["platform": "ios"]3}Bu fonksiyonu her manuel event çağrısına property olarak eklersen, sonradan "hangi sürümde kaç kullanıcı bu akışı kullandı" sorusuna funnel içinde segment kırılımıyla cevap verebilirsin — sürüm etiketi eksikse bu soruyu yeniden cevaplamak için yeni bir sürüm çıkarıp beklemek zorunda kalırsın.
iOS SDK kurulumu (PostHog iOS + Amplitude iOS)
PostHog iOS kurulumu
PostHog'un resmi dokümantasyonuna göre PostHog iOS SDK'sı CocoaPods üzerinden ya da Swift Package Manager bağımlılığı olarak eklenebilir; konfigürasyon PostHogConfig nesnesi üzerinden yapılır.
swift
1import PostHog2 3let config = PostHogConfig(projectToken: "phc_your_project_token", host: "https://us.i.posthog.com")4// Not: eski sürümlerde `apiKey:` etiketi kullanılıyordu, artık deprecated — yeni kodda `projectToken:` kullan5 6PostHogSDK.shared.setup(config)7 8// login sonrası kullanıcıyı tanımla9PostHogSDK.shared.identify("stable-user-id-from-your-auth-system")10 11// logout'ta kimliği sıfırla12PostHogSDK.shared.reset()Dikkat etmen gereken bir davranış: PostHog dokümanına göre cihaz çevrimdışıyken event'ler cihazın yerel depolamasında kuyruklanır. Bu kuyruğun maxQueueSize ile sınırlı bir üst boyutu vardır; kuyruk dolduğunda en eski event silinir ve kuyruk yalnızca cihaz tekrar çevrimiçi olduğunda flush edilir. Yani uçak modunda test ettiğin bir event, internet geri gelene kadar dashboard'da görünmeyecek — bu bir hata değil, tasarım gereği.
Amplitude iOS kurulumu
Amplitude'ın resmi iOS Swift SDK dokümanına göre kurulum Swift Package Manager ile https://github.com/amplitude/Amplitude-Swift paketini eklemekle başlar. Init çağrısı Configuration nesnesi üzerinden yapılır ve autocapture parametresiyle hangi otomatik event'lerin toplanacağı belirlenir:
swift
1import AmplitudeSwift2 3let amplitude = Amplitude(4 configuration: Configuration(5 apiKey: AMPLITUDE_API_KEY,6 autocapture: [.sessions, .appLifecycles, .screenViews, .elementInteractions, .networkTracking, .frustrationInteractions]7 )8)Amplitude dokümanına göre SDK, v1.8.0'dan itibaren manuel enstrümantasyon olmadan Sessions, App lifecycles, Screen views, Element interactions, Frustration interactions (rage/dead click) ve Network requests event'lerini otomatik yakalayabiliyor (frustration interactions için 1.15.0+ gerekir). autocapture parametresini hiç vermezsen SDK varsayılan olarak yalnızca .sessions özelliğini açık tutuyor — yani ekran görüntülemelerini veya buton tıklamalarını otomatik görmek istiyorsan bu listeyi açıkça belirtmen gerekiyor.
Event gönderimi iki şekilde yapılabilir; resmi dokümanda her ikisi de kod örneğiyle veriliyor:
swift
1let event = BaseEvent(eventType: "Button Clicked", eventProperties: ["button_name": "checkout"])2amplitude.track(event: event)3 4// ya da doğrudan5amplitude.track(eventType: "Button Clicked", eventProperties: ["button_name": "checkout"])Kullanıcı property'si atamak için Identify() nesnesi kullanılır:
swift
1let identify = Identify()2identify.set(property: "plan_type", value: "pro")3amplitude.identify(identify: identify)Amplitude dokümanına göre SDK varsayılan olarak event'leri her 30 saniyede bir veya 30 event birikince (hangisi önce gerçekleşirse) sunucuya yüklüyor. Bir event'in gerçekten gönderildiğini test cihazında anında görmek istiyorsan track() sonrası amplitude.flush() çağırabilirsin — bu yalnızca test/debug için önerilir, prod'da her event'ten sonra flush çağırmak batarya ve ağ trafiğini gereksiz artırır.
Amplitude ayrıca Analytics, Experiment ve Session Replay SDK'larını tek arayüzde toplayan bir "Unified SDK" sunuyor; bu SDK'nın init imzası Amplitude(apiKey:serverZone:instanceName:analyticsConfig:experimentConfig:sessionReplayConfig:logger:) şeklinde. serverZone parametresi burada devreye giriyor — event'lerin ABD yerine AB sunucularına gitmesini istiyorsan Amplitude dokümanının önerdiği gibi projeni Amplitude EU içinde kurup SDK'yı Amplitude EU'daki API key ile başlatman gerekiyor; bu alan yalnız Unified SDK'ya özgü değil, standart Amplitude Swift Configuration'da da mevcut.
Aynı event şemasının iki üründe de nasıl gönderildiği
Taksonomini bir kere tasarladıktan sonra, aynı event'i her iki SDK'ya da paralel gönderebilirsin — bu, geçiş dönemlerinde veya iki aracı karşılaştırmalı test ederken (bkz. PostHog vs Amplitude karşılaştırması) işine yarar:
swift
1func trackPurchaseCompleted(productId: String, amount: Double, method: String) {2 let properties: [String: Any] = [3 "product_id": productId,4 "amount": amount,5 "payment_method": method6 ]7 8 PostHogSDK.shared.capture("Purchase Completed", properties: properties)9 10 amplitude.track(eventType: "Purchase Completed", eventProperties: properties)11}PostHog dokümantasyonu event isimlendirme için [object] [verb] (nesne + fiil) formatını öneriyor — örnek olarak project created, user signed up, invite sent veriliyor. Bu, Amplitude'ın [Noun] + [Past-Tense Verb] sözleşmesiyle neredeyse birebir aynı mantık; iki aracı paralel kullanacaksan tek bir isimlendirme sözleşmesi belirleyip her ikisine de aynı string'i göndermen yeterli.
PostHog'un autocapture'ı da benzer şekilde bazı event'leri otomatik gönderiyor: Application Opened, Application Backgrounded, Application Installed, Application Updated ve UIKit tabanlı ekranlarda $screen, $autocapture, $rageclick. SwiftUI kullanıyorsan bu event'lerin bir kısmı (TextField → UITextField gibi UIKit'e sarılı bileşenler üzerinden) yine yakalanabiliyor ama element metadata'sı eksik kalabiliyor — bu yüzden SwiftUI projelerinde manuel capture() çağrılarına daha çok güvenmek gerekiyor.
Gizlilik: ATT, App Privacy etiketleri, GDPR
Mobil ürün analitiğinde gizlilik iki farklı çerçeveden geliyor: Apple'ın platform seviyesindeki App Tracking Transparency (ATT) izni ve araç seviyesindeki opt-in/opt-out API'leri.
PostHog iOS SDK'sında bir kullanıcıyı cihaz genelinde opt-out etmek için PostHogSDK.shared.optOut() çağrılır; bu çağrı autocapture, manuel capture ve session replay dahil tüm veri toplamayı durdurur, PostHogSDK.shared.isOptOut() ile durumu kontrol edebilirsin. Kullanıcıları varsayılan olarak opt-out başlatmak istersen PostHogConfig üzerindeki optOut alanını true ayarlayabilir, rıza alındığında PostHogSDK.shared.optIn() ile açabilirsin. Bir uyarı: SDK snippet'ini rıza banner'ının arkasına gizleme — aksi halde banner'ı reddeden kullanıcıları bile sayamazsın, opt-out API'lerini kullanmak bunun doğru yolu.
Amplitude'da opt-out, Configuration nesnesinde optOut parametresiyle yapılır (varsayılan false):
swift
1let amplitude = Amplitude(2 configuration: Configuration(apiKey: AMPLITUDE_API_KEY, optOut: true)3)Bu iki API, Apple'ın ATT çerçevesinin yerini TUTMAZ — ayrı katmanlardır. ATT, kullanıcı veya cihazı izleme amacıyla uygulama-dışı veriye (IDFA gibi) erişim için ayrı bir sistem izni ister; ATTrackingManager.requestTrackingAuthorization ile tetiklenir ve kullanıcı reddettiğinde bile PostHog/Amplitude'a event göndermeye (birinci taraf analitik olarak) devam edebilirsin — ATT reddi, üçüncü taraf reklam izlemesini engeller, birinci taraf ürün analitiğini otomatik engellemez. ATT kurulumunu ve App Privacy etiketlerini uçtan uca daha önce iOS Privacy Compliance ve ATT ile iOS Privacy Manifests ve App Tracking 2026 yazılarında ayrıntılı işledim, burada tekrar etmiyorum.
GDPR tarafında ise hem PostHog hem Amplitude "veri bölgesi" seçeneği sunar — event'lerini AB sunucularında tutmak istersen PostHog'da proje oluştururken EU host'unu (https://eu.i.posthog.com), Amplitude'da ise serverZone: .EU parametresini seçmen gerekir. Bu, KVKK'nın yurt dışına veri aktarımı hassasiyetiyle örtüşen pratik bir tedbirdir; ama iki aracın da "KVKK uyumlu" diye resmi bir sertifikasyonu yok — hukuki uyumluluk projenin kendi KVKK değerlendirmesine kalır, araç seçimi tek başına uyumluluk garantisi vermez.
Hangi durumda hangisi: barındırma, fiyat modeli, ekip büyüklüğü
İki araç da olgun, ama farklı ekip profillerine hitap ediyor.
Fiyat modeli (16 Eylül 2026 itibarıyla resmi fiyat sayfası): PostHog'un "Free" planı kredi kartı istemiyor, 1 proje ve 1 yıllık veri saklama sunuyor. "Pay-as-you-go" planı ise sınırsız kullanım, 6 proje ve 7 yıllık veri saklama içeriyor; her ay ilk 1 milyon event ücretsiz. Bu, event hacmi öngörülemeyen erken aşama bir mobil uygulama için düşük giriş maliyeti anlamına geliyor — küçük bir ekip kredi kartı vermeden başlayabilir.
Kriter | PostHog | Amplitude |
|---|---|---|
Ücretsiz plan | Kredi kartı yok, aylık 1M analytics event, 1 proje, 1 yıl saklama | Kredi kartı yok, aylık 2 milyon event, unlimited seats |
EU veri bölgesi | eu.i.posthog.com host seçimi | serverZone: .EU + hesap kaydında EU bölgesi |
Tek platformda | Analytics + feature flag + session replay + deney | Analytics + Experiment + Session Replay (Unified SDK) |
Öne çıkan | Açık kaynak, self-host seçeneği | Kurumsal veri planlama disiplini, AI analytics özelliği |
Ekip büyüklüğü ve barındırma: PostHog'un açık kaynaklı doğası ve self-host seçeneği, altyapı kontrolünü kendi elinde tutmak isteyen mühendislik ekiplerine uyuyor. Amplitude ise veri planlama metodolojisini (objective → metric → event/property) resmi dokümantasyonunda ayrıntılı işlemiş; büyüyen ürün ekiplerinde taksonomi disiplinini kurumsallaştırmak isteyen ekiplere daha uygun. Rakamlar ve plan detayları zamanla değiştiği için güncel karşılaştırmayı her zaman PostHog vs Amplitude karşılaştırma sayfasından kontrol et — orada tablo formatında canlı tutuluyor.
Pratikte karar genelde üç soruya iniyor. Birincisi: veriyi kimin sunucusunda tutmak istiyorsun — self-host'a açık mühendislik kapasiten varsa PostHog'un açık kaynak seçeneği bu kapıyı açık tutuyor (PostHog self-host'u MIT lisanslı ve mümkün, ancak PostHog bunu resmen desteklemediğini ve Cloud'u önerdiğini yazıyor). İkincisi: analitiği başka hangi araçlarla birlikte kullanacaksın — feature flag ve session replay'i aynı platformda istiyorsan PostHog'un tek-SDK yaklaşımı entegrasyon yükünü azaltıyor. Üçüncüsü: ekibinde veri planlama disiplinini kim sahipleniyor — büyük bir ürün/veri ekibi varsa Amplitude'ın resmi playbook'u ortak bir dil kurmak için hazır bir çerçeve sunuyor; küçük bir ekipte bu playbook'u PostHog'un daha az yapılandırılmış yaklaşımına da uyarlayabilirsin, sadece disiplini kendin kurman gerekir.
Doğrulama: debug/live events görünümü, test cihazı filtreleme
Kurulumu bitirdikten sonra event'lerin gerçekten gittiğini doğrulamadan prod'a çıkma.
Amplitude'ın resmi dokümanına göre debug için Configuration'da logLevel: LogLevelEnum.debug ayarlanır; Xcode konsolunda com.amplitude filtresiyle SDK loglarını izleyebilirsin. Dashboard tarafında ise "User Lookup activity" ekranından event'in geldiği kullanıcı veya cihaz ID'sini bulup "Live event updates" özelliğini açarak event'in canlı geldiğini görebilirsin.
swift
1let config = Configuration(apiKey: AMPLITUDE_API_KEY, logLevel: LogLevelEnum.debug)2let amplitude = Amplitude(configuration: config)PostHog tarafında en hızlı doğrulama yolu, kurulumdan hemen sonra bir test event'i göndermek ve PostHog dashboard'undaki event akışında birkaç saniye içinde göründüğünü teyit etmek. Test cihazından gelen event'lerin canlı metriklerini karıştırmak istemiyorsan, PostHog dashboard ayarlarında kendi kullanıcı kimliğini veya test hesaplarını filtreleyebileceğin bir ayar bulunuyor. Her iki araçta da en pratik doğrulama yöntemi aynı: henüz kimseye göstermediğin bir test event'i gönder, dashboard'da göründüğünü gördükten sonra prod'a çık.
Sık hatalar
ALTIN İPUCU
Bu yazının en değerli bilgisi
Bu ipucu, yazının en önemli çıkarımını içeriyor.
Easter Egg
Gizli bir bilgi buldun!
Bu bölümde gizli bir bilgi var. Keşfetmek ister misin?
Okuyucu Ödülü
Kurulumu üretime taşımadan önce kendi kontrol ederek geçmen gereken bir doğrulama listesi hazırladım — her satırı işaretleyerek ilerlersen taksonomi, kurulum ve gizlilik tarafında atlanan bir adım kalmaz.
- "anonymous" gibi paylaşılan bir literal ID ile identify çağırmak: PostHog dokümanı bunu açıkça yasaklıyor — çünkü bu, farklı kullanıcıların aynı kimlik altında birleşmesine (identity merge kirliliği) yol açar. Her zaman auth sistemindeki stabil kullanıcı ID'sini kullan.
- Logout'ta reset() çağırmayı unutmak: Bir sonraki kullanıcı, cihazdaki önceki kişinin session'ına ve property'lerine "miras" kalabilir — özellikle paylaşımlı cihazlarda (kiosk, test cihazı) veri kirliliği ciddi boyutlara ulaşır.
- Autocapture'ı yanlış anlamak: Amplitude'da
autocaptureparametresi verilmezse yalnız.sessionsaçıktır; ekran görüntülemelerinin veya tıklamaların "otomatik gelmesini" beklemek ama konfigürasyonda belirtmemek, dashboard'da boş funnel'larla sonuçlanır. - Rıza banner'ının arkasına SDK snippet'ini gizlemek: PostHog'un kendi uyarısı bu — banner'ı reddedenleri bile sayamazsın çünkü SDK hiç yüklenmemiş olur. Doğrusu SDK'yı her zaman yükleyip opt-in/opt-out API'leriyle kontrol etmek.
- Test cihazı event'lerini prod metriklerinden ayıklamamak: Geliştirme sırasında attığın onlarca test event'i, küçük bir kullanıcı tabanında funnel oranlarını gözle görülür şekilde bozar.
- Offline kuyruğunu "event kayboldu" sanmak: PostHog'da cihaz çevrimdışıyken event'ler yerelde kuyruklanır ve yalnızca cihaz çevrimiçi olduğunda flush edilir — uçak modunda test edip event'i göremeyince panik yapmadan önce cihazı internete bağla.
SSS
Mobil uygulamada event taksonomisi nasıl tasarlanır?
Amplitude'ın resmi veri planlama rehberine göre üç adımda: önce iş hedeflerini tanımla, sonra bu hedefleri ölçecek ana metrikleri parçalara ayır, son olarak bu metrikleri besleyecek event ve property'leri optimize et. Adlandırmada tutarlı büyük/küçük harf, [Nesne]+[Geçmiş Zaman Fiil] sözdizimi ve kullanıcı perspektifinden isimlendirme kuralına sadık kal.
PostHog ve Amplitude iOS SDK kurulumu nasıl yapılır?
PostHog PostHogConfig(projectToken:host:) ile başlatılır, PostHogSDK.shared.setup(config) çağrılır; event göndermek için capture("event_name", properties: [...]) kullanılır. Amplitude ise Amplitude(configuration: Configuration(apiKey:autocapture:)) ile başlatılır, event göndermek için track(eventType:eventProperties:) veya BaseEvent + track(event:) kullanılır. Her iki SDK da Swift Package Manager üzerinden eklenir.
Ürün analitiği ATT ve KVKK/GDPR ile nasıl uyumlu kurulur?
ATT, üçüncü taraf izlemeye yönelik ayrı bir sistem izni istediği için birinci taraf ürün analitiğini otomatik engellemez; yine de App Privacy etiketlerini doğru doldurman gerekir (bkz. iOS Privacy Compliance ve ATT). GDPR/KVKK tarafında PostHog'da EU host'unu, Amplitude'da serverZone: .EU parametresini seçerek event verisini AB sunucularında tutabilirsin — bu, KVKK'nın yurt dışına veri aktarımı hassasiyetiyle örtüşen pratik bir tedbirdir ama resmi bir KVKK sertifikasyonu anlamına gelmez; rıza öncesi opt-out varsayılanını PostHog'da PostHogConfig üzerindeki optOut alanını true yaparak, Amplitude'da optOut: true ile ayarlayabilirsin.
PostHog mu Amplitude mı seçmeliyim?
Kesin bir "daha iyi" yok — PostHog açık kaynak ve self-host seçeneğiyle altyapı kontrolü isteyen ekiplere, Amplitude ise kurumsal veri planlama disiplinini önceliklendiren büyüyen ürün ekiplerine daha uygun. Fiyat ve plan detayları sık değiştiği için karar öncesi güncel PostHog vs Amplitude karşılaştırmasına bak.
Event'lerim autocapture ile mi yoksa manuel mi gönderilmeli?
İkisi birbirini dışlamaz. Application açılış/arka plan gibi genel yaşam döngüsü event'lerini autocapture'a bırak, iş mantığına özgü event'leri (satın alma tamamlandı, ödeme başarısız gibi) her zaman manuel capture/track çağrısıyla gönder — autocapture'ın element metadata'sı, özellikle SwiftUI'da, iş kararı vermek için yeterince güvenilir olmayabilir.
Güncelleme (Eylül 2026)
Eylül 2026'da neler değişti: ATT ve platform tarafındaki gelişmeler ile SDK sürüm güncellemeleri.
- Apple, iOS 27'yi 14 Eylül 2026'da resmi olarak yayınladı; ATT prompt akışı bu sürümde de geçerliliğini koruyor, kurulum örneklerini ve minimum deployment target'ını iOS 27 ile test etmen öneriliyor (kaynak: 9to5mac, 9 Eylül 2026 duyurusu).
- Apple, Almanya'daki rekabet otoritesi soruşturması sonrası ATT prompt'unda 8 değişikliğe (butonların "Allow/Reject" olması, tam sayfa prompt, GDPR bilgi sayfası eklenebilmesi gibi) gönüllü olarak razı olduğunu 17 Ağustos 2026'da duyurdu; bu değişiklikler şu an yalnız AB/Almanya kapsamında ve kesin yürürlük tarihi netleşmedi. Detay için iOS Privacy Compliance ve ATT yazısına bak.
- posthog-ios 3.74.0 (11 Eylül 2026) ile session replay'de dokunma koordinatlarının kaydını kapatan
sessionReplayConfig.captureToucheseklendi; 3.76.0 (15 Eylül 2026) ile rıza yönetimini saran SDK'lar içinpersistOptOutgeldi (kaynak: github.com/PostHog/posthog-ios CHANGELOG.md).
Sonuç
Mobil uygulamada ürün analitiği kurmanın en kritik adımı, SDK entegrasyonu değil — taksonomi tasarımı. PostHog ve Amplitude'ın iOS SDK'ları birkaç satır kodla kurulabiliyor, ama tutarsız event isimleri ve eksik property'ler dashboard'u kullanışsız hale getiriyor. Önce nesne+fiil formatında bir adlandırma sözleşmesi belirle, kullanıcı kimliğini login/logout döngüsünde doğru yönet, gizlilik API'lerini rıza banner'ının önüne değil koduna göm, sonra kurulumu yap.
Crash ve performans tarafındaki tamamlayıcı instrumentation için iOS Crash Reporting ve Analytics ile iOS Performance Monitoring yazılarına, gizlilik tarafında derinleşmek için iOS Privacy Compliance ve ATT ile iOS Privacy Manifests ve App Tracking 2026 yazılarına, feature flag ve deney altyapısı kurarken iOS Feature Flags Stratejisi yazısına bakabilirsin. İki aracı yan yana ve güncel tutulan bir tabloda karşılaştırmak için PostHog vs Amplitude karşılaştırma sayfasına göz at.
Kaynaklar
- PostHog Product Analytics dokümantasyonu — ürün analitiğinin kapsamı ve diğer PostHog ürünleriyle entegrasyonu.
- PostHog iOS SDK kurulum dokümanı — CocoaPods/SPM kurulumu,
PostHogConfig, identify/reset sözleşmesi, offline kuyruk davranışı. - PostHog iOS SDK kullanım dokümanı —
capture()fonksiyonu, autocapture event listesi, ekran görüntüleme yakalama. - PostHog gizlilik ve veri toplama dokümanı — opt-out/opt-in API'leri, rıza banner entegrasyon uyarısı.
- PostHog fiyatlandırma sayfası — Free ve Pay-as-you-go plan detayları (16 Eylül 2026 itibarıyla).
- Amplitude fiyatlandırma sayfası — Free plan: kredi kartı yok, aylık 2 milyon event, unlimited seats (16 Eylül 2026 itibarıyla).
- Amplitude veri planlama rehberi — taksonomi tasarım adımları, event/user property tanımları, adlandırma sözleşmesi.
- Amplitude iOS Swift SDK dokümanı — init, track, identify, flush, autocapture, optOut, debug log kod örnekleri.
- Amplitude Unified SDK dokümanı — Analytics/Experiment/Session Replay birleşik arayüzü, serverZone parametresi.
- 9to5mac — Apple iOS 27 yayın tarihi onayı — 14 Eylül 2026 yayın tarihi.
- 9to5mac — Almanya'da ATT prompt değişiklikleri — Apple'ın AB'ye özel 8 ATT değişikliği.
- Apple App Tracking Transparency dokümantasyonu —
ATTrackingManager.requestTrackingAuthorizationve ATT kapsamı. - PostHog self-host dokümanı — self-host'un resmen desteklenmediği ve PostHog Cloud'un önerildiği uyarısı.
- posthog-ios CHANGELOG.md — 3.74.0
sessionReplayConfig.captureTouchesve 3.76.0persistOptOutdeğişiklikleri.

