Kotlin Multiplatform SDK'da flow ve paywall çekme işlemini optimize etme
Kotlin Multiplatform’da güvenilir bir flow veya paywall çekme işlemi üç şeyi yapar: hızlı render eder, kitleye hedeflenmiş varyantı döndürür ve ağ yavaş olduğunda sorunsuz biçimde yedeklere geçer. Aşağıdaki kurallar bunu sağlamak için gereken zamanlama, önbellekleme ve yedek desenleri kapsar.
Bu kurallar, Adapty.activate() ve Adapty.identify() fonksiyonlarının zaten tamamlandığını varsayar. Bkz. Kotlin Multiplatform SDK’da çağrı sırası.
Kurallar ve tuzaklar
| Bunu yapın | Bunu yapmayın | Neden |
|---|---|---|
| Göstermek üzere olduğunuz placement’ı alın. | Başlatma sırasında tüm placement’ları eş zamanlı olarak önceden alın. | Toplu önceden alma, ana thread’i bloke eder ve ani yükleme sırasında siyah ekrana yol açar. |
getFlow’u attribution’ın çözümlenme şansı bulduktan sonra alın; örneğin activate’ten 1–2 saniye sonra veya setOnProfileUpdatedListener tetiklendikten sonra. | getFlow’u uygulama başlangıcında çağırın. | Attribution henüz gelmemiştir. Flow, varsayılan kitleyle çözümlenir ve segmentleri ile ASA kişiselleştirmesini sessizce atlar. |
Bir loadTimeout ayarlayın ve her placement için bir yedek paywall yapılandırın. | getFlow’u süresiz bekleyin. | Zaman aşımı olmadan, zayıf bağlantıdaki kullanıcılar ağ çözümlenene kadar boş bir ekran görür ya da uygulamayı kapatır. |
fetchPolicy ve loadTimeout parametre referansı için Paywall’ları ve ürünleri getirme sayfasına, doğru placement seçimi için ise Placement’lar sayfasına bakın.
İlk ekran medyasını uygulama paketinden göster
Bir flow, görüntü ve videolarını Adapty’den indirir. İlk ekranın medyasını anında göstermek için bunu uygulama paketinden sunun. Bu, mevcut yerel onboarding görselleri gibi zaten gönderdiğiniz medyayı yeniden kullanmanın iyi bir yoludur.
- Flow & Paywall Builder’da resim veya videoya bir özel medya ID’si ayarlayın. Oraya yüklediğiniz dosya yedek olarak kalır.
- Dosyayı uygulama kaynaklarınıza,
commonMain/composeResources/files/dizinine ekleyin. - Flow görünümünü oluştururken, söz konusu ID için paketlenmiş dosyayı
customAssetsiçinde geçirin:
// "welcome_video", Flow & Paywall Builder'da ayarlanan özel medya kimliğidir
val bundledAssets: Map<String, AdaptyCustomAsset> = mapOf(
"welcome_video" to AdaptyCustomAsset.localVideoResource(
path = Res.getUri("files/videos/welcome.mp4")
),
)
AdaptyUI.createFlowView(
flow = flow,
customAssets = bundledAssets,
).onSuccess { view ->
view.present()
}.onError { error ->
// handle the error
}
Paket haline getirilen dosyalar uygulamanızın indirme boyutunu artırır; bu nedenle yalnızca kullanıcıların ilk gördüğü medyayı paketleyin.
Paketlemediğiniz medya dosyaları yine de anında görünür: flow’un düzeni, bir videonun sabit karesi dahil her görselin küçük düşük çözünürlüklü bir kopyasını içerir ve tam dosya yüklenene kadar bunu gösterir.
customAssets referansının tamamı için bkz. Varlıkları özelleştirme.
Zayıf bağlantı için ayarlama
Sürekli zayıf bağlantının yaşandığı pazarlar için (kırsal alanlar, toplu taşıma, yönlendirme sorunlarından etkilenen bölgeler):
- İlk fetch dışındaki tüm fetchlerde
fetchPolicy = AdaptyPaywallFetchPolicy.ReturnCacheDataElseLoadkullanın. - Adapty kontrol panelindeki her placement için bir yedek paywall yapılandırın.
loadTimeoutdeğerini 3–5 saniyeye ayarlayın ve zaman aşımı gerçekleştiğinde yedek paywalla geçin.- Flow gösterimini
Adapty.getProfile()çağrısına bağlamayın.getFlow’u bağımsız çağırın; böylece yavaş bir profil yanıtı kullanıcı arayüzünü bloke etmez.