Flow ve paywall'ları alma - Android

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 tasarımınızı tamamladıktan sonra, onu mobil uygulamanızda gösterebilirsiniz. İlk adım, aşağıda açıklandığı gibi placement ile ilişkili flow veya paywall’u ve görünüm yapılandırmasını almaktır.

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

Eğer bir flow veya paywall’ı builder’da tasarladıysanız, onu kullanıcıya göstermek için mobil uygulama kodunuzda render etme konusunda endişelenmenize gerek yoktur. Böyle bir flow veya paywall, içinde ne gösterileceğini ve nasıl gösterileceğini birlikte barındırır. Yine de 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.

En iyi performansı sağlamak için, kullanıcıya göstermeden önce görsellerin indirilmesi için yeterli süre tanımak amacıyla flow veya paywall ile görünüm yapılandırmasını mümkün olduğunca erken almanız kritik önem taşır.

Tip

Birden fazla placement’ı aynı anda ısıtmak için preloadFlows metodunu çağırın (Android SDK 4.1+). Bu metod yalnızca placement JSON’ını önbelleğe alır, dolayısıyla düzen ve görselleri almak için görünüm yapılandırmasını yine de getirmeniz gerekir.

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

(no translatable prose — fragment is empty)

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

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. Bu varyantı öneriyoruz çünkü kullanıcılarınızın her zaman en güncel veriyi almasını sağlar.

Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla uğraştığını düşünüyorsanız, bu sırayı tersine çeviren AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad seçeneğini değerlendirebilirsiniz; önce önbellekten okur ve yalnızca önbellekte hiçbir şey yoksa sunucuya gider. Kullanıcılar mutlak en son veriyi alamayabilir, ancak internet bağlantısı 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 güvenle kullanılabilir.

Üçüncü bir politika olan AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAgeMillis), ikisi arasında bir konumdadır: önbelleğe alınan kopya maxAgeMillis değerinden daha yeni olduğu sürece önce önbellekten okur, daha eski olduğunda ise sunucuya gider.

Önbelleğin uygulamayı yeniden başlatmada da korunduğunu ve yalnızca uygulama yeniden yüklendiğinde veya manuel temizleme yapıldığında silindiğini unutmayın.

Adapty SDK, flow’ları ve paywallları yerel olarak iki katmanda saklar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve yedek paywalllar. Ayrıca daha hızlı getirmek için CDN ve CDN’ye ulaşılamadığında 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 her zaman en son sürümü almanızı garanti edecek şekilde tasarlanmıştır.

loadTimeoutvarsayılan: 5 sn

Bu değer, bu metodun 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 metodun loadTimeout içinde belirtilenden biraz daha geç zaman aşımına uğrayabileceğini unutmayın; çünkü işlem arka planda farklı isteklerden oluşabilir.

Android için: TimeInterval değerini uzantı fonksiyonlarıyla oluşturabilirsiniz (örneğin 5.seconds, burada .seconds import com.adapty.utils.seconds ifadesinden gelir) ya da TimeInterval.seconds(5) kullanabilirsiniz. Sınır koymamak için TimeInterval.INFINITE kullanın.

Yanıt parametreleri:

ParametreAçıklama
FlowPlacement’ı, tanımlayıcıları (id, variationId), varyant adını (variationName, isteğe bağlı, SDK 4.2+), adı, paywall varyantlarını (paywalls), remote config’leri ve flow’un bir görünüm yapılandırması içerip içermediğini belirten hasViewConfiguration bayrağını içeren bir AdaptyFlow nesnesi. Ön yükleme, özel UI veya programatik kontroller için gerçek ürünleri almak üzere getPaywallProducts(flow) çağrısını yapın.

View konfigürasyonunu alma

Flow veya paywall’ı aldıktan sonra, flow.hasViewConfiguration ile bir view konfigürasyonu içerip içermediğini kontrol edin. Bu bayrak, placement’ın Adapty Kontrol Paneli’nde nasıl tasarlandığını ayırt eder:

  • true — placement, Flow & Paywall Builder (bir flow) veya eski Paywall Builder (bir paywall) ile tasarlanmıştır. Adapty, arayüzü sizin için oluşturur. Görünüm yapılandırmasını almak ve flow veya paywall’ı sunmak için aşağıdaki adımlarla devam edin.
  • false — placement, Builder arayüzü olmayan özel bir paywall’dır. Remote config paywall olarak ele alın.
Important

Flow’u yayınladığınızdan emin olun. Yayınlanmamış düzenlemeleri olan bir flow Dirty (Kirli) durumuna sahiptir ve bu flow’un placement’ı en son yayınlanan sürümü sunmaya devam eder.

Note

Birden fazla dil kullanıyorsanız, Builder yerelleştirmesinin nasıl ekleneceğini ve yerel ayar kodlarının nasıl doğru kullanılacağını buradan öğrenin.

Yüklendikten sonra flow veya paywall’ı gösterin.

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

Genellikle flow’lar ve paywall’lar neredeyse anında yüklenir, bu yüzden 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 yüklemek istediğinizden daha uzun sürebilir. Böyle durumlarda, hiçbir şey göstermek yerine sorunsuz bir kullanıcı deneyimi sağlamak için varsayılan bir flow veya paywall görüntülemek isteyebilirsiniz.

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

Warning

Neden getFlow kullanmanızı öneriyoruz

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

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

Eğer daha hızlı flow veya paywall yükleme avantajından yararlanmak için bu dezavantajları kabul etmeye hazırsanız, getFlowForDefaultAudience metodunu aşağıdaki şekilde kullanın. Aksi takdirde yukarıda açıklanan getFlow metodunu kullanmaya devam edin.

ParametreZorunlulukAçıklama
placementIdzorunluPlacement’ın tanımlayıcısı. Bu, Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
fetchPolicyvarsayılan: AdaptyPlacementFetchPolicy.Default

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

Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla karşılaştığını düşünüyorsanız, bu sırayı tersine çeviren AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad seçeneğini değerlendirin — önce önbelleği okur ve yalnızca önbellekte hiçbir şey yoksa sunucuya gider. Kullanıcılar en güncel verileri 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 AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAgeMillis), ikisi arasında bir yerde yer alır: önbelleğe alınan kopya maxAgeMillis değerinden daha yeni olduğu sürece önbelleği önce 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 temizleme yoluyla temizlendiğini unutmayın.

Varlıkları özelleştirme

Flow veya 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’leriyle 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österin.
  • Uzak bir ana görsel yüklenirken yerel bir önizleme görseli gösterin.
  • Video oynatılmadan önce bir önizleme görseli gösterin.
  • Uygulamayla birlikte gelen medyayı gösterin; böylece ilk ekran herhangi bir indirme olmadan görüntülenir. Bkz. İlk ekran medyasını uygulama paketinden gösterme.

Özel asset’leri basit bir sözlük aracılığıyla nasıl sağlayabileceğinize dair bir örnek:

val customAssets = AdaptyCustomAssets.of(
    "hero_image" to
            AdaptyCustomImageAsset.remote(
                url = "https://example.com/image.jpg",
                preview = AdaptyCustomImageAsset.file(
                    FileLocation.fromAsset("images/hero_image_preview.png"),
                )
            ),
    "hero_video" to
            AdaptyCustomVideoAsset.file(
                FileLocation.fromResId(requireContext(), R.raw.custom_video),
                preview = AdaptyCustomImageAsset.file(
                    FileLocation.fromResId(requireContext(), R.drawable.video_preview),
                ),
            ),
)

val flowView = AdaptyUI.getFlowView(
    activity,
    flowConfiguration,
    products,
    eventListener,
    insets,
    customAssets,
)
Note

Bir asset bulunamazsa, flow varsayılan görünümüne geri döner.

Videolar için, isteğe bağlı olarak bir resolution geçerek video yüklenmeden önce düzen alanını ayırabilir ve en boy oranını (width / height) belirleyebilirsiniz:

AdaptyCustomVideoAsset.file(
    FileLocation.fromResId(requireContext(), R.raw.custom_video),
    preview = AdaptyCustomImageAsset.file(
        FileLocation.fromResId(requireContext(), R.drawable.video_preview),
    ),
    resolution = AdaptyCustomVideoAsset.Resolution(width = 1080, height = 1920),
)

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

Warning

SDK 3.x Paywall Builder ile oluşturulan paywall’lar Android SDK 3.0 veya daha yüksek bir sürüm gerektirir.

Paywall Builder ile özelleştirilmiş paywalllar için bu konuya başvurduğunuzu unutmayın. Paywalllarınızı manuel olarak uyguluyorsanız, lütfen Mobil uygulamanızda remote config paywallları için paywallları 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 paywallları 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 ekleyin.
  3. Adapty Kontrol Paneli’nde placement’lar oluşturun ve paywall’unuzu ekleyin.
  4. Mobil uygulamanıza Adapty SDK yükleyin.

Paywall Builder ile tasarlanan paywallı getirme

Paywall Builder kullanarak bir paywall tasarladıysanız, bunu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmeniz gerekmez. Böyle bir paywall, hem paywall içinde neyin gösterileceğini hem de nasıl gösterileceğini içerir. Yine de 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.

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

Paywall almak için getPaywall metodunu kullanın:

Parametreler:

ParametreZorunlulukAçıklama
placementIdzorunluİstenen Placement tanımlayıcısı. Adapty Kontrol Paneli’nde bir placement oluştururken belirlediğ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 etiket içeren bir dil kodu olmalıdır. İlk alt etiket dil için, ikincisi 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ını önerdiğimiz hakkında daha fazla bilgi için Yerelleştirmeler ve yerel ayar kodları bölümüne bakın.

fetchPolicyvarsayılan: AdaptyPlacementFetchPolicy.Default

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 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 verilere erişmesini 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 AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad seçeneğini değerlendirin; bu seçenek sırayı tersine çevirir — önce önbelleği okur ve yalnızca önbellekte hiçbir şey yoksa sunucuya başvurur. Kullanıcılar en güncel verilere her zaman ulaşamayabilir, ancak internet bağlantısı 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üresince güvenle kullanılabilir.

Üçüncü bir politika olan AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAgeMillis), ikisi arasında bir yerde durur: önbelleğe alınan kopya maxAgeMillis değerinden daha yeni olduğu sürece önbelleği okur, daha eski olduğunda ise sunucuya gider.

Önbelleğin uygulama yeniden başlatıldığında silinmediğini; yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yapıldığında temizlendiğ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. Ayrıca paywall’ları daha hızlı getirmek için CDN kullanıyoruz ve CDN’e ulaşılamadığı durumlar için bağımsız bir yedek sunucu bulunuyor. Bu sistem, internet bağlantısının yetersiz olduğu durumlarda bile güvenilirliği sağlarken her zaman paywall’larınızın en güncel sürümünü almanızı garanti edecek şekilde tasarlanmıştır.

loadTimeoutvarsayılan: 5 sn

Bu değer, yöntemin 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şabilir.

Android için: TimeInterval’i uzantı fonksiyonlarıyla oluşturabilirsiniz (örneğin 5.seconds, burada .seconds import com.adapty.utils.seconds kaynağından gelir) veya TimeInterval.seconds(5) şeklinde kullanabilirsiniz. Herhangi bir sınırlama koymamak için TimeInterval.INFINITE kullanın.

Yanıt parametreleri:

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

Paywall Builder ile tasarlanan paywallın görünüm yapılandırmasını getirme

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ı getirilemez.

Paywallı getirdikten sonra, bunun Paywall Builder ile 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 yol gösterecektir. ViewConfiguration mevcutsa, bunu Paywall Builder paywallı olarak değerlendirin; aksi takdirde remote config paywallı olarak işleyin.

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ı.

Yüklendikten sonra, paywall’ı gösterin.

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

Genellikle paywalllar neredeyse anında getirilir, bu nedenle bu süreci hızlandırma konusunda endişelenmenize gerek yoktur. Ancak çok sayıda kitleniz ve paywallınız varsa ve kullanıcılarınızın internet bağlantısı zayıfsa, paywall getirme işlemi 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östermek isteyebilirsiniz.

Bunu çözmek için, belirtilen placement’ın Tüm Kullanıcılar kitlesi için paywallı getiren getPaywallForDefaultAudience metodunu kullanabilirsiniz. Ancak önerilen yaklaşımın, yukarıdaki Paywall Bilgilerini Getirme bölümünde ayrıntılı olarak açıklanan getPaywall metoduyla paywallı getirmek olduğunu anlamak önemlidir.

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ı paywalllar göstermeniz gerekiyorsa, zorluklarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen paywalllar tasarlamak zorunda kalırsınız ya da mevcut (eski) sürüme sahip kullanıcıların render edilemeyen paywalllarla sorun yaşayabileceğini kabul etmeniz gerekir.
  • Hedefleme kaybı: Tüm kullanıcılar, Tüm Kullanıcılar kitlesi için tasarlanmış aynı paywallı görür; bu da kişiselleştirilmiş hedeflemeyi (ülkelere, pazarlama attribution’ına veya kendi özel özelliklerinize göre) kaybettiğiniz anlamına gelir.

Daha hızlı paywall getirme 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 metodunu kullanmaya devam edin.

Note

getPaywallForDefaultAudience metodu Android SDK 2.11.3’ten 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 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 anlamına gelir, pt-br Brezilya Portekizcesini temsil eder.

Locale kodları ve bunların nasıl kullanılmasını önerdiğimiz hakkında daha fazla bilgi için Yerelleştirmeler ve locale kodları bölümüne bakın.

fetchPolicyvarsayılan: AdaptyPlacementFetchPolicy.Default

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. Kullanıcılarınızın her zaman en güncel verilere ulaşmasını sağladığından 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 AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad seçeneğini değerlendirin; bu seçenek sırayı tersine çevirir — önce önbelleği okur ve hiçbir şey önbelleğe alınmamışsa sunucuya gider. Kullanıcılar en son verilere ulaşamayabilir, ancak internet bağlantıları ne kadar düzensiz olursa olsun daha hızlı yükleme süresiyle karşılaşırlar. Önbellek düzenli olarak güncellenir; bu nedenle ağ isteklerini azaltmak amacıyla oturum süresince kullanmak güvenlidir.

Üçüncü bir politika olan AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAgeMillis), ikisi arasında bir konumdadır: önbelleğe alınan kopya maxAgeMillis değerinden daha yeni olduğu sürece ö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ılıp yeniden yüklendiğinde veya manuel temizleme yapıldığında temizlendiğ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örseller ve videoların önceden tanımlanmış ID’leri vardır: hero_image ve hero_video. Özel bir varlık paketinde, bu öğeleri ID’leriyle 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österin.
  • Uzak ana görsel yüklenirken yerel bir önizleme görseli gösterin.
  • Video başlamadan önce bir önizleme görseli gösterin.
Important

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

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

val customAssets = AdaptyCustomAssets.of(
    "hero_image" to
            AdaptyCustomImageAsset.remote(
                url = "https://example.com/image.jpg",
                preview = AdaptyCustomImageAsset.file(
                    FileLocation.fromAsset("images/hero_image_preview.png"),
                )
            ),
    "hero_video" to
            AdaptyCustomVideoAsset.file(
                FileLocation.fromResId(requireContext(), R.raw.custom_video),
                preview = AdaptyCustomImageAsset.file(
                    FileLocation.fromResId(requireContext(), R.drawable.video_preview),
                ),
            ),
)

val paywallView = AdaptyUI.getPaywallView(
    activity,
    viewConfiguration,
    products,
    eventListener,
    insets,
    customAssets,
)
Note

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