Adapty Kotlin Multiplatform SDK'yı v4.1'e Geçirin
Adapty Kotlin Multiplatform SDK 4.1, 4.x serisinin ilk kararlı sürümüdür — 4.0 yalnızca beta olarak yayımlandığından, 3.x sürümündeyseniz doğrudan 4.1’e geçiş yapabilirsiniz. Bu kılavuz, 4.0’da tanıtılan flow’lar ile bunların üzerine eklenen 4.1 değişikliklerini kapsayan tam geçiş sürecini açıklamaktadır.
4.x serisi, flow’ları tanıtır ve paywall API’lerini buna göre yeniden adlandırır. Yeni API’ler hem Flow & Paywall Builder hem de eski Paywall Builder ile çalışır — Adapty Kontrol Paneli tarafında herhangi bir kurulum değişikliği gerekmez. Bunun yanı sıra, 4.1 Adapty Attribution’ı opt-in hale getirir, harici attribution API’lerini ve ürün abonelik türünü yeniden adlandırır ve App Store’da tanıtılan uygulama içi satın almaları ekler.
4.0 beta’dan mı geliyorsunuz? Sürümü güncelleyin, ardından yalnızca beş bölüm geçerli: Adapty Attribution varsayılan olarak devre dışı, yeniden adlandırılmış harici attribution API’leri, AdaptyPaywallProductSubscription → AdaptyProductSubscription, App Store tarafından öne çıkarılan uygulama içi satın almalar ve belirli bir düzen seçimi. hasViewConfiguration da flow modelinde geri döndü.
Hızlı referans
| v3 | v4.1 |
|---|---|
| Adapty Attribution otomatik olarak etkin | varsayılan olarak devre dışı — .withAdaptyAttributionEnabled(true) ile etkinleştirin |
Adapty.getPaywall(placementId, locale) | Adapty.getFlow(placementId) |
Adapty.getPaywallForDefaultAudience(placementId, locale) | Adapty.getFlowForDefaultAudience(placementId) |
Adapty.getPaywallProducts(paywall) | Adapty.getPaywallProducts(flow) |
Adapty.logShowPaywall(paywall) | Adapty.logShowFlow(flow) |
AdaptyPaywall | AdaptyFlow |
AdaptyUI.createPaywallView(paywall, ...) | AdaptyUI.createFlowView(flow, ...) |
AdaptyUI.createNativePaywallView(...) → AdaptyNativePaywallView | AdaptyUI.createNativeFlowView(...) → AdaptyNativeFlowView |
AdaptyUIPaywallView | AdaptyUIFlowView |
AdaptyUI.presentPaywallView(view) / dismissPaywallView(view) | AdaptyUI.presentFlowView(view) / dismissFlowView(view) |
AdaptyUI.setPaywallsEventsObserver(observer) | AdaptyUI.setFlowsEventsObserver(observer) |
AdaptyUI.registerPaywallEventsListener / unregisterPaywallEventsListener | AdaptyUI.registerFlowEventsListener / unregisterFlowEventsListener |
AdaptyUIPaywallsEventsObserver | AdaptyUIFlowsEventsObserver |
AdaptyUIPaywallPlatformView(paywall, ...) | AdaptyUIFlowPlatformView(flow, ...) |
paywallViewDidPerformAction, paywallViewDidAppear ve diğer paywallView... callback’leri | flowViewDidPerformAction, flowViewDidAppear ve diğer flowView... callback’leri |
paywallViewDidFailRendering | flowViewDidReceiveError |
String kaynak ile Adapty.updateAttribution(attribution, source) | AdaptyExternalAttributionProvider ile Adapty.updateExternalAttribution(attribution, provider) |
provider string olarak iletilir, örneğin "adjust" | AdaptyExternalAttributionProvider, örneğin AdaptyExternalAttributionProvider.ADJUST |
AdaptyProfile.appliedAttributionSources: List<String> | AdaptyProfile.appliedExternalAttributionProviders: List<AdaptyExternalAttributionProvider> |
AdaptyPaywallProductSubscription | AdaptyProductSubscription |
| Promosyonlu uygulama içi satın almalar otomatik olarak tamamlanır, araya girme imkânı yoktur | OnPromotedPurchaseListener ve Adapty.makePromotedPurchase(product) tamamlamayı uygulamanıza devreder |
AdaptyPaywallProduct adını korur — ürünler hâlâ bir flow’a aittir ve getPaywallProducts da adını korur, artık bir AdaptyFlow alır. getFlow ve getFlowForDefaultAudience metotları artık locale parametresi almaz — bunun yerine createFlowView metoduna iletin. Satın alma ve profil API’leri (makePurchase, restorePurchases, getProfile, identify, updateProfile) ile setFallback aynı imzaları korur; ancak yedek dosyanın kendisini yeniden indirmeniz gerekir — bkz. Yedek dosyalar. Onboarding metotları hâlâ çalışır ancak kullanımdan kaldırılmıştır — bkz. Onboarding API kullanım dışı bırakma. Bazı varsayılan davranışlar değişti — bkz. Varsayılan davranış değişiklikleri.
Kurulum
Versiyonu güncelleyin ve projeyi senkronize edin:
[versions]
adapty-kmp = "<the latest SDK version>"
[libraries]
adapty-kmp = { module = "io.adapty:adapty-kmp", version.ref = "adapty-kmp" }
adapty-kmp-ui = { module = "io.adapty:adapty-kmp-ui", version.ref = "adapty-kmp" }
adapty-kmp-ui modülü yalnızca flow’ları ve paywallları Compose Multiplatform katmanıyla (view.present()) render ediyorsanız gereklidir. Tam kurulum için Adapty SDK’yı Yükle sayfasına bakın.
Temel yerel Adapty SDK’ları her iki platformda da 4.x sürümlerine güncellendi ve otomatik olarak çözümleniyor — herhangi bir derleme değişikliğine gerek yok. iOS deployment target bu sürümde değişmeden 15.0 olarak kalıyor.
⚠️ Adapty Attribution varsayılan olarak devre dışıdır
Adapty Attribution kullanıyorsanız ve SDK 4.1’e opt-in yapmadan güncelleme yaparsanız, sessiz seçice bozulur — kurulumlar kaydedilmeyi bırakır ve hiçbir uyarı verilmez.
Daha önceki sürümlerde SDK, Adapty Attribution için kurulumları otomatik olarak kaydediyordu. SDK sürüm 4.1’den itibaren bu özellik varsayılan olarak kapalıdır: SDK kurulumları kaydetmez, setOnInstallationDetailsListener ile ayarlanan listener hiç tetiklenmez ve getCurrentInstallationStatus AdaptyInstallationStatus.Determined.NotAvailable döndürür.
Adapty Attribution kullanıyorsanız, SDK’yı etkinleştirirken bunu açın:
val config = AdaptyConfig
.Builder("PUBLIC_SDK_KEY")
+ .withAdaptyAttributionEnabled(true)
.build()
Adapty.activate(configuration = config)
Adapty Attribution kullanmıyorsanız herhangi bir değişiklik yapmanıza gerek yoktur.
Flow’ları Getirme
getPaywall → getFlow
Döndürülen tür AdaptyPaywall yerine AdaptyFlow olarak değişir ve locale parametresi, fetch çağrısından createFlowView’a taşınır; özel paywalllar için tüm locale’ler flow.remoteConfigs içinde döndürülür:
- Adapty.getPaywall("YOUR_PLACEMENT_ID", locale = "en")
- .onSuccess { paywall ->
- // use the paywall
+ Adapty.getFlow("YOUR_PLACEMENT_ID")
+ .onSuccess { flow ->
+ AdaptyUI.createFlowView(flow = flow, locale = "en")
}
.onError { error ->
// handle the error
}
locale, createFlowView üzerinde isteğe bağlı olmaya devam eder: bunu atlarsanız görünüm en dilinde ya da flow’un en yerelleştirmesi yoksa flow’un varsayılan yerelleştirmesinde gösterilir. Bkz. Yerelleştirmeler ve yerel ayar kodları.
getPaywallForDefaultAudience aynı şekilde yeniden adlandırılmıştır:
- Adapty.getPaywallForDefaultAudience("YOUR_PLACEMENT_ID", locale = "en")
+ Adapty.getFlowForDefaultAudience("YOUR_PLACEMENT_ID")
getPaywallProducts(paywall) → getPaywallProducts(flow)
getPaywallProducts adını korur ancak artık bir AdaptyFlow alır:
- Adapty.getPaywallProducts(paywall)
+ Adapty.getPaywallProducts(flow)
.onSuccess { products ->
// use the products
}
Yedek dosyalar
Yedek dosya formatı SDK v4’te değişti. Yeni dosyayı Placements > Fallbacks bölümünden indirip uygulamanıza ekleyin.
Veri modeli
getFlow, AdaptyPaywall yerine AdaptyFlow döndürür ve nesne yapısı değişti:
v3 AdaptyPaywall özelliği | v4 AdaptyFlow özelliği | İşlem |
|---|---|---|
remoteConfig: AdaptyRemoteConfig? (tekil) | remoteConfigs: List<AdaptyRemoteConfig> | Bir flow, yapılandırılmış her dil için ayrı bir remote config taşır. Kullanıcıya uygun olanı şu şekilde okuyun: flow.remoteConfigs.firstOrNull { it.locale == "en" }. |
| (yeni) | paywalls: List<AdaptyFlowPaywall> | Her giriş, kendi name, variationId ve productIdentifiers değerlerine sahip flow içindeki bir paywall varyasyonudur. Web paywall yöntemleri AdaptyFlowPaywall alır — bkz. Web paywall yöntemleri. |
productIdentifiers | taşındı | Ürün tanımlayıcıları artık her varyasyonda yer alır: flow.paywalls[i].productIdentifiers. Ürünleri almak için getPaywallProducts(flow) çağrısını yapmaya devam edin. |
hasViewConfiguration | korundu | Flow’un AdaptyUI’ın render edebileceği bir düzen içerip içermediğini bildirir. 4.0 beta sürümünde yoktu, 4.1’de geri geldi — beta için bu kontrolü kaldırdıysanız yeniden kullanabilirsiniz. false, flow’un düzen içermediği anlamına gelir; bu durumda yalnızca remote config olarak ele alın. Ayrıca createFlowView çağırıp hatayı da yönetebilirsiniz (bkz. Flow’ları görüntüleme). |
hasViewConfiguration özelliği AdaptyOnboarding üzerinde de mevcuttur ve değişmemiştir.
Web paywall metodları
openWebPaywall ve createWebPaywallUrl isimlerini korur, ancak paywall parametresi, flow.paywalls içindeki varyantlardan biri olan AdaptyFlowPaywall alan bir flowPaywall parametresiyle değiştirilir. Yine de AdaptyPaywallProduct geçirebilirsiniz:
- Adapty.openWebPaywall(paywall = paywall)
+ flow.paywalls.firstOrNull()?.let { flowPaywall ->
+ Adapty.openWebPaywall(flowPaywall = flowPaywall)
+ }
Flow görüntülemelerini takip etme
logShowPaywall → logShowFlow
logShowPaywall, logShowFlow olarak yeniden adlandırıldı ve artık bir AdaptyFlow alıyor. Olay hâlâ aynı varyasyona karşı kaydedildiğinden, mevcut huni ve A/B testi metrikleri kontrol panelinde herhangi bir değişiklik yapılmadan çalışmaya devam eder.
- Adapty.logShowPaywall(paywall)
+ Adapty.logShowFlow(flow)
v3’te olduğu gibi, Adapty tarafından render edilen flow’ları veya paywall’ları görüntülerken bu metodu çağırmanız gerekmez; Adapty bu görüntülemeleri otomatik olarak takip eder.
Flow’ları görüntüleme
createPaywallView → createFlowView
Factory metodunu yeniden adlandırın ve AdaptyFlow nesnesi geçirin. Dönen görünüm tipi AdaptyUIPaywallView’dan AdaptyUIFlowView’a yeniden adlandırıldı; ancak metodları (present, dismiss) ve isteğe bağlı parametreleri (loadTimeout, preloadProducts, customTags, customTimers, customAssets, productPurchaseParams) değişmedi. Yeni bir isteğe bağlı parametre eklendi: locale. Bu parametre, daha önce getPaywall metoduna geçirdiğiniz locale parametresinin yerini alıyor — bkz. Flow’ları getirme.
customTimers hâlâ mevcut, ancak yalnızca eski Paywall Builder paywalllarını etkiler. Bir flow’un geri sayım zamanlayıcısı, Flow & Paywall Builder’da yapılan davranış ayarlarına göre çalışır; bu nedenle bir flow, buraya ilettiğiniz değerleri yok sayar.
- AdaptyUI.createPaywallView(paywall)
+ AdaptyUI.createFlowView(flow)
.onSuccess { view ->
view.present()
}
.onError { error ->
// handle the error
}
Compose Multiplatform kullanmıyorsanız, yerel fabrika yöntemi de aynı şekilde yeniden adlandırılmıştır:
- AdaptyUI.createNativePaywallView(paywall)
+ AdaptyUI.createNativeFlowView(flow)
createFlowView, flow için yapılandırılmış bir görünüm yoksa AdaptyResult.Error döndürür; bu nedenle v3’teki hasViewConfiguration kontrolünü kaldırıp hatayı doğrudan ele alabilirsiniz:
- if (paywall.hasViewConfiguration) {
- AdaptyUI.createPaywallView(paywall)
- .onSuccess { view -> view.present() }
- }
+ AdaptyUI.createFlowView(flow)
+ .onSuccess { view -> view.present() }
+ .onError { error ->
+ // the flow has no view configured, or view creation failed
+ }
Flow view tek kullanımlıktır: dismiss() çağırdıktan sonra view yok edilir, bu yüzden flow’u tekrar göstermek için createFlowView’i yeniden çağırmanız gerekir.
Olayları işleme
Olaylar gözlemcisi AdaptyUIPaywallsEventsObserver yerine AdaptyUIFlowsEventsObserver olarak yeniden adlandırıldı; callback’lerin paywallView ön eki de flowView olarak değişti. Mevcut handler gövdelerinde kod değişikliği yapmanıza gerek yok — sadece tür adını ve override’ları yeniden adlandırın:
- AdaptyUI.setPaywallsEventsObserver(object : AdaptyUIPaywallsEventsObserver {
- override fun paywallViewDidFinishPurchase(
- view: AdaptyUIPaywallView,
+ AdaptyUI.setFlowsEventsObserver(object : AdaptyUIFlowsEventsObserver {
+ override fun flowViewDidFinishPurchase(
+ view: AdaptyUIFlowView,
product: AdaptyPaywallProduct,
purchaseResult: AdaptyPurchaseResult
) {
// custom logic after purchase
}
})
Bir callback de yeniden adlandırıldı: paywallViewDidFailRendering, flowViewDidReceiveError oldu. Önceki rendering hatalarının yanı sıra diğer satın alma dışı çalışma zamanı hatalarında da tetiklenir:
- override fun paywallViewDidFailRendering(view: AdaptyUIPaywallView, error: AdaptyError) {}
+ override fun flowViewDidReceiveError(view: AdaptyUIFlowView, error: AdaptyError) {}
Callback’lerin tam listesi için Flow ve paywall olaylarını yönetme bölümüne bakın.
Compose platform görünümü
Compose Multiplatform composable ile görünüm gömmek istiyorsanız, AdaptyUIPaywallPlatformView(paywall, ...) bileşeni AdaptyUIFlowPlatformView(flow, ...) olarak yeniden adlandırıldı. Olay geri çağrıları onDid... adlarını korur; yalnızca onDidFailRendering, onDidReceiveError olarak değişti:
- AdaptyUIPaywallPlatformView(
- paywall = paywall,
+ AdaptyUIFlowPlatformView(
+ flow = flow,
onDidFinishPurchase = { view, product, result -> /* ... */ },
)
v3’te olduğu gibi, burada ilettiğiniz callback’ler (ve registerFlowEventsListener aracılığıyla kaydedilen tüm observer’lar) global observer’ın yerine değil, ona ek olarak çalışır — callback’iniz bir olayı gözlemler; global varsayılanın yerini almaz. Değişen varsayılanları aklınızda bulundurun: örneğin, global varsayılan artık satın alma işleminin ardından görünümü kapatmaz.
Yeni API’lar
AdaptyUI.setObserverModeResolver(...)veAdaptyUIObserverModeResolver— SDK Observer mode’da çalışırken flow’lardan başlatılan satın alma ve geri yükleme işlemlerini yönetir. Daha önce bu yalnızca native iOS ve Android SDK’larında kullanılabiliyordu. Bkz. Flow’ları Observer mode’da sunma.AdaptyUI.setSystemRequestsHandler(...)veAdaptyUISystemRequestsHandler— bir flow’dan gelen sistem istekleri (OS izin istemleri ve uygulama inceleme istekleri) için ayrılmıştır. Flow’lar henüz bu istekleri tetiklemediğinden bir handler kaydetmenize gerek yoktur.- Yeni isteğe bağlı
flowViewDidReceiveAnalyticEventcallback’i, bir flow’dan analitik olaylarını raporlar; kullanıcının her açtığı ekran için bir ekran görüntüleme olayıyla başlar. Bkz. Flow ekran görüntülemelerini takip etme. AdaptyUI.openWebUrl(url, openIn)veAdaptyUI.requestAppReview()— bunlar varsayılanOpenUrlActionişlemesini ve varsayılanhandleAppReviewRequest’i destekler; böylece URL’ler ve uygulama inceleme istemleri kutudan çıktığı gibi native olarak işlenir. Yalnızca bu varsayılanları geçersiz kılıyorsanız doğrudan çağırın.AdaptyUIFlowView.locale— view’ın hangi yerelleştirmeyle oluşturulduğunu raporlar; böylece kullanıcının gerçekte hangisini gördüğünü anlayabilirsiniz.AdaptyConfig.ServerCluster.CN— uygulamanızı Adapty’nin Çin sunucularına bağlamak içinDEFAULTveEU’nun yanı sıra yeni bir sunucu kümesi seçeneği.
Yeniden adlandırılan harici attribution API’leri
SDK 4.1 sürümünden itibaren, harici bir sağlayıcıdan (Adjust, AppsFlyer, Branch, Tenjin, Apple Ads veya özel bir sağlayıcı) attribution verisi aktaran API’ler, native SDK’larla uyumlu olacak şekilde yeniden adlandırıldı ve sağlayıcı artık bir string yerine bir tür olarak belirtiliyor. Eski çağrı noktaları için herhangi bir kullanım dışı takma ad bulunmadığından, bunları güncelleyene kadar mevcut kodunuz derlenemez.
updateAttribution → updateExternalAttribution
Metodun adı değiştirildi, source parametresi provider olarak yeniden adlandırıldı ve bu parametre artık String yerine AdaptyExternalAttributionProvider alıyor:
- Adapty.updateAttribution(attribution, "adjust")
+ Adapty.updateExternalAttribution(attribution, AdaptyExternalAttributionProvider.ADJUST)
Attribution verisi hâlâ Map<String, Any> türündedir.
Çağrı, backend veriyi asenkron işleme için kabul ettiğinde tamamlanır. Başarılı bir sonuç, verinin profile zaten uygulandığı anlamına gelmez.
AdaptyExternalAttributionProvider
Sağlayıcı artık önceden tanımlanmış değerlere sahip bir tür: APPLE_ADS, ADJUST, APPSFLYER, BRANCH, TENJIN ve CUSTOM. Diğer sağlayıcılar için tanımlayıcısından bir tane oluşturun:
AdaptyExternalAttributionProvider("your_provider")
Doğrudan oluşturmak, bu SDK sürümünden sonra Adapty’nin eklediği sağlayıcıları da kapsar; tanımlayıcı, bilinmeyen bir değere dönüşmek yerine backend’e değişmeden ulaşır. Baştaki ve sondaki boşluklar kaldırılır.
Her önceden tanımlanmış değer, daha önce updateAttribution’a ilettiğiniz aynı tanımlayıcıyı sarar: AdaptyExternalAttributionProvider.APPLE_ADS.value değeri apple_search_ads’dir ve geri kalanlar kendi küçük harfli isimleridir.
AdaptyProfile.appliedAttributionSources → appliedExternalAttributionProviders
Profile’a uygulanan attribution sağlayıcılarını listeleyen profil özelliği yeniden adlandırıldı ve eleman türü buna göre değiştirildi:
- if (profile.appliedAttributionSources.contains("apple_search_ads")) {
+ if (profile.appliedExternalAttributionProviders.contains(AdaptyExternalAttributionProvider.APPLE_ADS)) {
// Apple Ads attribution has been applied
}
AdaptyPaywallProductSubscription → AdaptyProductSubscription
Abonelik ayrıntıları türü yeniden adlandırıldı; çünkü tanıtılan ürünler artık aynı türü taşıyor. Yalnızca ad değişiyor — her özellik kendi adını ve türünü koruyor:
- val subscription: AdaptyPaywallProductSubscription? = product.subscription
+ val subscription: AdaptyProductSubscription? = product.subscription
App Store’da tanıtılan uygulama içi satın almalar
SDK 4.1, App Store ürün sayfanızda tanıtılan uygulama içi satın almaları iOS’ta uygulamanıza iletir. Önceki sürümler bu tür bir satın almayı otomatik olarak tamamlıyor ve uygulamanıza bunu yakalama imkânı vermiyordu. 4.1 itibarıyla satın alma işlemi, kodunuzu bekleyecek şekilde duraklatılır; bu nedenle daha önce tanıtılan satın almalarla hiç ilgilenmeseniz bile bu değişiklik için aksiyon almanız gerekir.
Tanıtımlı satın almaları desteklemek için bir OnPromotedPurchaseListener kaydedin ve ürünü Adapty.makePromotedPurchase’a geçirerek satın alma işlemini tamamlayın. Kayıtlı bir listener olmadan satın alma tamamlanmaz, askıda kalır: kullanıcı App Store sayfanızda Buy düğmesine dokunur ama uygulamanızda hiçbir şey olmaz. Listener’ı mümkün olan en erken aşamada kaydedin — zamanlama ve tam örnek için bkz. App Store’dan uygulama içi satın almalar.
Belirli bir düzen seçme
createFlowView, createNativeFlowView ve AdaptyUIFlowPlatformView, yeni ve isteğe bağlı bir customLayoutId parametresi alır. Bunu, SDK’nın cihaz türü ve ekran boyutuna göre otomatik olarak seçtiği düzen yerine, flow’un düzen yapılandırmasında belirli bir düzeni render etmek için kullanın. Flow & Paywall Builder henüz özel düzen kimliği atamadığından bu parametreyi ayarlamadan bırakın:
AdaptyUI.createFlowView(flow, customLayoutId = "tablet_landscape")
Hiçbir layout, ID ile eşleşmezse flow, görünüm yapılandırması olmadan yüklenir. Parametre isteğe bağlıdır ve varsayılan değeri null olduğundan mevcut çağrılar etkilenmez.
Varsayılan davranış değişiklikleri
Bu değişiklikler derleme hatası oluşturmaz; bu nedenle çalışma zamanında test edin:
- Satın alma tamamlama: v3’te, varsayılan
paywallViewDidFinishPurchase,AdaptyPurchaseResult.UserCanceleddışındaki her satın alma sonucunda görünümü kapatıyordu. v4’te, varsayılanflowViewDidFinishPurchasehiçbir şey yapmaz; yani satın alma tamamlandıktan sonra flow, siz kapatana kadar açık kalır — bu iOS davranışıyla örtüşür. Otomatik kapanmaya güveniyorsanız, satın alma tamamlandığındaview.dismiss()çağrısını kendiniz yapın. - Android sistem geri tuşu: v3’te, varsayılan
paywallViewDidPerformActionhemCloseActionhem deAndroidSystemBackActionüzerinde görünümü kapatıyordu. v4’te, varsayılan yalnızcaCloseActionile ilgilenir — sistem geri tuşu artık flow’u tek başına kapatmaz; bu, bir flow’un sistem hareketiyle kapatılamadığı iOS davranışıyla örtüşür. Kullanıcılara açık bir çıkış yolu sunun (bir Kapat düğmesi veyaon_device_backeylemi) ya daflowViewDidPerformActioniçinde görünümü kendiniz kapatın. - Görünüm hataları: v3’te, varsayılan
paywallViewDidFailRenderinghiçbir şey yapmıyordu. v4’te, varsayılanflowViewDidReceiveErrorgörünümü kapatır — görünümü açık tutmak veya hatayı farklı ele almak istiyorsanız bu davranışı geçersiz kılın. - Görünümler tek kullanımlıktır:
dismiss()çağrısından sonra görünüm yok edilir. Flow’u tekrar göstermek içincreateFlowViewmetodunu yeniden çağırın.
Onboarding API’sinin kullanımdan kaldırılması
Eski onboarding API’si, v4’te Flow & Paywall Builder lehine kullanımdan kaldırılmıştır. Hâlâ çalışmaktadır ancak gelecekteki bir sürümde kaldırılacaktır; bu nedenle onboardinglarınızı Flow & Paywall Builder’a taşımayı planlayın.
Kullanımdan kaldırılan semboller: getOnboarding, getOnboardingForDefaultAudience, AdaptyUI.createOnboardingView, AdaptyUI.createNativeOnboardingView ve AdaptyUIOnboardingsEventsObserver.