Profiller nasıl çalışır
Uygulamanızdaki her kullanıcı, satın alımlarını, olaylarını ve abonelik durumunu takip eden bir Adapty profiline sahip olur. Profillerin nasıl oluşturulduğunu ve birbirine bağlandığını anlamak; entegrasyon hatalarını önlemenize, veri parçalanmasını engellemenize ve Profiller bölümündeki verileri doğru yorumlamanıza yardımcı olur.
Profil oluşturma
Adapty, bir kullanıcı uygulamanızı ilk kez açtığında otomatik olarak bir profil oluşturur.
Customer User ID olmadan profil anonimdir. Her şu durumda yeni bir anonim profil oluşturulur:
- Kullanıcı uygulamayı yeniden yüklediğinde
- Kullanıcı uygulamanızdan çıkış yaptığında (uygulamanız
Adapty.logout()çağırdığında)
Satın alımlar, kalıcı bir kullanıcı kimliğine değil, uygulama kurulumuna bağlıdır.
Customer User ID ile profil, yeniden yüklemeler ve cihazlar arasında kalıcı olur. Customer user ID kullanmak şunları sağlar:
- Kullanıcıyı uygulama yeniden yüklemeleri ve birden fazla cihaz üzerinden takip edebilirsiniz.
- Kullanıcıları Profiles bölümünde customer user ID’lerine göre bulabilirsiniz.
- Customer user ID’yi sunucu tarafı API’sinde kullanabilirsiniz.
- Adapty, customer user ID’yi tüm entegrasyonlara gönderir.
Customer user ID ile profil davranışı, bunu ne zaman ayarladığınıza bağlıdır:
- SDK etkinleştirmesinde: Adapty, o customer user ID’ye sahip mevcut profili kullanır (geri dönen kullanıcılar için) veya yeni bir profil oluşturur (ilk kez gelen kullanıcılar için).
- SDK etkinleştirmesinden sonra: Adapty, etkinleştirmede anonim bir profil oluşturur. Kullanıcıyı daha sonra tanımladığınızda Adapty, customer user ID’yi anonim profile bağlar (ilk kez gelen kullanıcılar için) veya o ID’ye sahip mevcut profile geçer (geri dönen kullanıcılar için).
Hangi yaklaşımı kullanmalısınız:
- Uygulama başlangıcında customer user ID mevcutsa (örneğin, önceki bir oturumdan kaydedilmişse) — SDK’yı başlatırken
activate()fonksiyonuna iletin. - Kullanıcılar uygulama başladıktan sonra giriş yapıyorsa — kimlik doğrulamanın ardından
identify()fonksiyonunu çağırın. Adapty, ID’yi mevcut profile bağlar (ID yeniyse) veya mevcut profile geçer (ID zaten varsa). - Kullanıcılar giriş yapmadan önce satın alım yapabiliyorsa — girişin ardından
identify()fonksiyonunu çağırın. Customer user ID Adapty’de zaten mevcutsa, mevcut access level’ı senkronize etmek için ardından profili alın.
Uygulama ayrıntıları için kullanıcıları tanımlama SDK kılavuzuna bakın.
Geri dönen bir kullanıcı daha önce uygulamanızı customer user ID olmadan kullandıysa, SDK etkinleştirmesinde tanımlamaya başladığınızda bu anonim profiller otomatik olarak birleştirilmez. Bu tür kullanıcılar için eksiksiz geçmişi korumak amacıyla bunun yerine girişten sonra identify() kullanın.
Ebeveyn ve miras alan profiller
Aynı mağaza tarafındaki abonelik birden fazla Adapty profiliyle ilişkilendirildiğinde, Adapty bu profilleri bir zincir olarak ele alır: bir ebeveyn profil ve aynı satın almadan erişimi paylaşan bir ya da birden fazla miras alan profil.
Bu durum şu koşullarda ortaya çıkar:
- Kullanıcı hesapları arasında ücretli erişim paylaşımı etkinleştirildiğinde ve bir kullanıcı, daha önce farklı bir profilin satın alma yaptığı bir cihazda oturum açtığında.
- Bir kullanıcı uygulamayı
customer_user_idolmadan yeniden yüklediğinde ve yeni profil önceki kurulumun satın almasını devraldığında. - Farklı tanımlı kullanıcılar aynı cihazda satın almaları geri yüklediğinde.
- Bir uygulama Apple Team ID’leri arasında aktarıldığında ve yeni uygulama eski Team ID altında yapılan satın almaları devraldığında.
Üst öğenin nasıl seçildiği. Üst profil, satın alma işlemini ilk kaydeden profildir — bu, profil oluşturma sırasına göre değil, Adapty’deki satın alma makbuzu sırasına göre belirlenir. Örneğin: uygulamayı yükleyip hiçbir satın alma yapmıyorsunuz, ardından yeniden yükleyip bir abonelik satın alıyorsunuz. İkinci profil, satın alma işlemini gerçekleştirdiği için üst profil olur. Birinci profil ise kalıtımcı olur ve paylaşım yoluyla erişim kazanır.
Olaylar nasıl dağıtılır:
- İşlemsel olaylar (satın almalar, yenilemeler, iptaller, faturalama sorunları, ek süreler, iade): Yalnızca satın almayı gerçekleştiren üst profilde görünür. Tüm abonelik yenilemeleri ve güncellemeleri bu profilde görünmeye devam eder.
access_level_updatedolayları: Access level durumu her değiştiğinde hem üst hem de devralan profillerde görünür. Bu sayede bağlı tüm profiller güncel erişim durumlarından haberdar olur. Ana profil, işlem geçmişinin tamamını gösterir. Miras alan profiller ise yalnızca kendi access level güncellemelerini ve Access level bölümünde ana profile bir bağlantıyı gösterir.
Aynı aboneliği farklı profiller üzerinden takip etme.
Her miras alan profilin kendine ait bir profile_id’si vardır; bu nedenle profile_id, bir zincir boyunca tutarlı değildir. Aynı aboneliği birden fazla profil arasında tanımlamak için — örneğin webhook olaylarını eşleştirirken veya kontrol paneli profillerini tek bir kullanıcıyla ilişkilendirirken — bunun yerine mağaza tarafındaki tanımlayıcıyı kullanın.
| Alan | Kullanım amacı |
|---|---|
store_original_transaction_id | Profiller arasında bir abonelik zincirini tanımlamak için. Her Apple aboneliğine özel benzersiz bir değerdir. |
profiles_sharing_access_level (webhook alanı) | Paylaşım etkinleştirildiğinde, abonelik tarafından yetkilendirilen tüm profiller. |
profile_id | Profiller arası takip için uygun değildir — her devralan profilin kendine ait bir profile_id’si vardır. |
Profil olmadan işlemler
Adapty’deki bazı işlemler herhangi bir profile bağlı değildir — bunlar analitiklerde ve dışa aktarmalarda görünür, ancak Profiller listesinde yer almaz. Bu durum, Adapty SDK’sı aracılığıyla uygulamanıza hiç bağlanmamış kullanıcılara ait sunucudan sunucuya (S2S) mağaza bildirimleri için geçerlidir. Bilinen kaynaklar şunlardır:
- App Store S2S bildirimleri (iade etkinlikleri dahil)
- Google Play S2S bildirimleri
- Stripe ve Paddle webhook etkinlikleri
Bu işlemler:
- Analitik grafiklerde görünürler (genel metriklere dahil edilirler)
- Dışa aktarımlarda görünürler (S3, GCS, BigQuery) ve
profile_iddeğerlerinullolarak ayarlanır - Profiller listesinde görünmezler — bağlanacak bir profil yoktur
Analitik veya dışa aktarımlarda, Profiller arayüzünde bulamadığınızdan daha fazla etkinlik görüyorsanız, bu fark büyük olasılıkla profile bağlı olmayan bu işlemlerden kaynaklanmaktadır. Bunları bir dışa aktarımda bulmak için profile_id IS NULL olan satırları filtreleyin.
Kullanıcı hesapları arasında ücretli erişimi paylaşma
Access level paylaşım politikanızı ayarlamak için General ayarlar sayfasında bir paylaşım seçeneği belirleyin. Sandbox ortamı için ayrı bir politika ayarlayabilirsiniz.
Etkin (varsayılan)
Tanımlanmış kullanıcılar (Customer User ID atanmış olanlar), cihazları aynı Apple/Google kimliğiyle oturum açmışsa Adapty tarafından sağlanan access level’ı paylaşabilir. Bu, bir kullanıcı uygulamayı yeniden yükleyip farklı bir e-posta ile giriş yaptığında önceki satın alımına erişimini kaybetmemesi için kullanışlıdır. Bu seçenekte, birden fazla tanımlanmış kullanıcı aynı access level’ı paylaşabilir.
Access level paylaşılsa da geçmiş ve gelecekteki tüm işlemler, tutarlı bir analitik yapısı ve eksiksiz bir işlem geçmişi için özgün Customer User ID’de olay olarak kaydedilir; deneme süreleri, abonelik satın alımları, yenilemeler ve daha fazlası aynı profile bağlı kalır.
Erişimi yeni kullanıcıya aktar
Tanımlanmış kullanıcılar, farklı bir Customer User ID ile giriş yapsalar ya da uygulamayı yeniden yükleseler bile cihaz aynı Apple/Google kimliğiyle oturum açık olduğu sürece Adapty tarafından sağlanan access level’a erişmeye devam edebilir.
Önceki seçenekten farklı olarak Adapty, satın alımı tanımlanmış kullanıcılar arasında aktarır. Bu sayede satın alınan içeriğe erişim sağlanır; ancak her seferinde yalnızca bir kullanıcı erişime sahip olabilir. Örneğin, UserA bir abonelik satın alırsa ve UserB aynı cihazda oturum açıp işlemleri geri yüklerse, UserB aboneliğe erişim kazanır ve UserA’nın erişimi iptal edilir.
Kullanıcılardan biri (yeni veya eski) tanımlanmamışsa access level, bu profiller arasında Adapty’de yine de paylaşılmaya devam eder.
Access level aktarılsa da geçmiş ve gelecekteki tüm işlemler, tutarlı bir analitik yapısı ve eksiksiz bir işlem geçmişi için özgün Customer User ID’de olay olarak kaydedilir; deneme süreleri, abonelik satın alımları, yenilemeler ve daha fazlası aynı profile bağlı kalır.
Erişimi yeni kullanıcıya aktar seçeneğine geçtikten sonra access level’lar profiller arasında hemen aktarılmaz. Her bir access level için aktarım işlemi yalnızca Adapty, mağazadan abonelik yenileme, geri yükleme veya işlem doğrulama gibi bir olay aldığında tetiklenir.
Devre Dışı
Bir access level’a ilk kavuşan tanımlanmış kullanıcı profili, bu erişimi kalıcı olarak elinde tutar. İş mantığınız satın alımların tek bir Customer User ID’ye bağlı kalmasını gerektiriyorsa en uygun seçenek budur.
Anonim kullanıcılar arasında access level paylaşımının yine de geçerli olduğunu unutmayın.
Sahibin kullanıcı profilini silerek bir satın alımın “bağını koparabilirsiniz”. Silme işleminin ardından access level, ister anonim ister tanımlanmış olsun, ilk talep eden kullanıcı profiline açık hale gelir.
Paylaşımı devre dışı bırakmak yalnızca yeni kullanıcıları etkiler. Kullanıcılar arasında zaten paylaşılmış olan abonelikler, bu seçenek devre dışı bırakıldıktan sonra da paylaşılmaya devam eder.
Apple ve Google, uygulama içi satın alımların kullanıcılar arasında paylaşılmasını veya aktarılmasını zorunlu kılar; çünkü satın alımı Apple/Google kimliğiyle ilişkilendirirler. Paylaşım olmadan, sonraki yeniden yüklemelerde satın alımları geri yüklemek çalışmayabilir.
Paylaşımı devre dışı bırakmak, kullanıcıların oturum açtıktan sonra erişimlerini yeniden kazanmalarını engelleyebilir.
Paylaşımı yalnızca kullanıcılarınızın satın alma yapmadan önce oturum açmaları zorunluysa devre dışı bırakmanızı öneririz. Aksi takdirde, tanımlanmış bir kullanıcı abonelik satın alıp başka bir hesaba giriş yaparak erişimini kalıcı olarak kaybedebilir.
Hangi ayarı seçmeliyim?
| Uygulamam… | Seçilecek seçenek |
|---|---|
| Giriş sistemi yok ve yalnızca Adapty’nin anonim profil kimliklerini kullanıyor. | Access level’lar her üç seçenekte de anonim profil kimlikleri arasında her zaman paylaşıldığından varsayılan seçeneği kullanın. |
| İsteğe bağlı bir giriş sistemine sahip ve müşterilerin hesap oluşturmadan önce satın alma yapmasına izin veriyor. | Hesap oluşturmadan satın alan müşterilerin işlemlerini daha sonra geri yükleyebilmesini sağlamak için Erişimi yeni kullanıcıya aktar’ı seçin. |
| Satın almadan önce hesap oluşturmayı zorunlu kılıyor ancak satın alımların birden fazla Customer User ID’ye bağlanmasına izin veriyor. | Yalnızca tek bir Customer User ID’nin erişime sahip olmasını sağlarken kullanıcıların ücretli erişimlerini kaybetmeden farklı bir Customer User ID ile giriş yapabilmesine olanak tanımak için Erişimi yeni kullanıcıya aktar’ı seçin. |
| Satın almadan önce hesap oluşturmayı zorunlu kılıyor ve satın alımların tek bir Customer User ID’ye bağlı kalmasını katı kurallarla şart koşuyor. | İşlemlerin hesaplar arasında hiçbir zaman aktarılmamasını sağlamak için Devre Dışı’nı seçin. |
Gelecek tarihli olay zaman damgaları (Apple/iOS)
Bu davranış Apple App Store’a özgüdür. Google Play’in bildirim sistemi olayları önceden göndermez.
Apple, yenileme olaylarını önceden gönderdiği için profillerdeki ve entegrasyonlardaki olay zaman damgaları gelecek tarihleri gösterebilir.
- Neden olur: Apple bunu, aboneliklerin sona ermeden önce otomatik olarak yenilenmesini sağlamak ve kullanıcı hizmet kesintilerini önlemek için yapar. Daha fazla ayrıntı için Apple’ın Geliştirici Forumuna bakın: Server Notifications for Subscriptions.
- Etkilenen olay türleri: Genellikle bu durum abonelik yenilemeleri ve deneme sürümünden ücretli dönüşümleri için geçerlidir. Bu olaylar, Apple sistemleri önceden bilgilendirdiği için gelecek zaman damgalarına sahip olabilir.
- Diğer olay türleri: Ek uygulama içi satın alımlar ve abonelik planı değişiklikleri, bu olaylar önceden tahmin edilemeyeceği için gerçek zaman damgalarıyla kaydedilir.
- Analitik ve Olay Akışı üzerindeki etkisi: Bu olaylar yalnızca zaman damgaları geçtikten sonra Analytics ve Event Feed’de görünür. Gelecek zaman damgalı olaylar her iki bölümde de gösterilmez.
- Entegrasyonlar üzerindeki etkisi: Adapty, olayları alır almaz entegrasyonlara gönderir. Bir olayın gelecek zaman damgası varsa Adapty, bunu entegrasyonunuza gelecek zaman damgası değiştirilmeden gönderir.
Sonraki adımlar
- Kullanıcıları bulmak ve yönetmek için Profiller kontrol panelini kullanmak istiyorsanız Profiller sayfasına bakın.
- Uygulamanızda kullanıcı tanımlamayı ayarlamak için kullanıcıları tanımlama SDK kılavuzuna bakın.
- Erişim paylaşım politikasını yapılandırmak için Kullanıcı hesapları arasında ücretli erişimi paylaşma sayfasına bakın.