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:

  1. Kullanıcıyı uygulama yeniden yüklemeleri ve birden fazla cihaz üzerinden takip edebilirsiniz.
  2. Kullanıcıları Profiles bölümünde customer user ID’lerine göre bulabilirsiniz.
  3. Customer user ID’yi sunucu tarafı API’sinde kullanabilirsiniz.
  4. 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_id olmadan 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_updated olayları: 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.
98d0dad-non-original_profile.webp

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.

AlanKullanım amacı
store_original_transaction_idProfiller 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_idProfiller 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_id değerleri null olarak 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)

Kimliği belirlenmiş kullanıcılar (Müşteri Kullanıcı Kimliği atanmış olanlar), cihazları aynı Apple/Google ID ile oturum açmışsa Adapty tarafından sağlanan aynı access level’ı paylaşabilir. Bu, kullanıcının uygulamayı yeniden yükleyip farklı bir e-posta ile giriş yapması durumunda bile önceki satın alımına erişimini korumasını sağlar. Bu seçenekte birden fazla kimliği belirlenmiş kullanıcı aynı access level’ı paylaşabilir.

Access level paylaşılıyor olsa da tüm geçmiş ve gelecekteki işlemler; deneme süreleri, abonelik satın alımları, yenilemeler ve daha fazlası dahil olmak üzere tutarlı bir analitik ve eksiksiz bir işlem geçmişi sağlamak amacıyla orijinal Müşteri Kullanıcı Kimliği’nde olay olarak kaydedilir ve aynı profile bağlı kalır.

Erişimi yeni kullanıcıya aktar

Kimliği belirlenmiş kullanıcılar, farklı bir Müşteri Kullanıcı Kimliği ile giriş yapsalar veya uygulamayı yeniden yükleseler bile, cihazları aynı Apple/Google ID ile 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ı kimliği belirlenmiş kullanıcılar arasında aktarır. Bu sayede satın alınan içeriğe erişim sağlanır; ancak aynı anda yalnızca bir kullanıcı erişime sahip olabilir. Örneğin, KullanıcıA bir abonelik satın alır ve KullanıcıB aynı cihazda oturum açarak işlemleri geri yüklerse KullanıcıB aboneliğe erişim kazanırken KullanıcıA’nın erişimi iptal edilir.

Kullanıcılardan biri (yeni veya eski) kimliği belirlenmemişse, access level yine de Adapty’deki bu profiller arasında paylaşılmaya devam eder.

Access level aktarılıyor olsa da tüm geçmiş ve gelecekteki işlemler; deneme süreleri, abonelik satın alımları, yenilemeler ve daha fazlası dahil olmak üzere tutarlı bir analitik ve eksiksiz bir işlem geçmişi sağlamak amacıyla orijinal Müşteri Kullanıcı Kimliği’nde olay olarak kaydedilir ve 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. Belirli bir access level için aktarım süreci; abonelik yenilemesi, geri yükleme veya işlem doğrulama gibi mağazadan bir olay alındığında tetiklenir.

Devre Dışı

Bir access level alan ilk kimliği belirlenmiş kullanıcı profili, bu erişimi kalıcı olarak elinde tutar. İş mantığınızın satın alımların tek bir Müşteri Kullanıcı Kimliği’ne bağlı olmasını gerektirdiği durumlarda en uygun seçenektir.

Anonim kullanıcılar arasında access level paylaşımının devam ettiğini unutmayın.

Bir satın alımı “ayırmak” için kullanıcının profilini silebilirsiniz. Silme işleminin ardından access level, ister anonim ister kimliği belirlenmiş 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şılmakta 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ı belirli bir kullanıcıyla ilişkilendirmek için Apple/Google ID’ye güvenirler. Paylaşım olmadan, sonraki yeniden yüklemelerde satın alımların geri yüklenmesi çalışmayabilir.

Paylaşımı devre dışı bırakmak, kullanıcıların giriş yaptıktan sonra erişimi yeniden kazanamamasına neden olabilir.

Paylaşımı yalnızca kullanıcılarınızın satın alma yapmadan önce giriş yapmasının zorunlu olduğu durumlarda devre dışı bırakmanızı öneririz. Aksi takdirde, kimliği belirlenmiş 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 ID’lerini kullanıyor.Access level’lar her üç seçenekte de anonim profil ID’leri arasında her zaman paylaşıldığından varsayılan seçeneği kullanın.
İsteğe bağlı giriş sistemine sahip ve müşterilerin hesap oluşturmadan önce satın alım yapmasına izin veriyor.Hesapsız satın alım yapan müşterilerin işlemlerini daha sonra geri yükleyebilmesini sağlamak için Erişimi yeni kullanıcıya aktar seçeneğini belirleyin.
Satın alım öncesinde hesap oluşturmayı zorunlu kılıyor ancak satın alımların birden fazla Müşteri Kullanıcı Kimliği’ne bağlanmasına izin veriyor.Aynı anda yalnızca bir Müşteri Kullanıcı Kimliği’nin erişime sahip olmasını sağlarken kullanıcıların ücretli erişimlerini kaybetmeden farklı bir Müşteri Kullanıcı Kimliği ile giriş yapabilmesine olanak tanımak için Erişimi yeni kullanıcıya aktar seçeneğini belirleyin.
Satın alım öncesinde hesap oluşturmayı zorunlu kılıyor ve satın alımları tek bir Müşteri Kullanıcı Kimliği’ne bağlayan katı kurallara sahip.İşlemlerin hesaplar arasında hiçbir zaman aktarılmamasını sağlamak için Devre Dışı seçeneğini belirleyin.

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