Flutter SDK'da flow ve paywall çekme işlemini optimize etme

Flutter’da güvenilir bir flow veya paywall çekme işlemi üç şeyi başarır: hızlı render eder, kitleye özel varyantı döndürür ve ağ yavaş olduğunda sorunsuz bir şekilde yedekleme yapar. Aşağıdaki kurallar, bunu sağlamak için zamanlama, önbellekleme ve yedek desenleri kapsar.

Tip

Bu kurallar, Adapty().activate() ve Adapty().identify() fonksiyonlarının zaten tamamlandığını varsayar. Bkz. Flutter SDK’da çağrı sırası.

Kurallar ve dikkat edilmesi gereken noktalar

Bunu yapınBunu yapmayınNeden
Göstermek üzere olduğunuz placement’ı getirin.Başlatmada tüm placement’ları aynı anda önceden getirin.Toplu önceden getirme, ana thread’i bloke eder ve bu sürede siyah bir ekran görünür.
getFlow’u, attribution’ın çözümlenme şansı bulduktan sonra getirin — örneğin, activate’den 1-2 saniye sonra veya didUpdateProfileStream tetiklendikten sonra.getFlow’u runApp’ten önce main() içinde çağırın.Attribution henüz gelmemiştir. Flow, varsayılan kitleye göre çözümlenir ve sessizce segmentleri ile ASA kişiselleştirmesini atlar.
Bir loadTimeout belirleyin ve her placement için bir yedek paywall yapılandırın.getFlow’u süresiz olarak bekleyin.Zaman aşımı olmadan, zayıf bağlantıdaki kullanıcılar ağ çözümlenene kadar — ya da uygulamayı kapatana kadar — boş bir ekran görür.

Paywall ve ürünleri getirme sayfasında fetchPolicy ve loadTimeout parametre referanslarına, Placement’lar sayfasında ise doğru placement’ı seçmeye ilişkin bilgilere ulaşabilirsiniz.

İlk ekran medyasını uygulama paketinden göster

Bir flow, resimlerini ve videolarını Adapty’den indirir. İlk ekranın medyasını anında göstermek için bunu uygulama paketinden sunun. Bu, zaten gönderdiğiniz medyayı yeniden kullanmanın iyi bir yoludur; örneğin mevcut bir native onboarding’in görsellerini bu şekilde değerlendirebilirsiniz.

  1. Flow & Paywall Builder’da, görsel veya videoya özel medya kimliği ayarlayın. Oraya yüklediğiniz dosya yedek olarak kalır.
  2. Dosyayı Flutter asset’lerinize ekleyin ve pubspec.yaml dosyasındaki assets bölümüne listeleyin.
  3. Flow görünümünü oluştururken, customAssets içinde o kimliğe ait paketlenmiş dosyayı geçirin:
// "welcome_video", Flow & Paywall Builder'da ayarlanan özel medya ID'sidir
final bundledAssets = {
  'welcome_video': AdaptyCustomAsset.localVideoAsset(
    assetId: 'assets/videos/welcome.mp4',
  ),
};

try {
  final view = await AdaptyUI().createFlowView(
    flow: flow,
    customAssets: bundledAssets,
  );
} on AdaptyError catch (e) {
  // hatayı işle
}

Paketlenmiş 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 yine de hemen görünür: flow’un düzeni, her görselin küçük düşük çözünürlüklü bir kopyasını (video için de bir sabit kare dahil) 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, transit bölgeler, yönlendirme sorunları yaşanan bölgeler):

  • İlk fetch hariç her fetch işleminde fetchPolicy: AdaptyFlowFetchPolicy.returnCacheDataElseLoad kullanın.
  • Adapty Kontrol Paneli’nde her placement için bir yedek paywall yapılandırın.
  • loadTimeout değerini 3–5 saniye olarak ayarlayın ve zaman aşımı gerçekleştiğinde yedek paywalla geçin.
  • Flow gösterimini getProfile() sonucuna bağlamayın. Yavaş bir profilin arayüzü bloke etmemesi için getFlow işlevini bağımsız olarak çağırın.