Flutter - Yeni Paywall Builder paywalllarını sunma
Paywall Builder ile bir paywall özelleştirdiyseniz, onu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmenize gerek yoktur. Bu tür bir paywall, hem ne gösterileceğini hem de nasıl gösterileceğini içerir.
Bu kılavuz yalnızca SDK v3.2.0 veya üzerini gerektiren yeni Paywall Builder paywallları içindir. Paywall sunma süreci, farklı Paywall Builder sürümleriyle tasarlanan paywalllar ve remote config paywalllar için farklılık gösterir.
- Remote config paywalllarını sunmak için bkz. Remote config ile tasarlanan paywall’ı render etme.
Adapty Flutter SDK, paywallları sunmak için iki yöntem sunar:
-
Bağımsız ekran
-
Gömülü widget
Bağımsız ekran olarak sunma
Bir paywall’ı bağımsız ekran olarak görüntülemek için, createPaywallView metoduyla oluşturulan view üzerinde view.present() metodunu kullanın. Her view yalnızca bir kez kullanılabilir. Paywall’ı tekrar göstermeniz gerekiyorsa, yeni bir view örneği oluşturmak için createPaywallView’ı bir kez daha çağırın.
Aynı view’ı yeniden oluşturmadan tekrar kullanmak AdaptyUIError.viewAlreadyPresented hatasına yol açabilir.
try {
await view.present();
} on AdaptyError catch (e) {
// handle the error
} catch (e) {
// handle the error
}
Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğini gerçek bir örnekle görmek ister misiniz? Tam kurulumu, paywall’ların gösterimini, satın alma işlemlerini ve diğer temel işlevleri içeren örnek uygulamalarımıza göz atın.
Paywall’ı kapatma
Paywall’ı programatik olarak kapatmanız gerektiğinde dismiss() metodunu kullanın:
try {
await view.dismiss();
} on AdaptyError catch (e) {
// handle the error
} catch (e) {
// handle the error
}
Diyalog gösterme
Android’de bir paywall görünümü sunulduğunda, yerel uyarı diyalogları yerine bu metodu kullanın. Android’de normal uyarılar paywall görünümünün arkasında kalır ve kullanıcılar tarafından görülemez. Bu metod, tüm platformlarda diyaloğun paywall’ın üzerinde düzgün şekilde gösterilmesini sağlar.
try {
final action = await view.showDialog(
title: 'Close paywall?',
content: 'You will lose access to exclusive offers.',
primaryActionTitle: 'Stay',
secondaryActionTitle: 'Close',
);
if (action == AdaptyUIDialogActionType.secondary) {
// User confirmed - close the paywall
await view.dismiss();
}
// If primary - do nothing, user stays
} catch (e) {
// handle error
}
iOS sunum stilini yapılandırma
present() metoduna iosPresentationStyle parametresini geçirerek paywall’ın iOS’ta nasıl sunulacağını yapılandırın. Parametre, AdaptyUIIOSPresentationStyle.fullScreen (varsayılan) veya AdaptyUIIOSPresentationStyle.pageSheet değerlerini kabul eder.
try {
await view.present(iosPresentationStyle: AdaptyUIIOSPresentationStyle.pageSheet);
} on AdaptyError catch (e) {
// handle the error
} catch (e) {
// handle the error
}
Widget hiyerarşisine gömme
Bir paywall’ı mevcut widget ağacınıza gömmek için AdaptyUIPaywallPlatformView widget’ını doğrudan Flutter widget hiyerarşinizde kullanın.
AdaptyUIPaywallPlatformView(
paywall: paywall, // The paywall object you fetched
onDidAppear: (view) {
},
onDidDisappear: (view) {
},
onDidPerformAction: (view, action) {
},
onDidSelectProduct: (view, productId) {
},
onDidStartPurchase: (view, product) {
},
onDidFinishPurchase: (view, product, purchaseResult) {
},
onDidFailPurchase: (view, product, error) {
},
onDidStartRestore: (view) {
},
onDidFinishRestore: (view, profile) {
},
onDidFailRestore: (view, error) {
},
onDidFailRendering: (view, error) {
},
onDidFailLoadingProducts: (view, error) {
},
onDidFinishWebPaymentNavigation: (view, product, error) {
},
)
Android platform görünümünü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)
}
}