Flow ve paywallları görüntüleme - iOS

Flow ve paywallları görüntüle
Flow'lar Flow Builder ile oluşturulur — cihazda natif olarak render edilir, WebView gerekmez
Paywall Builder paywall'ları Mevcut tüm Paywall Builder içeriği

Bir flow veya paywall oluştturduysanız, bunu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmenize gerek yok. Söz konusu flow veya paywall, içinde neyin gösterileceğini ve nasıl gösterileceğini zaten içeriyor.

Aşağıda kullanılan AdaptyUI.FlowConfiguration nesnesini edinmek için Flow ve paywallları getir sayfasına bakın.

SwiftUI’da flow ve paywallları sunma

Ekranda modal görünüm olarak göster

Bir flow veya paywall’ı cihaz ekranında modal görünüm olarak göstermek için SwiftUI’da .flow modifier’ını kullanın. En temel çağrı; isPresented, flowConfiguration ve beş zorunlu callback’i gerektirir:

.flow(
    isPresented: $flowPresented,
    flowConfiguration: <AdaptyUI.FlowConfiguration>,
    didFinishPurchase: { _, _ in /* dismiss, or do nothing to let the flow continue */ },
    didFailPurchase: { _, _ in /* handle the error */ },
    didFinishRestore: { _ in /* check access level and dismiss */ },
    didFailRestore: { _ in /* handle the error */ },
    didReceiveError: { _ in flowPresented = false }
)

Daha fazla kontrol için, buton tıklamalarını yönetmek amacıyla didPerformAction gibi isteğe bağlı callback’ler ekleyin:

@State var flowPresented = false // ensure that you manage this variable state and set it to `true` at the moment you want to show the flow or paywall

var body: some View {
  Text("Hello, AdaptyUI!")
      .flow(
          isPresented: $flowPresented,
          flowConfiguration: <AdaptyUI.FlowConfiguration>,
          didPerformAction: { action in
              switch action {
                  case .close:
                      flowPresented = false
                  default:
                      // Handle other actions
                      break
              }
          },
          didFinishPurchase: { product, purchaseResult in /* dismiss, or do nothing to let the flow continue */ },
          didFailPurchase: { product, error in /* handle the error */ },
          didFinishRestore: { profile in /* check access level and dismiss */ },
          didFailRestore: { error in /* handle the error */ },
          didReceiveError: { error in flowPresented = false }
      )
}

(empty input — nothing to translate)

ParametreZorunluAçıklama
isPresentedzorunluFlow veya paywall ekranının görüntülenip görüntülenmediğini yöneten bir binding.
flowConfigurationzorunluFlow veya paywallın görsel ayrıntılarını içeren bir AdaptyUI.FlowConfiguration nesnesi. AdaptyUI.getFlowConfiguration(forFlow:) metodunu kullanın. Daha fazla bilgi için Flow ve paywall’ları alma bölümüne bakın.
didFinishPurchasezorunluAdapty.makePurchase() başarıyla tamamlandığında çağrılır. Flow otomatik olarak kapanmaz — burada sunum binding’inizi false olarak ayarlayabilir ya da hiçbir şey yapmayarak flow’un satın alma sonrasında devam etmesine izin verebilirsiniz.
didFailPurchasezorunluAdapty.makePurchase() başarısız olduğunda çağrılır.
didFinishRestorezorunluAdapty.restorePurchases() başarıyla tamamlandığında çağrılır.
didFailRestorezorunluAdapty.restorePurchases() başarısız olduğunda çağrılır.
didReceiveErrorzorunluBir render hatası veya flow scriptinden kaynaklanan bir çalışma zamanı hatası için çağrılır (örneğin, bir JavaScript istisnası, AdaptyUIError kodu 4105). Render hataları için Adapty Destek ile iletişime geçin.
fullScreenisteğe bağlıFlow veya paywallın tam ekran modunda mı yoksa sayfa olarak mı görüneceğini belirler. Varsayılan değer true’dur.
didAppearisteğe bağlıFlow veya paywall görünümü sunulduğunda çağrılır.
didDisappearisteğe bağlıFlow veya paywall görünümü kapatıldığında çağrılır.
didPerformActionisteğe bağlıKullanıcı bir butona tıkladığında çağrılır. close ve openURL olmak üzere iki action ID önceden tanımlanmıştır; diğerleri özelleştirilebilir ve builder’da ayarlanabilir.
didSelectProductisteğe bağlıKullanıcı veya sistem tarafından satın almak üzere bir ürün seçildiğinde çağrılır.
didStartPurchaseisteğe bağlıKullanıcı satın alma sürecini başlattığında çağrılır.
didFinishWebPaymentNavigationisteğe bağlıWeb ödeme navigasyonu tamamlandığında çağrılır.
didStartRestoreisteğe bağlıKullanıcı geri yükleme sürecini başlattığında çağrılır.
didFailLoadingProductsisteğe bağlıÜrün yükleme sırasında hata oluştuğunda çağrılır. Yeniden yüklemeyi denemek için true döndürün.
didPartiallyLoadProductsisteğe bağlıÜrünler kısmen yüklendiğinde çağrılır.
showAlertItemisteğe bağlıFlow veya paywallın üzerinde uyarı öğelerinin görüntülenmesini yöneten bir binding.
showAlertBuilderisteğe bağlıUyarı görünümünü render etmek için kullanılan bir fonksiyon.
placeholderBuilderisteğe bağlıFlow veya paywall yüklenirken placeholder görünümünü render etmek için kullanılan bir fonksiyon. Varsayılan olarak ProgressView kullanılır.
iOS olaylarını işleme konusundaki parametreler hakkında daha fazla bilgi için iOS - Olayları İşleme konusuna bakın.

Modal olmayan görünüm olarak sunma

Flow’ları ve paywall’ları uygulamanızın navigasyon akışında navigasyon hedefleri veya satır içi görünümler olarak da sunabilirsiniz. SwiftUI görünümlerinizde doğrudan AdaptyFlowView kullanın:

AdaptyFlowView(
    flowConfiguration: <AdaptyUI.FlowConfiguration>,
    didFinishPurchase: { product, purchaseResult in
        // Dismiss the view, or do nothing to let the flow continue
    },
    didFailPurchase: { product, error in
        // Handle purchase failure
    },
    didFinishRestore: { profile in
        // Handle successful restore
    },
    didFailRestore: { error in
        // Handle restore failure
    },
    didReceiveError: { error in
        // Handle the error (rendering or JS exception from the flow script).
    }
)

Flow’ları ve paywallları UIKit’te sunma

Flow’u veya paywall’ı cihaz ekranında görüntülemek için şu adımları izleyin:

  1. Görüntülemek istediğiniz görsel flow’u AdaptyUI.flowController(with:delegate:) metodunu kullanarak başlatın:

    import AdaptyUI
    
    let visualFlow = try AdaptyUI.flowController(
        with: <AdaptyUI.FlowConfiguration>,
        delegate: <AdaptyFlowControllerDelegate>
    )

    İstek parametreleri:

    ParametreZorunlulukAçıklama
    flowConfigurationzorunluAkış veya paywallın görsel detaylarını içeren bir AdaptyUI.FlowConfiguration nesnesi. AdaptyUI.getFlowConfiguration(forFlow:) metodunu kullanın. Daha fazla bilgi için Flow ve paywallları alma konusuna bakın.
    delegatezorunluFlow ve paywall olaylarını dinlemek için kullanılan AdaptyFlowControllerDelegate. Daha fazla bilgi için Flow & paywall olaylarını yönetme konusuna bakın.

    Döndürür:

    NesneAçıklama
    AdaptyFlowControllerİstenen flow veya paywall ekranını temsil eden bir nesne.
  2. Nesne başarıyla oluşturulduktan sonra cihazın ekranında görüntüleyebilirsiniz:

    present(visualFlow, animated: true)

Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğine dair gerçek bir örnek görmek ister misiniz? Tam kurulumu, paywall görüntüleme, satın alma yapma ve diğer temel işlevleri içeren örnek uygulamalarımıza göz atın.

Paywall Builder ile bir paywall özelleştirdiyseniz, onu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmeniz gerekmez. Böyle bir paywall, hem ne gösterileceğini hem de nasıl gösterileceğini içerir. AdaptyUI.PaywallConfiguration nesnesini almak için bkz. Paywall Builder paywalllarını ve yapılandırmalarını getirme.

SwiftUI’da paywallları sunma

Cihaz ekranında modal görünüm olarak sunma

Görsel paywallı cihaz ekranında modal görünüm olarak göstermek için SwiftUI’da .paywall modifier’ını kullanın:

@State var paywallPresented = false // ensure that you manage this variable state and set it to `true` at the moment you want to show the paywall

var body: some View {
  Text("Hello, AdaptyUI!")
      .paywall(
          isPresented: $paywallPresented,
          paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
          didPerformAction: { action in
              switch action {
                  case .close:
                      paywallPresented = false
                  default:
                      // Handle other actions
                      break
              }
          },
          didFinishPurchase: { product, profile in paywallPresented = false },
          didFailPurchase: { product, error in /* handle the error */ },
          didFinishRestore: { profile in /* check access level and dismiss */  },
          didFailRestore: { error in /* handle the error */ },
          didFailRendering: { error in paywallPresented = false }
      )
}

Parameters:

ParametreZorunluAçıklama
isPresentedzorunluPaywall ekranının görüntülenip görüntülenmeyeceğini yöneten bir binding.
paywallConfigurationzorunluPaywallın görsel ayrıntılarını içeren bir AdaptyUI.PaywallConfiguration nesnesi. AdaptyUI.paywallConfiguration(for:products:viewConfiguration:observerModeResolver:tagResolver:timerResolver:) metodunu kullanın. Daha fazla bilgi için Paywall Builder paywalllarını ve yapılandırmalarını getirme konusuna bakın.
didFailPurchasezorunluAdapty.makePurchase() başarısız olduğunda çağrılır.
didFinishRestorezorunluAdapty.restorePurchases() başarıyla tamamlandığında çağrılır.
didFailRestorezorunluAdapty.restorePurchases() başarısız olduğunda çağrılır.
didFailRenderingzorunluArayüz oluşturulurken bir hata meydana gelirse çağrılır. Bu durumda Adapty Destek ile iletişime geçin.
fullScreenisteğe bağlıPaywallın tam ekran modunda mı yoksa modal olarak mı görüneceğini belirler. Varsayılan değer true’dur.
didAppearisteğe bağlıPaywall görünümü sunulduğunda çağrılır.
didDisappearisteğe bağlıPaywall görünümü kapatıldığında çağrılır.
didPerformActionisteğe bağlıKullanıcı bir düğmeye tıkladığında çağrılır. Farklı düğmelerin farklı aksiyon ID’leri vardır. close ve openURL olmak üzere iki aksiyon ID’si önceden tanımlıdır; diğerleri özeldir ve builder’da ayarlanabilir.
didSelectProductisteğe bağlıBir ürün satın almak üzere seçildiyse (kullanıcı veya sistem tarafından) bu callback çağrılır.
didStartPurchaseisteğe bağlıKullanıcı satın alma işlemine başladığında çağrılır.
didFinishPurchaseisteğe bağlıAdapty.makePurchase() başarıyla tamamlandığında çağrılır.
didFinishWebPaymentNavigationisteğe bağlıWeb ödeme navigasyonu tamamlandığında çağrılır.
didStartRestoreisteğe bağlıKullanıcı geri yükleme işlemine başladığında çağrılır.
didFailLoadingProductsisteğe bağlıÜrün yükleme sırasında hata oluştuğunda çağrılır. Yüklemeyi yeniden denemek için true döndürün.
didPartiallyLoadProductsisteğe bağlıÜrünler kısmen yüklendiğinde çağrılır.
showAlertItemisteğe bağlıPaywallın üzerindeki uyarı öğelerinin görüntülenmesini yöneten bir binding.
showAlertBuilderisteğe bağlıUyarı görünümünü oluşturmaya yarayan bir fonksiyon.
placeholderBuilderisteğe bağlıPaywall yüklenirken yer tutucu görünümünü oluşturmaya yarayan bir fonksiyon.
iOS olaylarını işleme hakkında parametreler için iOS - Olayları işleme konusuna bakın.

Kalıcı olmayan görünüm olarak sunma

Paywall’ları uygulamanızın navigasyon akışında bir navigasyon hedefi veya satır içi görünüm olarak da sunabilirsiniz. SwiftUI görünümlerinizde doğrudan AdaptyPaywallView kullanın:

AdaptyPaywallView(
    paywallConfiguration: <AdaptyUI.PaywallConfiguration>,
    didFailPurchase: { product, error in
        // Handle purchase failure
    },
    didFinishRestore: { profile in
        // Handle successful restore
    },
    didFailRestore: { error in
        // Handle restore failure
    },
    didFailRendering: { error in
        // Handle rendering error
    }
)

UIKit’te paywall’ları sunma

Paywall’ı cihaz ekranında görüntülemek için şunları yapın:

  1. Görüntülemek istediğiniz paywall’ı .paywallController(for:products:viewConfiguration:delegate:) metodunu kullanarak başlatın:

    import AdaptyUI
    
    let visualPaywall = AdaptyUI.paywallController(
        with: <paywall configuration object>,
        delegate: <AdaptyPaywallControllerDelegate>
    )

    İstek parametreleri:

    ParametreZorunlulukAçıklama
    paywall configurationzorunluPaywallın görsel ayrıntılarını içeren bir AdaptyUI.PaywallConfiguration nesnesi. AdaptyUI.getPaywallConfiguration(forPaywall:locale:) metodunu kullanın. Daha fazla bilgi için Paywall Builder paywalllarını ve yapılandırmalarını getirme konusuna bakın.
    delegatezorunluPaywall olaylarını dinlemek için bir AdaptyPaywallControllerDelegate. Daha fazla bilgi için Paywall olaylarını yönetme konusuna bakın.

Döner:

NesneAçıklama
AdaptyPaywallControllerİstenen paywall ekranını temsil eden bir nesne
  1. Nesne başarıyla oluşturulduktan sonra cihaz ekranında gösterebilirsiniz:

    present(visualPaywall, animated: true)

Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğini gerçek bir örnekle görmek ister misiniz? Kurulumun tamamını, paywall gösterimi, satın alma işlemleri ve diğer temel işlevler dahil olmak üzere ele alan örnek uygulamalarımıza göz atın.