Flow ve paywall'ları getir - React Native

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 unutmayın. Paywall’larınızı manuel olarak uyguluyorsanız lütfen Mobil uygulamanızda remote config paywall’ları için paywall ve ürünleri getirme konusuna bakın.

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’ı getir

Eğer builder’da bir flow veya paywall tasarladıysanız, bunu kullanıcıya göstermek için mobil uygulama kodunuzda render etme konusunda endişelenmenize gerek yok. Böyle bir flow veya paywall, hem ne gösterileceğini hem de nasıl gösterileceğini 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’ı getirin ve view’ini mümkün olduğunca erken oluşturun — ideal olarak onu sunmadan çok önce. createFlowView metodu, view yapılandırmasını yükler ve görsellerini arka planda indirip önbelleğe almaya başlar. Onu ne kadar erken çağırırsanız, bu indirmelerin tamamlanması için o kadar çok zaman olur. Flow veya paywall’ı sunduğunuzda, yapılandırması ve görselleri zaten önbelleğe alınmış ve görüntülenmeye hazır olabilir.

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

try {
    const placementId = 'YOUR_PLACEMENT_ID';

    const flow = await adapty.getFlow(placementId);
  // the requested flow/paywall
} catch (error) {
    // handle the error
}

Parametreler:

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

fetchPolicy, SDK’nın önce hangi katmanı okuyacağını belirler; önbelleği kullanıp kullanamayacağını değil. Varsayılan olarak SDK önce sunucuya gider ve bu istek başarısız olursa önbelleğe alınmış veriyi döndürür. Kullanıcılarınızın her zaman en güncel veriyi almasını sağladığı için bu seçeneği öneriyoruz.

Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla karşılaştığını düşünüyorsanız 'return_cache_data_else_load' seçeneğini değerlendirin; bu seçenek sıralamayı tersine çevirir — önce önbelleği okur ve yalnızca önbellekte hiçbir şey yoksa sunucuya gider. Kullanıcılar en son veriyi alamayabilir, 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 için oturum sırasında kullanmak güvenlidir.

Üçüncü bir politika olan 'return_cache_data_if_not_expired_else_load', ikisi arasında bir yerde durur: önbelleğe alınmış kopya, yanında ilettiğiniz maxAgeSeconds değerinden daha genç olduğu sürece önce önbelleği okur ve daha eski olduğunda sunucuya gider.

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

Adapty SDK, paywallları yerel olarak iki katmanda saklar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve yedek paywalllar. Paywallları daha hızlı getirmek için CDN ve CDN’e ulaşılamadığı durumlar için bağımsız bir yedek sunucu da kullanıyoruz. Bu sistem, internet bağlantısının kıt olduğu durumlarda bile güvenilirliği sağlarken her zaman paywalllarınızın en son sürümünü almanızı sağlamak için tasarlanmıştır.

loadTimeoutMsvarsayılan: 5 sn

Bu değer, bu 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.

İşlem, arka planda farklı isteklerden oluşabileceğinden bu yöntemin nadir durumlarda loadTimeout’ta belirtilenden biraz daha geç zaman aşımına uğrayabileceğini unutmayın.

Android için: TimeInterval’ı uzantı işlevleriyle (örneğin 5.seconds, burada .seconds, import com.adapty.utils.seconds’dandır) veya TimeInterval.seconds(5) ile oluşturabilirsiniz. Sınırlama koymamak için TimeInterval.INFINITE kullanın.

Yanıt parametreleri:

ParameterDescription
Flowid, variationId gibi flow tanımlayıcıları, varyasyon adı (variationName, isteğe bağlı, SDK 4.2+), ad, placement, paywall varyasyonları (paywalls), remote config’ler (remoteConfigs) ve — SDK 4.1 ve sonrasında — hasViewConfiguration flag’i içeren bir AdaptyFlow nesnesi.

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

Important

Flow’u yayınladığınızdan emin olun. Yayınlanmamış düzenlemeleri olan bir flow Dirty durumunda olur ve onun placement’ı en son yayınlanan sürümü sunmaya devam eder.

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

SDK 4.1 ve sonrasında, flow üzerindeki hasViewConfiguration bayrağı, view’ı 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
}

4.0’da bu bayrak mevcut değildir ve createFlowView, görünüm yapılandırması olmayan bir flow için AdaptyError fırlatır.

React Native SDK’da doğrudan createFlowView çağırın — önce görünüm yapılandırmasını almanıza gerek yoktur.

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 AdaptyUIError.viewAlreadyPresented hatasına yol açabilir.


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

Parametreler:

ParametreZorunlulukAçıklama
flowzorunluBelirtilen flow/paywall için bir controller edinmek amacıyla kullanılan AdaptyFlow nesnesi.
localeopsiyonelGörünümün render edileceği 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 render edilir. SDK 4.0.2 veya üstü gerektirir. Bkz. Yerelleştirmeler ve yerel ayar kodları.
customLayoutId

opsiyonel

varsayılan: undefined

SDK 4.1+

Henüz yayınlanmamış bir Flow & Paywall Builder özelliği için ayrılmıştır. Builder layout ID’lerini tanımlayabilir hale gelene kadar girdiğiniz herhangi bir değer hiçbir layout ile eşleşmez ve createFlowView bir AdaptyError fırlatır. Ayarlanmadan bırakın.
customTagsopsiyonelFlow’un custom tag’leri için uygulamanızın değerleri; her tag’in tam adının anahtar olarak kullanıldığı bir nesne. Ayrıntılar için bkz. Flow’lara veri aktarma.
prefetchProductsopsiyonelEkrandaki ürünlerin gösterim zamanlamasını optimize etmek için etkinleştirin. true olduğunda AdaptyUI gerekli ürünleri otomatik olarak çeker. Varsayılan: false.
android.enableSafeAreaopsiyonelYalnızca Android (iOS’ta yok sayılır). İç içe bir nesne olarak geçirin: android: { enableSafeArea: true }. true olduğunda flow görünümü güvenli alan dolguları uygular. Modal sunumda (createFlowView + present()) varsayılan true, yerleşik AdaptyFlowView bileşeninde ise false’tur. Varsayılan değer çoğu durum için uygundur.
Note

Birden fazla dil kullanıyorsanız, bir flow yerelleştirmesi eklemeyi ve locale kodlarını doğru şekilde kullanmayı buradan öğrenin.

View’e sahip olduğunuzda, flow/paywall’ı sunun.

Daha hızlı getirmek için varsayılan bir kitle için flow veya paywall alma

Genellikle flow’lar ve paywall’lar neredeyse anında getirilir, bu yüzden bu süreci hızlandırma konusunda endişelenmenize gerek yoktur. Ancak çok sayıda kitleniz ve placement’ınız olduğu ve kullanıcılarınızın zayıf internet bağlantısı olduğu durumlarda, bir flow veya paywall’ı getirmek istediğinizden daha uzun sürebilir. Bu tür durumlarda, hiçbir şey göstermemek yerine sorunsuz bir kullanıcı deneyimi sağlamak için varsayılan bir flow veya paywall görüntülemek isteyebilirsiniz.

Bunu çözmek için, belirtilen placement’ın flow veya paywall’ını All Users kitlesi için getiren getFlowForDefaultAudience metodunu kullanabilirsiniz. Ancak, önerilen yaklaşımın yukarıdaki Flow/paywall getirme bölümünde ayrıntılı olarak açıklandığı gibi flow veya paywall’ı getFlow metoduyla getirmek olduğunu anlamak çok önemlidir.

Warning

getFlow kullanmanızı neden öneriyoruz

getFlowForDefaultAudience metodu birkaç önemli dezavantajla birlikte gelir:

  • Olası geriye dönük uyumluluk sorunları: Farklı uygulama sürümleri (mevcut ve gelecekteki) için farklı paywall’lar göstermeniz gerekiyorsa, zorluklarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen paywall’lar tasarlamanız ya da mevcut (eski) sürüme sahip kullanıcıların render edilmemiş 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örür; bu da kişiselleştirilmiş hedeflemeyi kaybettiğiniz anlamına gelir (ülkelere, pazarlama attribution’ına veya kendi özel niteliklerinize dayalı olanlar dahil).

Daha hızlı flow veya paywall getirmeden yararlanmak için bu dezavantajları kabul etmeye istekliyseniz, getFlowForDefaultAudience metodunu aşağıdaki gibi kullanın. Aksi takdirde, yukarıda açıklanan getFlow’a bağlı kalın.

try {
    const id = 'YOUR_PLACEMENT_ID';

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

fetchPolicy, SDK’nın önbelleği kullanıp kullanamayacağını değil, hangi katmanı önce okuyacağını belirler. Varsayılan davranışta SDK önce sunucuya gider; bu istek başarısız olursa önbelleğe alınmış veriyi döndürür. Kullanıcılarınızın her zaman en güncel verilere ulaşmasını sağladığı için bu seçeneği öneriyoruz.

Ancak kullanıcılarınızın kararsız internet bağlantısıyla mücadele ettiğini düşünüyorsanız, bu sırayı tersine çeviren 'return_cache_data_else_load' seçeneğini değerlendirebilirsiniz. Bu seçenekte SDK önce önbelleği okur; önbellekte hiçbir şey yoksa sunucuya gider. Kullanıcılar en son verilere ulaşamayabilir, ancak internet bağlantıları ne kadar kesintili olursa olsun daha hızlı yükleme süresi yaşarlar. Önbellek düzenli olarak güncellenir; bu nedenle oturum sırasında gereksiz ağ isteklerinden kaçınmak için önbelleği kullanmak güvenlidir.

Üçüncü bir seçenek olan 'return_cache_data_if_not_expired_else_load', bu ikisinin arasında bir konumda yer alır: önbellekteki kopya, birlikte ilettiğiniz maxAgeSeconds değerinden daha yeni olduğu sürece önce önbelleği okur; daha eski olduğunda ise sunucuya gider.

Önbelleğin uygulama yeniden başlatıldığında silinmediğini; yalnızca uygulama kaldırıldığında veya manuel temizleme yapıldığında temizlendiğini unutmayın.

Varlıkları özelleştirme

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

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

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örüntü veya video gösterin.
  • Uzak ana görüntü yüklenirken yerel bir önizleme görüntüsü gösterin.
  • Video başlamadan önce bir önizleme görüntüsü gösterin.
  • Uygulamayla birlikte gelen medyayı gösterin; böylece ilk ekran indirme olmadan yüklenir. Bkz. Uygulama paketiyle birlikte gelen ilk ekran medyasını gösterme.
Important

Bu özelliği kullanmak için Adapty React Native SDK’sını 3.8.0 veya daha yüksek bir sürüme güncelleyin.

Özel asset’leri 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 createFlowView(flow, { customAssets })
Note

Bir asset 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şkilendirilmiş paywallı ve görünüm yapılandırmasını almaktır.

Warning

SDK 3.x Paywall Builder ile oluşturulan paywalllar React Native SDK 3.0 veya daha yüksek bir sürüm gerektirir.

Lütfen bu konunun Paywall Builder ile özelleştirilen paywall’lara atıfta bulunduğunu unutmayın. Paywall’larınızı manuel olarak uyguluyorsanız, lütfen Mobil uygulamanızda remote config paywall’ları için paywall’ları ve ürünleri getirme konusuna bakın.

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.

Mobil uygulamanızda paywall’ları görüntülemeye 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 ona dahil edin.
  3. Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’ınızı ona dahil edin.
  4. Mobil uygulamanızda Adapty SDK’yı yükleyin.

Paywall Builder ile tasarlanan paywallı çekme

Paywall Builder kullanarak bir paywall tasarladıysanız, bunu kullanıcıya göstermek için mobil uygulama kodunuzda render etme konusunda endişelenmenize gerek yoktur. Bu tür bir paywall, paywall içinde neyin gösterileceğini ve nasıl gösterileceğini içerir. Yine de placement aracılığıyla ID’sini, görünüm yapılandırmasını alıp ardından mobil uygulamanızda sunmanız gerekir.

En iyi performansı sağlamak için, kullanıcılara sunmadan önce görsellerin indirilmesine yeterli zaman tanımak amacıyla paywall ve görünüm yapılandırmasını mümkün olduğunca erken almanız önemlidir.

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

try {
    const placementId = 'YOUR_PLACEMENT_ID';
    const locale = 'en';

    const paywall = await adapty.getPaywall(placementId, locale);
  // the requested paywall
} catch (error) {
    // handle the error
}

Parametreler:

ParametreZorunlulukAçıklama
placementIdzorunluİstenen Placement 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 iki alt etiketten oluşan bir dil kodu olmalıdır. İlk alt etiket dil, ikincisi ise bölge içindir.

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

Yerel ayar kodları ve bunların nasıl kullanılmasını önerdiğimiz hakkında daha fazla bilgi için Yerelleştirmeler ve yerel ayar kodları sayfasına bakın.

fetchPolicyvarsayılan: 'reload_revalidating_cache_data'

fetchPolicy, SDK’nın önce hangi katmanı okuduğunu belirler; önbelleği kullanıp kullanamayacağını değil. Varsayılan olarak SDK önce sunucuya gider ve bu istek başarısız olursa önbelleğe alınmış verileri döndürür. Kullanıcılarınızın her zaman en güncel verileri almasını sağladığından bu seçeneği öneririz.

Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla karşılaştığını düşünüyorsanız, sırayı tersine çeviren 'return_cache_data_else_load' seçeneğini değerlendirin — önce önbelleği okur ve yalnızca önbellekte hiçbir şey yoksa sunucuya gider. Kullanıcılar mutlak anlamda en son verileri alamayabilir, ancak internet bağlantıları ne kadar kesintili olursa olsun daha hızlı yükleme süreleriyle karşılaşır. Önbellek düzenli olarak güncellenir, bu nedenle ağ isteklerinden kaçınmak amacıyla oturum sırasında güvenle kullanılabilir.

Üçüncü bir politika olan 'return_cache_data_if_not_expired_else_load', ikisi arasında yer alır: önbelleğe alınmış kopya, yanında ilettiğiniz maxAgeSeconds değerinden daha yeni olduğu sürece önce önbelleği okur; daha eski olduğunda ise sunucuya gider.

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

Adapty SDK, paywall’ları yerel olarak iki katmanda saklar: 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, internet bağlantısının yetersiz olduğu durumlarda bile güvenilirliği sağlarken paywall’larınızın her zaman en son sürümünü almanızı garanti etmek için tasarlanmıştır.

loadTimeoutMsvarsayılan: 5 sn

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ış veriler veya yerel yedek döndürülür.

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

Android için: TimeInterval’ı uzantı işlevleriyle oluşturabilirsiniz (örneğin 5.seconds, burada .seconds, import com.adapty.utils.seconds’dan gelir) ya da TimeInterval.seconds(5) şeklinde kullanabilirsiniz. Sınır koymamak için TimeInterval.INFINITE kullanın.

Yanıt parametreleri:

ParametreAçıklama
PaywallÜrün ID’lerinin listesini, paywall tanımlayıcısını, remote config’i ve diğer birkaç özelliği içeren bir AdaptyPaywall nesnesi.

Paywall Builder kullanılarak tasarlanan paywallın görünüm yapılandırmasını çekme

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 yapılandırması alınamaz.

Paywall’u çektikten sonra, Paywall Builder kullanılarak oluşturulduğunu gösteren bir ViewConfiguration içerip içermediğini kontrol edin. Bu, paywallı nasıl görüntüleyeceğiniz konusunda size rehberlik edecektir. ViewConfiguration mevcutsa, bunu bir Paywall Builder paywall’u olarak ele alın; değilse, bunu bir remote config paywall’u olarak işleyin.

React Native SDK’da, görünüm yapılandırmasını manuel olarak önceden çekmeden 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. Yeniden oluşturmadan iki kez çağırmak AdaptyUIError.viewAlreadyPresented hatasına neden olabilir.

// for the Adapty SDK < 3.14 – import {createPaywallView} from 'react-native-adapty/dist/ui';

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 almak ü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 kullanılır ve paywall içinde kişiselleştirilmiş içerik sağlamak amacıyla 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ıEkrandaki ü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 dil destekliyorsanız, paywall’ınıza bir yerelleştirme ekleyin. Kullanılacak kodlar için Yerelleştirmeler ve yerel ayar kodları sayfasına bakın.

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

Daha hızlı çekmek için varsayılan kitle için paywall alma

Genellikle paywalllar neredeyse anında çekilir, dolayısıyla bu süreci hızlandırma konusunda endişelenmenize gerek yoktur. Ancak çok sayıda kitle ve paywallınız olduğu ve kullanıcılarınızın zayıf bir internet bağlantısına sahip olduğu durumlarda, bir paywall çekmek istediğinizden daha uzun sürebilir. Bu gibi 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ı Tüm Kullanıcılar kitlesi için çeken getPaywallForDefaultAudience metodunu kullanabilirsiniz. Ancak önerilen yaklaşımın, yukarıdaki Paywall Bilgilerini Çekme bölümünde ayrıntılandırıldığı gibi getPaywall metoduyla paywall çekmek olduğunu anlamak önemlidir.

Warning

getPaywall kullanmanızı neden öneriyoruz

getPaywallForDefaultAudience metodu birkaç önemli dezavantajla birlikte gelir:

  • Olası geriye dönük uyumluluk sorunları: Farklı uygulama sürümleri için (mevcut ve gelecekteki) farklı paywalllar göstermeniz gerekiyorsa, zorluklarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen paywalllar tasarlamak zorunda kalacaksınız ya da mevcut (eski) sürüme sahip kullanıcıların render edilmemiş paywalllarla sorun yaşayabileceğini kabul edeceksiniz.
  • Hedefleme kaybı: Tüm kullanıcılar Tüm Kullanıcılar kitlesi için tasarlanmış aynı paywall’u görecek; bu da kişiselleştirilmiş hedeflemeyi (ülkeler, pazarlama attribution veya kendi özel özelliklerinize dayalı hedefleme dahil) kaybetmeniz anlamına gelir.

Daha hızlı paywall çekme avantajından yararlanmak için bu dezavantajları kabul etmeye hazırsanız, getPaywallForDefaultAudience metodunu aşağıdaki gibi kullanın. Aksi takdirde yukarıda açıklanan getPaywall metoduna bağlı kalın.

try {
    const id = 'YOUR_PLACEMENT_ID';
    const locale = 'en';

    const paywall = await adapty.getPaywallForDefaultAudience(id, locale);
  // the requested paywall
} catch (error) {
    // handle the error
}
Note

getPaywallForDefaultAudience metodu, React Native SDK 2.11.2 sürümünden itibaren kullanılabilir.

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 parametrenin, eksi (-) karakteriyle ayrılmış bir veya daha fazla alt etiket içeren 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.

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.

fetchPolicyvarsayılan: 'reload_revalidating_cache_data'

fetchPolicy, SDK’nın önbelleği kullanıp kullanamayacağını değil, hangi katmanı önce okuyacağını belirler. Varsayılan olarak SDK önce sunucuya gider ve istek başarısız olursa önbelleğe alınmış veriyi döndürür. Bu varyantı öneriyoruz çünkü kullanıcılarınızın her zaman en güncel verilere erişmesini 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 'return_cache_data_else_load' seçeneğini kullanabilirsiniz; bu seçenek önceliği tersine çevirir — önce önbelleği okur ve yalnızca önbellekte hiçbir şey yoksa sunucuya gider. Kullanıcılar en güncel verilere ulaşamayabilir, ancak internet bağlantısı ne kadar kesintili olursa olsun daha hızlı yükleme süreleri yaşar. Önbellek düzenli olarak güncellenir, dolayısıyla ağ isteklerinden kaçınmak için oturum sırasında güvenle kullanılabilir.

'return_cache_data_if_not_expired_else_load' adlı üçüncü bir politika ise ikisi arasında yer alır: önbelleğe alınan kopya, yanında ilettiğiniz maxAgeSeconds değerinden daha yeni olduğu sürece önce önbelleği okur; daha eski olduğunda ise sunucuya gider.

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

Varlıkları özelleştirme

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

Hero görselleri ve videolarının önceden tanımlanmış ID’leri vardır: 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 ayarlamanız gerekir.

Örneğin şunları yapabilirsiniz:

  • Bazı kullanıcılara farklı bir görsel veya video gösterme.
  • Uzak ana görsel yüklenirken yerel bir önizleme görseli gösterme.
  • Bir video çalıştırmadan önce önizleme görseli gösterme.
Important

Bu özelliği kullanmak için Adapty React Native SDK’yı 3.8.0 veya daha yüksek bir sürüme güncelleyin.

Basit bir sözlük aracılığıyla özel varlıkları 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 asset bulunamazsa, paywall varsayılan görünümüne geri döner.