Flow ve paywall'ları alma - Capacitor

getFlow ile alınanlar
Flow'lar Flow & Paywall Builder ile oluşturulur — cihazda natif olarak render edilir, WebView gerekmez
Eski Paywall Builder paywall'ları Eski Paywall Builder ile oluşturulmuş tüm içerik

Flow’unuzu tasarladıktan sonra onu mobil uygulamanızda görüntüleyebilirsiniz. İlk adım, aşağıda açıklandığı gibi placement ile ilişkili flow veya paywall’ı ve görünüm yapılandırmasını almaktır.

Bu konunun, Adapty’nin builder’larında tasarlanmış flow’lar ve paywall’lar için geçerli olduğunu lütfen unutmayın. Paywall’larınızı manuel olarak uyguluyorsanız, Mobil uygulamanızda remote config paywall’ları için paywall ve ürünleri getirme konusuna bakınız.

Tip

Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğini gerçek dünyadan bir örnekle görmek ister misiniz? Paywall gösterme, satın alma yapma ve diğer temel işlevler dahil olmak üzere tam kurulumu sergileyen örnek uygulamalarımıza göz atın.

Başlamadan önce

İhtiyacınız olanlar:

Flow/paywall getirme

Bir flow veya paywall’ı builder’da tasarladıysanız, kullanıcıya göstermek için onu mobil uygulama kodunuzda render etmeniz gerekmez. Bu tür bir flow veya paywall, içinde neyin ve nasıl gösterileceğini zaten içerir. Bununla birlikte, placement aracılığıyla ID’sini, görünüm yapılandırmasını almanız ve ardından mobil uygulamanızda sunmanız gerekir.

Flow veya paywall’ı mümkün olduğunca erken — ideal olarak sunmadan çok önce — çekin ve view’unu oluşturun. createFlowView metodu, view yapılandırmasını yükler ve arka planda görsellerini indirip önbelleğe almaya başlar. Bu metodu ne kadar erken çağırırsanız, indirmelerin tamamlanması için o kadar çok zaman kalır. Flow veya paywall’ı sunduğunuzda, yapılandırma ve görseller zaten önbellekte hazır olabilir.

Bir flow veya paywall almak için getFlow metodunu kullanın:

try {
  const flow = await adapty.getFlow({
    placementId: 'YOUR_PLACEMENT_ID',
  });
  // istenen flow/paywall
} catch (error) {
  // hatayı işle
}

Parametreler:

ParametreZorunlulukAçıklama
placementIdzorunluİstenen Placement’ın tanımlayıcısı. Bu, Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
fetchPolicyvarsayılan: 'reload_revalidating_cache_data'

İsteğe bağlı params nesnesinin içinde iletilir. Varsayılan olarak SDK, sunucudan veri yüklemeye çalışır ve başarısız olursa önbelleğe alınmış veriyi döndürür. Bu varyantı kullanmanızı öneririz, çünkü kullanıcılarınızın her zaman en güncel verilere ulaşmasını sağlar.

Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla karşılaştığını düşünüyorsanız, mevcut olması durumunda önbelleğe alınmış veriyi döndürmek için 'return_cache_data_else_load' kullanmayı değerlendirin. Bu senaryoda kullanıcılar her zaman en güncel verilere ulaşamayabilir; ancak internet bağlantıları ne kadar kesintili olursa olsun daha hızlı yükleme süreleri yaşarlar. Önbellek düzenli olarak güncellenir, bu nedenle ağ isteklerinden kaçınmak amacıyla oturum sırasında güvenle kullanılabilir.

Önbelleğin uygulama yeniden başlatıldığında bozulmadan kaldığını ve yalnızca uygulama yeniden yüklendiğinde veya manuel temizleme yapıldığında silindiğini unutmayın.

Adapty SDK, paywall’ları yerel olarak iki katmanda depolar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve yedek paywall’lar. Paywall’ları daha hızlı getirmek için CDN, CDN’ye ulaşılamadığı durumlarda ise bağımsız bir yedek sunucu kullanırız. Bu sistem, paywall’larınızın her zaman en güncel sürümünü almanızı sağlarken internet bağlantısının yetersiz olduğu durumlarda bile güvenilirliği koruyacak şekilde tasarlanmıştır.

loadTimeoutMsvarsayılan: 5 sn

İsteğe bağlı params nesnesinin içinde iletilir. Bu değer, söz konusu yöntem için zaman aşımını sınırlar. Zaman aşımına ulaşılırsa önbelleğe alınmış veri veya yerel yedek döndürülür.

Nadir durumlarda bu yöntemin loadTimeoutMs içinde belirtilenden biraz daha geç zaman aşımına uğrayabileceğini unutmayın; çünkü işlem, arka planda farklı isteklerden oluşabilir.

Ürün ID’lerini kodun içine gömmeyин. Kodun içine gömmeniz gereken tek şey placement ID’sidir. Flow’lar ve paywall’lar uzaktan yapılandırıldığından, ürün sayısı ve mevcut teklifler her an değişebilir. Uygulamanız bu değişiklikleri dinamik olarak ele almalıdır; bir paywall bugün iki ürün döndürüyorsa ve yarın üç ürün döndürüyorsa, kod değişikliği yapmadan hepsini gösterin.

Yanıt parametreleri:

ParametreAçıklama
FlowFlow’un tanımlayıcılarını (id, variationId), adını, placement’ını, paywall varyasyonlarını (paywalls), remote config’lerini (remoteConfigs) ve bir hasViewConfiguration bayrağını içeren AdaptyFlow nesnesi.

Görünüm yapılandırmasını getirme

Important

Flow’u yayınladığınızdan emin olun. Yayınlanmamış düzenlemeleri olan bir flow’un durumu Dirty olarak görünür ve ilgili placement, son yayınlanan sürümü sunmaya devam eder.

Eğer placement, Flow & Paywall Builder veya eski Paywall Builder ile tasarlandıysa, Adapty arayüzü sizin için oluşturur. createFlowView ile görünümü oluşturun, ardından flow veya paywall’ı sunun. Placement, Builder arayüzü olmayan özel bir paywall ise bunun yerine remote config paywall olarak ele alın.

hasViewConfiguration bayrağı, görünümü oluşturmadan önce ikisini birbirinden ayırt etmenizi sağlar:

if (flow.hasViewConfiguration) {
  const view = await createFlowView(flow);
  await view.present();
} else {
  // Render your own screen from flow.remoteConfigs and flow.paywalls
}

Capacitor SDK’da doğrudan createFlowView çağırın — önce görünüm yapılandırmasını almanız gerekmez.

Warning

createFlowView metodunun sonucu yalnızca bir kez kullanılabilir. Tekrar kullanmanız gerekiyorsa createFlowView metodunu yeniden çağırın. Yeniden oluşturmadan iki kez çağırmak hataya yol açabilir.


try {
  const view = await createFlowView(flow);
} catch (error) {
  // handle the error
}

Parametreler:

ParametreVarlıkAçıklama
flowzorunluİstenen flow/paywall için bir denetleyici elde etmek amacıyla kullanılan AdaptyFlow nesnesi.
localeopsiyonelGörünümü oluşturmak için kullanılacak flow yerelleştirmesinin tanımlayıcısı — örneğin en veya pt-br. Belirtilmezse görünüm en dilinde ya da flow’un en yerelleştirmesi yoksa varsayılan yerelleştirmede oluşturulur. Bkz. Yerelleştirmeler ve yerel ayar kodları.
customLayoutId

opsiyonel

varsayılan: undefined

SDK 4.1+

Flow’un düzen yapılandırmasındaki bir düzenin özel kimliği. SDK’nın cihaz türü ve ekran boyutuna göre otomatik olarak seçtiği düzen yerine belirtilen düzeni oluşturmak için kullanın. Kimlikle eşleşen bir düzen bulunamazsa çağrı, no-view-configuration hatası ile başarısız olur. Flow & Paywall Builder henüz özel düzen kimliği atamadığından bu alanı boş bırakın.
customTagsopsiyonelİçerikte yer tutucu olarak kullanılan özel etiketler ve çözümlenen değerlerinden oluşan bir sözlük. Özel etiketler yalnızca eski builder paywallları için geçerlidir — flow’lar bunun yerine değişkenler kullanır.
prefetchProductsopsiyonelEkrandaki ürünlerin görüntülenme zamanlamasını optimize etmek için etkinleştirin. true olduğunda AdaptyUI gerekli ürünleri otomatik olarak çeker. Varsayılan: true.
android.enableSafeAreaopsiyonelYalnızca Android (iOS’ta yoksayılır). android anahtarı altında yer alır. true olduğunda flow görünümü güvenli alan dolgularını uygular. Varsayılan: true. Varsayılan değer çoğu durum için uygundur.
Note

Birden fazla dil kullanıyorsanız, flow yerelleştirmesi eklemeyi ve yerel ayar kodlarını nasıl doğru kullanacağınızı buradan öğrenin.

Görünümü elde ettikten sonra flow/paywall’ı gösterin.

Varsayılan kitle için flow veya paywall getirerek daha hızlı yükleme sağlayın

Genellikle flow’lar ve paywall’lar neredeyse anında getirilir, bu nedenle bu süreci hızlandırmak için endişelenmenize gerek yoktur. Ancak çok sayıda kitle ve placement’ınız varsa ve kullanıcılarınızın internet bağlantısı zayıfsa, bir flow veya paywall getirmek istediğinizden daha uzun sürebilir. Bu gibi durumlarda, hiçbir şey göstermemek yerine sorunsuz bir kullanıcı deneyimi sağlamak amacıyla varsayılan bir flow veya paywall görüntülemek isteyebilirsiniz.

Bunu çözmek için, belirtilen placement’ın All Users kitlesi için flow veya paywall’ı getiren getFlowForDefaultAudience metodunu kullanabilirsiniz. Ancak şunu anlamak kritik önem taşır: önerilen yaklaşım, yukarıdaki Flow/paywall getirme bölümünde ayrıntılı olarak açıklanan getFlow metoduyla flow veya paywall’ı getirmektir.

Warning

Neden getFlow kullanmanızı öneririz

getFlowForDefaultAudience metodunun birkaç önemli dezavantajı vardır:

  • Potansiyel geriye dönük uyumluluk sorunları: Farklı uygulama sürümleri için (mevcut ve gelecekteki) farklı paywall’lar göstermeniz gerekirse, zorluklarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen paywall’lar tasarlamak zorunda kalırsınız ya da mevcut (eski) sürüme sahip kullanıcıların render edilemeyen paywall’larla sorun yaşayabileceğini kabul etmeniz gerekir.
  • Hedefleme kaybı: Tüm kullanıcılar All Users kitlesi için tasarlanmış aynı paywall’ı görecektir; bu da ülkelere, pazarlama attribution’ına veya kendi özel niteliklerinize dayalı kişiselleştirilmiş hedeflemeyi kaybetmeniz anlamına gelir.

Bu dezavantajları kabul ederek daha hızlı flow veya paywall yükleme işleminden yararlanmak istiyorsanız, getFlowForDefaultAudience metodunu aşağıdaki gibi kullanın. Aksi takdirde yukarıda açıklanan getFlow metodunu kullanmaya devam edin.

try {
  const flow = await adapty.getFlowForDefaultAudience({
    placementId: 'YOUR_PLACEMENT_ID',
  });
  // the requested flow/paywall
} catch (error) {
  // handle the error
}
ParametreZorunlulukAçıklama
placementIdzorunluPlacement tanımlayıcısı. Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
fetchPolicyvarsayılan: 'reload_revalidating_cache_data'

İsteğe bağlı params nesnesi içinde iletilir. SDK varsayılan olarak sunucudan veri yüklemeye çalışır; hata durumunda önbellekteki veriyi döner. Bu seçeneği öneriyoruz çünkü kullanıcılarınızın her zaman en güncel veriye erişmesini sağlar.

Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla çalıştığını düşünüyorsanız, önbellekte veri varsa onu döndürmek için 'return_cache_data_else_load' kullanmayı değerlendirin. Bu senaryoda kullanıcılar en son veriyi alamayabilir; ama internet bağlantısı ne kadar tutarsız olursa olsun daha hızlı yükleme süreleri yaşarlar. Önbellek düzenli olarak güncellendiğinden, ağ isteklerini azaltmak amacıyla oturum boyunca güvenle kullanılabilir.

Önbelleğin uygulama yeniden başlatıldığında silinmediğini unutmayın; yalnızca uygulama kaldırılıp yeniden yüklendiğinde veya manuel temizlik yapıldığında temizlenir.

Varlıkları özelleştirme

Flow/paywall’ınızdaki görselleri ve videoları özelleştirmek için özel varlıkları uygulayın.

Hero görseller ve videolar, önceden tanımlanmış ID’lere sahiptir: hero_image ve hero_video. Özel bir varlık paketinde bu öğeleri ID’leri aracılığıyla hedefler ve davranışlarını özelleştirirsiniz.

Diğer görseller ve videolar için Adapty kontrol panelinde özel bir ID belirlemeniz gerekir.

Örneğin şunları yapabilirsiniz:

  • Bazı kullanıcılara farklı bir görsel veya video göstermek.
  • Uzaktaki ana görsel yüklenirken yerel bir önizleme görseli göstermek.
  • Video oynatılmadan önce bir önizleme görseli göstermek.

İşte özel varlıkları basit bir sözlük aracılığıyla nasıl sağlayabileceğinize dair bir örnek:


const customAssets: Record<string, AdaptyCustomAsset> = {
  'custom_image': { type: 'image', relativeAssetPath: 'custom_image.png' },
  'hero_video': {
    type: 'video',
    fileLocation: {
      ios: { fileName: 'custom_video.mp4' },
      android: { relativeAssetPath: 'videos/custom_video.mp4' }
    }
  }
};

const view = await createFlowView(flow, { customAssets });
Note

Bir varlık bulunamazsa, flow/paywall varsayılan görünümüne geri döner.

Adapty Kontrol Paneli’nde eski Paywall Builder ile paywallınızın görsel kısmını tasarladıktan sonra, onu mobil uygulamanızda gösterebilirsiniz. Bu süreçteki ilk adım, aşağıda açıklandığı gibi placement ile ilişkili paywallı ve görünüm yapılandırmasını almaktır.

Lütfen bu konunun Paywall Builder ile özelleştirilmiş paywallları kapsadığını unutmayın. Remote config paywalllarını getirme hakkında bilgi için Mobil uygulamanızda remote config paywallları için paywall ve ürünleri getirme konusuna bakın.

Mobil uygulamanızda paywall göstermeye başlamadan önce (genişletmek için tıklayın)
  1. Adapty Kontrol Paneli’nde ürünlerinizi oluşturun.
  2. Adapty Kontrol Paneli’nde bir paywall oluşturun ve ürünleri ekleyin.
  3. Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’ınızı ekleyin.
  4. Mobil uygulamanıza Adapty SDK yükleyin.

Paywall Builder ile Tasarlanmış Paywall’ı Getirme

Paywall Builder ile bir paywall tasarladıysanız, bunu kullanıcıya göstermek için mobil uygulama kodunuzda render etmeniz gerekmez. Böyle bir paywall, hem gösterilecek içeriği hem de nasıl gösterileceğini içerir. Bununla birlikte, paywall’ın ID’sini placement aracılığıyla, görünüm yapılandırmasını ise ayrıca almanız ve ardından mobil uygulamanızda sunmanız gerekir.

En iyi performansı sağlamak için, paywall’u ve onun görünüm yapılandırmasını mümkün olduğunca erken almanız kritik önem taşır; böylece görseller kullanıcıya sunulmadan önce indirilmesi için yeterli zaman olur.

Bir paywall almak için getPaywall metodunu kullanın:

try {
  const paywall = await adapty.getPaywall({
    placementId: 'YOUR_PLACEMENT_ID',
    locale: 'en',
  });
  // istenen paywall
} catch (error) {
  // hatayı işle
}

Parametreler:

ParametreZorunlulukAçıklama
placementIdzorunluİstenen Placement’ın tanımlayıcısı. Bu, Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
locale

isteğe bağlı

varsayılan: en

Paywall yerelleştirmesinin tanımlayıcısı. Bu parametrenin, eksi (-) karakteriyle ayrılmış bir veya iki alt etiketten oluşan bir dil kodu olması beklenir. İlk alt etiket dil için, ikincisi ise bölge içindir.

Örnek: en İngilizce anlamına gelir, pt-br Brezilya Portekizcesini temsil eder.

Yerelleştirmeler ve yerel ayar kodları hakkında daha fazla bilgi için ilgili sayfaya bakın.

paramsisteğe bağlıPaywall’ı getirmek için ek parametreler.

Ürün ID’lerini sabit kodlamayın. Sabit kodlamanız gereken tek ID, placement ID’sidir. Paywall’lar uzaktan yapılandırıldığından, ürün sayısı ve mevcut teklifler her an değişebilir. Uygulamanız bu değişiklikleri dinamik olarak ele almalıdır; bir paywall bugün iki ürün, yarın üç ürün döndürüyorsa, kod değişikliği yapmadan hepsini göstermelidir.

Yanıt parametreleri:

ParametreAçıklama
PaywallÜrün ID’leri listesi, paywall tanımlayıcısı, remote config ve diğer çeşitli özellikleri içeren bir AdaptyPaywall nesnesi.

Paywall Builder ile tasarlanmış paywall’ın görünüm konfigürasyonunu alma

Important

Paywall builder’da Show on device geçişinin etkin olduğundan emin olun. Bu seçenek açık değilse, görünüm konfigürasyonu alınamaz.

Paywall’ı aldıktan sonra, Paywall Builder kullanılarak oluşturulduğunu belirten ViewConfiguration içerip içermediğini kontrol edin. Bu, paywall’ı nasıl göstereceğiniz konusunda size yol gösterecektir. ViewConfiguration mevcutsa Paywall Builder paywall’ı olarak işleyin; değilse, remote config paywall olarak ele alın.

Capacitor SDK’da, view configuration’ı manuel olarak önceden almadan doğrudan createPaywallView metodunu çağırın.

Warning

createPaywallView metodunun sonucu yalnızca bir kez kullanılabilir. Tekrar kullanmanız gerekiyorsa, createPaywallView metodunu yeniden çağırın.


if (paywall.hasViewConfiguration) {
  try {
    const view = await createPaywallView(paywall);
  } catch (error) {
    // handle the error
  }
} else {
  // use your custom logic
}

Parametreler:

ParametreZorunlulukAçıklama
paywallzorunluİstenen paywall için bir controller elde etmek üzere kullanılan AdaptyPaywall nesnesi.
customTagsisteğe bağlıÖzel etiketlerin ve çözümlenmiş değerlerinin bir sözlüğünü tanımlar. Özel etiketler, paywall içeriğinde yer tutucu olarak işlev görür ve paywall içinde kişiselleştirilmiş içerik sunmak için belirli dizelerle dinamik olarak değiştirilir. Daha fazla ayrıntı için Paywall builder’da özel etiketler konusuna bakın.
prefetchProductsisteğe bağlıEkranda ürünlerin görüntülenme zamanlamasını optimize etmek için etkinleştirin. true olarak ayarlandığında AdaptyUI, gerekli ürünleri otomatik olarak getirir. Varsayılan: false.
Note

Birden fazla dili destekliyorsanız, paywallınıza bir yerelleştirme ekleyin. Kullanılacak kodlar için bkz. Yerelleştirmeler ve yerel ayar kodları.

Görünüme sahip olduktan sonra paywallı gösterin.

Varsayılan kitle için paywallı daha hızlı getir

Genellikle paywalllar neredeyse anında getirilir, bu yüzden bu süreci hızlandırmak için endişelenmenize gerek yoktur. Ancak çok sayıda kitle ve paywallınız varsa ve kullanıcılarınızın internet bağlantısı zayıfsa, bir paywallı getirmek istediğinizden daha uzun sürebilir. Bu durumlarda, hiç paywall göstermemek yerine sorunsuz bir kullanıcı deneyimi sağlamak için varsayılan bir paywall görüntülemek isteyebilirsiniz.

Bunu çözmek için, belirtilen placement’ın paywall’ını All Users kitlesi için getiren getPaywallForDefaultAudience metodunu kullanabilirsiniz. Ancak şunu bilmeniz önemlidir: önerilen yaklaşım, paywall’ı yukarıdaki Paywall Bilgisini Getirme bölümünde açıklandığı gibi getPaywall metoduyla getirmektir.

Warning

Neden getPaywall kullanmanızı öneriyoruz

getPaywallForDefaultAudience metodunun birkaç önemli dezavantajı vardır:

  • Olası geriye dönük uyumluluk sorunları: Farklı uygulama sürümleri (mevcut ve gelecekteki) için farklı paywall’lar göstermeniz gerekiyorsa, mevcut (eski) sürümü destekleyen paywall’lar tasarlamak ya da mevcut (eski) sürümdeki kullanıcıların oluşturulamayan paywall’larla sorun yaşayabileceğini kabul etmek zorunda kalırsınız.
  • Hedefleme kaybı: Tüm kullanıcılar All Users kitlesi için tasarlanmış aynı paywall’ı görür; bu da ülkelere, pazarlama attribution’ına veya kendi özel özelliklerinize dayalı kişiselleştirilmiş hedeflemeyi kaybetmeniz anlamına gelir.

Bu dezavantajları göze alarak daha hızlı paywall yüklemenin avantajından yararlanmak istiyorsanız, getPaywallForDefaultAudience metodunu aşağıdaki şekilde kullanın. Aksi takdirde yukarıda açıklanan getPaywall metodunu kullanmaya devam edin.

try {
  const paywall = await adapty.getPaywallForDefaultAudience({
    placementId: 'YOUR_PLACEMENT_ID',
    locale: 'en',
  });
  // istenen paywall
} catch (error) {
  // hatayı işleyin
}
ParametreZorunlulukAçıklama
placementIdzorunluPlacement tanımlayıcısı. Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
locale

isteğe bağlı

varsayılan: en

Paywall yerelleştirmesinin tanımlayıcısı. Bu parametre, eksi (-) karakteriyle ayrılmış bir veya daha fazla alt etiketten oluşan bir dil kodu olmalıdır. İlk alt etiket dili, ikincisi ise bölgeyi belirtir.

Örnek: en İngilizce, pt-br ise Brezilya Portekizcesini temsil eder.

Yerel ayar kodları ve bunların nasıl kullanılması gerektiği hakkında daha fazla bilgi için Yerelleştirmeler ve yerel ayar kodları bölümüne bakın.

paramsisteğe bağlıPaywall’ı getirmek için ek parametreler.

Varlıkları özelleştirin

Paywallınızdaki görselleri ve videoları özelleştirmek için özel varlıkları uygulayın.

Hero görseller ve videoların önceden tanımlanmış ID’leri vardır: hero_image ve hero_video. Özel bir varlık paketinde bu öğeleri ID’lerine göre hedefleyerek davranışlarını özelleştirirsiniz.

Diğer görseller ve videolar için Adapty kontrol panelinde özel bir ID ayarlamanız gerekir.

Örneğin şunları yapabilirsiniz:

  • Bazı kullanıcılara farklı bir görsel veya video gösterebilirsiniz.
  • Uzaktaki ana görsel yüklenirken yerel bir önizleme görseli gösterebilirsiniz.
  • Video başlamadan önce bir önizleme görseli gösterebilirsiniz.

İşte özel varlıkları basit bir sözlük aracılığıyla nasıl sağlayabileceğinize dair bir örnek:

const customAssets: Record<string, AdaptyCustomAsset> = {
  'custom_image': { type: 'image', relativeAssetPath: 'custom_image.png' },
  'hero_video': {
    type: 'video',
    fileLocation: {
      ios: { fileName: 'custom_video.mp4' },
      android: { relativeAssetPath: 'videos/custom_video.mp4' }
    }
  }
};

view = await createPaywallView(paywall, { customAssets });
Note

Bir varlık bulunamazsa, paywall varsayılan görünümüne geri döner.