RevenueCat'ten Geçiş
RevenueCat’ten yapılan migration sekiz adımdan oluşur. Kodlama aracısı işin büyük kısmını üstlenir: migration’ları Adapty CLI aracılığıyla çalıştırır ve uygulamanızdaki RevenueCat SDK’sını değiştirir. Aracının erişemeyeceği kısımları siz hallediyorsunuz — gizli anahtarlar ile RevenueCat, App Store Connect ve Google Cloud’daki ayarlar.
- Temel farkları öğrenin.
- Kataloğunuzu Adapty’ye taşıyın.
- Teklifleriniz flow’lara dönüşüyorsa paywall tasarımlarınızı taşıyın.
- RevenueCat SDK’yı değiştirin — bunu kodlama ajanınızla yapın.
- Entegrasyonlarınızı taşıyın.
- Mağaza olaylarını Adapty’ye yönlendirin.
- Uygulamanızın yeni sürümünü test edip yayınlayın.
- (İsteğe bağlı) İşlem geçmişinizi içe aktarın.
Aboneleriniz otomatik olarak taşınacak
Daha önce abonelik etkinleştirmiş tüm kullanıcılar, Adapty SDK içeren uygulamanızın yeni sürümünü açar açmaz Adapty’ye geçiş yapacak. Abonelik durumu doğrulaması ve premium erişim otomatik olarak geri yüklenecektir.
Adapty SDK ile uygulamanızın yeni sürümünü yayınlamadan önce yayın kontrol listemizi incelediğinizden emin olun.
Temel farklılıkları öğrenin
Adapty ve RevenueCat SDK’ları benzer şekilde tasarlanmıştır. En büyük fark ağ kullanımı ve hızdır: Adapty SDK, istediğinizde size olabildiğince hızlı bilgi sunmak için tasarlanmıştır. Örneğin, bir paywall talep ettiğinizde, onboarding veya paywall’unuzu önceden oluşturmak için önce remote config’u alırsınız, ardından ürünleri ayrı bir istekle talep edersiniz.
İsimlendirme biraz farklıdır:
| RevenueCat | Adapty |
|---|---|
| Package | Ürün |
| Offering | Paywall |
| Paywall | Flow |
| Entitlement | Access level |
Adapty’nin placement adında bir kavramı vardır. Bu, uygulamanızda kullanıcının satın alma yapabileceği mantıksal bir yerdir. Çoğu durumda bir veya iki placement’a sahip olursunuz:
- Onboarding (tüm satın almaların %80’i burada gerçekleşir);
- Genel (onboarding sonrasında ayarlarda veya uygulama içinde gösterirsiniz).
Kataloğunuzu Adapty’ye Taşıyın
Katalog migrasyonu, RevenueCat projenizden yeni bir Adapty uygulaması oluşturur: entitlement’lardan access level’lar, paket’lerden ürünler ve her offering için bir placement ile bir paywall ya da flow oluşturulur.
Başlamadan önce
- Terminal komutları çalıştırabilen bir kodlama aracısı kullanın; örneğin Claude Code, Codex veya Cursor.
- Aracınızın kullandığı terminalde Adapty CLI’yi yükleyin ve oturum açın.
- RevenueCat’te, geçiş yapacağınız proje için bir gizli API anahtarı (v2) oluşturun.
- Store’ları kontrol edin. Geçiş yalnızca App Store ve Google Play uygulamalarını kapsar.
RevenueCat gizli API anahtarı oluşturun
Adapty, taşıma işlemi yapacağınız projenin gizli API anahtarını kullanarak RevenueCat kataloğunuzu okur. RevenueCat’teki gizli anahtarlar bir projeye ait olduğundan, anahtarı o projede oluşturmanız gerekir.
- Anahtar listesini açmak için RevenueCat kontrol panelinde projeyi açın, ardından API keys bölümüne gidin.
- Anahtarı oluşturmak için New secret API key seçeneğine tıklayın.
- Anahtarı yapılandırmak için bir ad girin, örneğin
Adapty migration, ve API version alanında V2 seçeneğini belirleyin. - Adapty’nin kataloğu okuyabilmesi için Project configuration permissions ayarını Read only olarak belirleyin. Adapty’nin başka bir izne ihtiyacı yoktur.
- Anahtarı oluşturmak için Generate seçeneğine tıklayın ve ardından kopyalayın.
Genel anahtar değil, gizli API anahtarı kullanın. Uygulamaya özgü genel anahtar, proje yapılandırmasını okuyamaz.
Göç işlemi anahtarı istediğinde, açılan Adapty Kontrol Paneli sayfasına yapıştırın.
Katalog migrasyonunu çalıştırın
-
Migrasyonu başlatmak için agent’ınıza şunu sorun:
Migrate my RevenueCat project to a new Adapty app called "Acme Fitness" with the Adapty CLI. -
RevenueCat’i bağlamak için, aracının açtığı Adapty Kontrol Paneli sayfasına gizli API anahtarını yapıştırın. Anahtar doğrudan Adapty’ye gider; aracı veya CLI üzerinden geçmez.
-
Neyin taşınacağını seçmek için, hangi RevenueCat uygulamalarının birlikte yer aldığını aracıya söyleyin; genellikle aynı ürünün platform başına bir uygulaması olur. Bunlar bir araya gelerek tek bir Adapty uygulaması oluşturur.
-
Eşleştirmeyi tamamlamak için, Adapty’nin kendi başına eşleyemediği öğeler hakkındaki aracı sorularını yanıtlayın. Her offering için, placement’ının ne tutacağını seçin: uygulamanızın kendi çizdiği bir paywall mı, yoksa Flow & Paywall Builder’dan bir flow mu. Adapty, RevenueCat paywallı offering’ler için bir flow önerir.
Warning
Kararlar kesindir. Her entity için bir karar alındığında, Adapty kataloğu oluşturur ve bu işlemden sonra eşleştirmeyi değiştiremezsiniz. :::
Adapty; access level’ları, ürünleri, paywall’ları, flow’ları ve placement’ları bu sırayla oluşturur. Bazıları başarısız olursa agent size nedenini söyler. Her entity Adapty’ye eklendiğinde migrasyon tamamlanır.
- Yeni uygulamanın satın almaları doğrulayabilmesi için Adapty Kontrol Paneli’nde mağazalara bağlayın: App Store ve Google Play.
Migrasyonu bir agent olmadan çalıştırmak için migration komutlarını kullanın. adapty migrations status bir sonraki eylemi ve alacağı girdiyi adlandırır.
RevenueCat varlıklarının Adapty’ye eşlenmesi
- Bir entitlement tanımlayıcısı, access level ID’si olur; yani
customerInfo.entitlements["premium"],profile.accessLevels["premium"]haline gelir. - Hiçbir entitlement vermeyen bir ürün,
premiumaccess level’ı tanır. - Bir offering tanımlayıcısı, placement ID’si olur.
- Offering meta verileri, paywall veya flow’un remote config değerine dönüşür; en fazla 256 KB.
Katalog migrasyonunun kapsamadıkları
- Ürün içermeyen offering’ler.
- App Store ürün ID’sini Adapty’nin reddettiği ürünler; örneğin iki nokta üst üste veya boşluk içeren bir ID. Agent hangilerinin olduğunu söyler ve bunlar için herhangi bir karar vermeniz gerekmez.
- App Store ve Google Play dışındaki mağazalardaki uygulamalar.
- Entegrasyonlar: Bunları ayrıca taşıyın.
Paywall tasarımlarınızı taşıyın
Katalog migrasyonunun oluşturduğu her flow, teklifin ürünleri üzerinde boş bir ekranla yayınlanır. RevenueCat paywall tasarımlarınızı bu flow’larda yeniden oluşturmak için agentınıza şunu sorun:
Migrate my RevenueCat paywall designs to my Adapty app "Acme Fitness" with the Adapty CLI.
Agent, flow’ları tek tek yeniden oluşturur ve siz onayladıktan sonra her birini yayınlar. Videolar ve özel fontlar gibi kendiniz eklemeniz gerekenleri listeler. Tasarımları RevenueCat gizli API anahtarınızla okur; bu nedenle tasarımlar taşınana kadar anahtarı saklayın.
Tasarımı taşınana kadar bir flow boş bir ekran gösterir. Böyle bir flow’u gösteren uygulama sürümü yayınlamayın.
RevenueCat SDK’yı Değiştirme
Bir kodlama ajanı, migration’ın oluşturduğu katalog ID’lerini kullanarak uygulama kodunuzdaki RevenueCat SDK’yı Adapty SDK ile değiştirir. Her çalıştırma tek bir kod tabanını migrate eder: ayrı iOS ve Android projeleri olan bir uygulama için her birinde ayrı ayrı çalıştırın.
Başlamadan önce, migration’ın tek bir incelenebilir diff olarak kalması için uygulamanın deposundaki değişikliklerinizi commit’leyin veya stash’leyin.
-
Kod migration’ını başlatmak için ajanınızı uygulama deposunun kökünde açın ve şunu sorun:
Migrate the app code in this repository from RevenueCat to Adapty with the Adapty CLI, for my Adapty app "Acme Fitness".Ajan sizi Adapty skill’lerini yüklemek için yeniden başlatmanızı isterse, yeniden başlatın ve isteği tekrarlayın.
-
Bir flow’un tasarımı henüz taşınmadıysa, ajana uygulamanın o flow’u gösterip göstermeyeceğini mi yoksa kendi paywall ekranını mı kullanmaya devam edeceğini söyleyin.
-
Kod geçişini tamamlamak için
adapty-migratebranch’indeki değişiklikleri inceleyin, ardından projenizin kök dizinindekiADAPTY_SETUP.mddosyasını takip edin. Bu dosyada ajanın size bıraktıkları listelenmiştir.
Entegrasyonlarınızı taşıyın
Agent, uygulama kodunuzdaki analitik, attribution ve mesajlaşma araçlarını bulur ve her birini Adapty’de nasıl kuracağınızı raporlar. Hiçbir dosyayı değiştirmez. Şunu sorun:
Find the integrations in my app code to set up in my Adapty app "Acme Fitness", with the Adapty CLI.
Eğer depo yalnızca bir platformun kodunu içeriyorsa, ajana diğerinin nerede olduğunu söyle. Ardından entegrasyonları Adapty’ye entegrasyonları taşı bölümünde açıklandığı gibi kur. Webhook’lar, Slack ve bulut depolama dışa aktarmaları uygulama kodunda yer almaz: bunları RevenueCat’teki Integrations sayfasında bulabilirsin.
Mağaza olaylarını Adapty’ye yönlendirin
App Store ve Google Play, uygulamanızın dışında gerçekleşenler de dahil olmak üzere yenilemeleri, iptalleri ve iadeleri sunucunuza bildirimler aracılığıyla iletir. İki migration, RevenueCat her olayı almaya devam ederken Adapty’yi de bu bildirimlere bağlar; böylece kullanıcılarınız yeni uygulama sürümüne geçerken her iki sistem de güncel kalır.
Bu adımlara katalog migration’ı tamamlandıktan sonra başlayın. Adapty, bundle ID ve paket adını orada seçtiğiniz RevenueCat uygulamalarından alır.
App Store olaylarını ilet
Adapty, App Store bildirimlerini alır ve her birini RevenueCat’e iletir.
Başlamadan önce, App Store Connect’te bir Uygulama İçi Satın Alma anahtarı oluşturun ve Issuer ID ile Key ID değerlerini not edin.
-
İletmeyi başlatmak için agentınıza şunu sorun:
Forward App Store events for my Adapty app "Acme Fitness" to Adapty, and keep RevenueCat receiving them. -
Adapty’ye App Store etkinliklerine erişim vermek için, aracının açtığı Adapty Kontrol Paneli sayfasında
.p8dosyasını yükleyin, ardından Issuer ID ve Key ID bilgilerini girin. Anahtar doğrudan Adapty’ye gider ve asla araç veya CLI üzerinden geçmez. -
RevenueCat’in App Store etkinliklerini almaya devam etmesi için, aracıya RevenueCat bildirim URL’sini verin. RevenueCat’te iOS uygulamanızı açın, ardından Apple Server to Server notification settings bölümündeki Apple Server Notification URL’yi kopyalayın. Bu URL
https://api.revenuecat.com/v1/incoming-webhooks/ile başlar. -
App Store’u Adapty’ye yönlendirmek için App Store Connect’te uygulamanızı açın, ardından App Information > App Store Server Notifications bölümüne gidin. Hem Production Server URL hem de Sandbox Server URL alanlarını, aracının size verdiği Adapty URL’sine ayarlayın ve bildirimleri Version 2 olarak seçin. Ayrıntılar için bkz. App Store sunucu bildirimlerini etkinleştirme. Bu noktada RevenueCat’e yönlendirme zaten aktif olduğundan hiçbir etkinlik kaybolmaz.
-
Bağlantıyı doğrulamak için aracınıza URL’lerin ayarlandığını söyleyin. Adapty, App Store’dan bir test bildirimi ister ve bekler. Bildirim gelmezse araç size nedenini açıklar.
Google Play olaylarını iletme
Google Play, bildirimleri bir Pub/Sub konusuna gönderir. Adapty, RevenueCat’in zaten kullandığı konuya ikinci bir abone olarak bağlanır; bu sayede RevenueCat olayları almaya devam eder.
Google Play Console’daki konuyu değiştirmeyin ve bu uygulama için RTDN’yi Etkinleştir adımlarını uygulamayın. Yeni bir konu, RevenueCat’e giden bildirimleri keser.
-
İletmeye başlamak için agent’ınıza şunu sorun:
Forward Google Play events for my Adapty app "Acme Fitness" to Adapty, and keep RevenueCat receiving them. -
Adapty’ye konu erişimi vermek için, RevenueCat’in kullandığı hizmet hesabına ait bir JSON anahtarı oluşturun. Google Cloud Console’da IAM & Admin > Service Accounts bölümüne gidin, genellikle
revenuecat-service-accountadlı hesabı açın, ardından Keys > Add key seçeneğine gidip JSON’ı seçin. Yeni bir anahtar RevenueCat’i etkilemez. Daha fazla bilgi için Google’ın hizmet hesabı anahtarı oluşturma kılavuzuna bakın. -
Anahtarı yüklemek için, agent’ın açtığı Adapty Kontrol Paneli sayfasında dosyayı Google Play service account key (JSON) alanına yükleyin. Anahtar doğrudan Adapty’ye gider; agent veya CLI üzerinden geçmez.
-
Adapty’yi konuya abone etmek için agent’a konu kimliğini verin. RevenueCat’te Google Play uygulama ayarlarınızı açın, ardından Google developer notifications bölümündeki Topic ID’yi kopyalayın. Google Play Console’da aynı değeri Monetize > Monetization setup > Topic name altında görebilirsiniz.
Adapty konuya abone olur, ardından bir test bildirimi yayınlar ve bekler. Bildirim gelmezse, agent size nedenini açıklar.
-
Test bir izin hatası nedeniyle başarısız olursa, hizmet hesabına konunun bulunduğu projede Pub/Sub Editor rolünü veya konu üzerinde Pub/Sub Subscriber rolünü ve anahtarın bulunduğu projeye Pub/Sub Editor rolünü verin. Ardından agent’tan tekrar kontrol etmesini isteyin.
Uygulamanızın yeni sürümünü test edin ve yayınlayın
Bunu okuyorsanız şunları zaten yaptınız demektir:
- Kataloğunuzu Adapty’ye taşıdınız
- Flow kullanıyorsanız paywall tasarımlarınızı taşıdınız
- RevenueCat SDK’sını Adapty ile değiştirdiniz
- Kodlama aracınızdan gelen
ADAPTY_SETUP.mddosyasını tamamladınız - Adapty’deki entegrasyonlarınızı kurdunuz
- App Store ve Google Play olaylarını Adapty’ye ilettiniz
- Sandbox’ta test satın alması yaptınız
- Yeni bir uygulama sürümü yayınladınız
Yukarıdaki maddeleri işaretlediyseniz Sandbox’ta bir test satın alması yapın ve ardından uygulamayı yayınlayın.
Yayın kontrol listesine göz atın.
Mevcut entegrasyonu doğrulamak veya attribution ya da analytics entegrasyonları gibi ek özellikler eklemek için listemizi kullanarak son kontrolü yapın.
(İsteğe Bağlı) İşlem geçmişinizi içe aktarın
İçe aktarma işlemi, profiller ve grafikler bölümlerini kullanıcılarınızın ödeme geçmişiyle doldurur. Kimsenin erişimini etkilemez.
Geçmiş verileri içe aktarmak için acele etmeyin
SDK ile birlikte yayınladıktan sonra geçmiş veri içe aktarma işlemi yapmadan önce en az bir hafta beklemelisiniz. Bu süre zarfında SDK üzerinden satın alma fiyatlarına ilişkin tüm bilgileri alacağız; böylece içe aktardığınız veriler daha doğru olacaktır.
Katalog migrasyonunuzun oluşturduğu uygulamaya geçmişi aktarmak için iki migrasyon kullanılır. RevenueCat planınızda Cloud Export varsa bunu kullanın.
RevenueCat Cloud Export ile
RevenueCat, Adapty’nin uygulamanız için hazırladığı bir bucket’a günlük dışa aktarım yapar ve Adapty aldığı her dosyayı içe aktarır.
-
İçe aktarımı başlatmak için agent’ınıza şunu sorun:
Import the RevenueCat transaction history into my Adapty app "Acme Fitness" with a Cloud Export. -
Dışa aktarımı bağlamak için, aracıya RevenueCat’teki External ID’yi verin. RevenueCat’te Scheduled Data Exports ayarlarını açın, kimlik bilgisi türü olarak IAM Role (ARN) seçin ve RevenueCat’in gösterdiği External ID’yi kopyalayın. External ID gizli bir bilgi değildir.
-
Dışa aktarım ayarlarını tamamlamak için RevenueCat’e aracının verdiği bucket, region ve role ARN bilgilerini girin. Receive new and updated transactions only seçeneğini açın. Aksi takdirde RevenueCat her gün tüm geçmişi dışa aktarır ve Adapty her dosyayı içe aktarır.
RevenueCat ilk dosyayı teslim etmek için 24 saate kadar sürebilir ve Adapty her saat bucket’ta yeni dosyaları arar. Migrasyon, Adapty’nin ilk dosyayı içe aktarmasından bir hafta sonra otomatik olarak tamamlanır. İçe aktarılan her profilin Customer User ID’si rc_last_seen_app_user_id_alias şeklindedir.
Destek aracılığıyla
RevenueCat planınızda Cloud Export yoksa bu yöntemi kullanın: RevenueCat desteği size dışa aktarımı gönderir, Adapty desteği ise içe aktarır.
-
İçe aktarmayı başlatmak için ajanınıza şunu sorun:
Import the RevenueCat transaction history into my Adapty app "Acme Fitness" through support. -
Dışa aktarma talebinde bulunmak için, ajansın size verdiği iki mesajdan birincisini RevenueCat desteğine gönderin.
-
Dışa aktarılan dosyaları içe aktarmak için, RevenueCat’in size gönderdiği dosyaları ikinci mesajla birlikte Adapty desteğine iletin. Dosyaları RevenueCat’in gönderdiği haliyle ekleyin: açmak, yeniden kaydetmek veya birleştirmek, içe aktarmanın beklediği sütun biçimini bozar.
İçe aktarma neleri kapsar
Her işlem için Adapty’ye aşağıdaki veriler içe aktarılacaktır:
| Parametre | Açıklama |
|---|---|
| user_id | Müşteri Kullanıcı Kimliği, Adapty’deki ve sisteminizdeki kullanıcınızın ana tanımlayıcısı. |
| apple_original_transaction_id | Abonelik zincirleri için bu, store_original_transaction_id ile bağlantılı orijinal işlemin satın alma tarihidir. |
| google_product_id | Google Play Store’daki ürün kimliği. |
| google_purchase_token | Google Play tarafından her işlem için sağlanan ve doğrulama için gerekli olan benzersiz tanımlayıcı. |
| country | Kullanıcının ülkesi. |
| created_at | Kullanıcının oluşturulduğu tarih ve saat. |
| subscription_expiration_date | Aboneliğin sona erdiği tarih ve saat. |
| Son kullanıcının e-posta adresi. | |
| phone_number | Son kullanıcının telefon numarası. |
| idfa | Apple tarafından kullanıcının cihazına atanan Reklamverenler için Tanımlayıcı (IDFA). |
| idfv | Bir geliştiriciye ait tüm uygulamalara atanan ve bu uygulamalar arasında bir cihazda paylaşılan Satıcılar için Tanımlayıcı (IDFV). |
| advertising_id | Reklamverenlerin takip amacıyla kullanabileceği, Android işletim sistemi tarafından sağlanan benzersiz tanımlayıcı. |
| attribution_channel | Pazarlama kanalının adı. |
| attribution_campaign | Pazarlama kampanyasının adı. |
| attribution_ad_group | Attribution reklam grubu. |
| attribution_ad_set | Attribution reklam seti. |
| attribution_creative | Attribution kreatif anahtar kelimesi. |
Ayrıca aşağıdaki entegrasyonlara ait entegrasyon tanımlayıcıları içe aktarılacaktır: Amplitude, Mixpanel, AppsFlyer, Adjust ve FacebookAds.
Aktarılmayanlar
- Her işlem, içe aktarma sırasında mağaza tarafından yeniden doğrulanır; dolayısıyla mağazanın artık tanımadığı satırlar işleme alınmaz.
- Gerçek bir mağaza işlem ID’si olmayan satırlar (örneğin, RevenueCat promosyon veya manuel olarak verilmiş yetkiler) işlemsiz profil olarak içe aktarılır. Bu kullanıcıların erişimini geri yüklemek için sunucu taraflı API aracılığıyla onlara bir access level tanıyabilirsiniz.
- İade ve ödeme sorunu geçmişi birebir aktarılmaz: bir iadede yalnızca iptal tarihi korunur; bir aboneliğin ödeme sorunu durumu ise geçmiş tarihler yerine içe aktarma anındaki haliyle kaydedilir.
SSS
Adapty SDK’yı başarıyla yükledim ve yeni bir uygulama sürümü yayınladım. Adapty SDK’lı sürüme geçmeyen eski abonelerime ne olacak?
Kullanıcıların büyük çoğunluğu telefonlarını geceleri şarj eder; App Store da genellikle tüm uygulamaları bu sırada otomatik olarak günceller, dolayısıyla bu bir sorun olmamalıdır. Güncelleme yapmayan küçük bir ücretli abone grubu olabilir, ancak bu kullanıcılar premium içeriğe erişmeye devam eder. Onları güncellemeye zorlamanıza gerek yok.
Geçmiş verilerimi RevenueCat’ten mümkün olduğunca hızlı bir şekilde dışa aktarmam gerekiyor mu, yoksa kaybeder miyim?
Bunu çok hızlı yapmanıza gerek yok; önce Adapty SDK ile bir sürüm yayınlayın, ardından geçmişinizi içe aktarın. Kullanıcılarınızın ödeme geçmişini geri yükleyerek profilleri ve grafikleri dolduracağız.
MMP (AppsFlyer, Adjust, vb.) ve analitik (Mixpanel, Amplitude, vb.) kullanıyorum. Her şeyin düzgün çalışacağından nasıl emin olabilirim?
Öncelikle, veri göndermek istediğiniz üçüncü taraf servislerin ID’lerini SDK’mız aracılığıyla bize iletmeniz gerekir. Attribution entegrasyonu ve analitik entegrasyonu için ilgili kılavuzları okuyun. Geçmiş veriler ve eski kullanıcılar için RevenueCat’ten dışa aktardığınız verilerden bu ID’leri mutlaka bize ilettiğinizden emin olun.