Flutter SDK'da onboarding sunma

Bir onboarding’i builder ile özelleştirdiyseniz, Flutter uygulama kodunuzda bunu kullanıcıya göstermek için ayrıca render etmenize gerek yok. Bu tür bir onboarding, hem gösterilecek içeriği hem de nasıl gösterileceğini kapsar.

Başlamadan önce şunların hazır olduğundan emin olun:

  1. Adapty Flutter SDK 3.8.0 veya daha yeni bir sürümünü yüklediniz.
  2. Bir onboarding oluşturdunuz.
  3. Onboarding’i bir placement’a eklediniz.

Adapty Flutter SDK, onboarding’leri sunmak için iki yöntem sunar:

  • Bağımsız ekran

  • Gömülü widget

Bağımsız ekran olarak sunma

Bir onboarding’i bağımsız ekran olarak göstermek için createOnboardingView metoduyla oluşturulan onboardingView üzerinde onboardingView.present() metodunu kullanın. Her view yalnızca bir kez kullanılabilir. Onboarding’i tekrar göstermeniz gerekiyorsa yeni bir onboardingView örneği oluşturmak için createOnboardingView’ı bir kez daha çağırın.

Aynı onboardingView’ı yeniden oluşturmadan tekrar kullanmak AdaptyUIError.viewAlreadyPresented hatasına yol açabilir.

try {
  await onboardingView.present();
} on AdaptyError catch (e) {
  // handle the error
} catch (e) {
  // handle the error
}

Onboarding’i kapatma

Onboarding’i programatik olarak kapatmanız gerektiğinde dismiss() metodunu kullanın:

try {
  await onboardingView.dismiss();
} on AdaptyError catch (e) {
  // handle the error
} catch (e) {
  // handle the error
}

iOS sunum stilini yapılandırma

present() metoduna iosPresentationStyle parametresini geçirerek onboarding’in iOS’ta nasıl sunulacağını yapılandırın. Parametre AdaptyUIIOSPresentationStyle.fullScreen (varsayılan) veya AdaptyUIIOSPresentationStyle.pageSheet değerlerini kabul eder.

try {
  await onboardingView.present(iosPresentationStyle: AdaptyUIIOSPresentationStyle.pageSheet);
} on AdaptyError catch (e) {
  // handle the error
} catch (e) {
  // handle the error
}

Widget hiyerarşisine gömme

Bir onboarding’i mevcut widget ağacınıza gömmek için AdaptyUIOnboardingPlatformView widget’ını doğrudan Flutter widget hiyerarşinizde kullanın.

AdaptyUIOnboardingPlatformView(
  onboarding: onboarding, // The onboarding object you fetched
  onDidFinishLoading: (meta) {
  },
  onDidFailWithError: (error) {
  },
  onCloseAction: (meta, actionId) {
  },
  onPaywallAction: (meta, actionId) {
  },
  onCustomAction: (meta, actionId) {
  },
  onStateUpdatedAction: (meta, elementId, params) {
  },
  onAnalyticsEvent: (meta, event) {
  },
)

Android platform view’ın çalışması için MainActivity’nizin FlutterFragmentActivity’yi genişlettiğinden emin olun:

class MainActivity : FlutterFragmentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
    }
}

Onboarding sırasında yükleme ekranı

Bir onboarding sunarken, alttaki view başlatılırken açılış ekranınız ile onboarding arasında kısa bir yükleme ekranı görebilirsiniz. Bunu ihtiyacınıza göre farklı şekillerde yönetebilirsiniz.

onDidFinishLoading ile açılış ekranını kontrol etme

Bu yaklaşım yalnızca onboarding’i widget olarak gömerken kullanılabilir. Bağımsız ekran sunumu için mevcut değildir.

Önerilen platformlar arası yaklaşım, onboarding tam olarak yüklenene kadar açılış ekranınızı veya özel overlay’inizi görünür tutmak, ardından manuel olarak gizlemektir.

Gömülü widget kullanırken, kendi widget’ınızı onun üzerine yerleştirin ve onDidFinishLoading tetiklendiğinde overlay’i gizleyin:

AdaptyUIOnboardingPlatformView(
  onboarding: onboarding,
  onDidFinishLoading: (meta) {
    // Hide your custom splash screen or overlay here
  },
  // ... other callbacks
)

Yerel yükleyiciyi özelleştirme

Bu yaklaşım platforma özgüdür ve yerel UI kodunun bakımını gerektirir. Uygulamanızda zaten ayrı yerel katmanlar kullanmıyorsanız önerilmez.

Varsayılan yükleyiciyi özelleştirmeniz gerekiyorsa platforma özgü layout’larla değiştirebilirsiniz. Bu yaklaşım Android ve iOS için ayrı uygulamalar gerektirir:

  • iOS: Xcode projenize AdaptyOnboardingPlaceholderView.xib ekleyin
  • Android: res/layout klasöründe adapty_onboarding_placeholder_view.xml oluşturun ve burada bir yer tutucu tanımlayın

Onboarding’lerde bağlantıların nasıl açılacağını özelleştirme, Adapty SDK v.3.15.1 sürümünden itibaren desteklenmektedir.

Varsayılan olarak onboarding’lerdeki bağlantılar uygulama içi tarayıcıda açılır. Bu, kullanıcıların uygulama değiştirmeden web sayfalarını görüntüleyebildiği sorunsuz bir deneyim sunar.

Bağlantıların bunun yerine harici tarayıcıda açılmasını tercih ediyorsanız externalUrlsPresentation parametresini AdaptyWebPresentation.externalBrowser olarak ayarlayarak bu davranışı özelleştirebilirsiniz:

Güvenli alan dolguları devre dışı bırakma (Android)

Android cihazlarda onboarding view, durum çubuğu ve gezinme çubuğu gibi sistem UI öğelerinden kaçınmak için varsayılan olarak güvenli alan dolgularını otomatik uygular. Ancak bu davranışı devre dışı bırakmak ve layout üzerinde tam kontrol sahibi olmak istiyorsanız bunu uygulamanıza bir boolean kaynağı ekleyerek yapabilirsiniz:

  1. android/app/src/main/res/values dizinine gidin. bools.xml dosyası yoksa oluşturun.

  2. Aşağıdaki kaynağı ekleyin:

<resources>
    <bool name="adapty_onboarding_enable_safe_area_paddings">false</bool>
</resources>

Bu değişikliklerin uygulamanızdaki tüm onboarding’ler için genel olarak geçerli olduğunu unutmayın.