Flow ve paywallları getir - Unity

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şkilendirilmiş flow veya paywall’ı 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’u getir

Bir flow veya paywall’u builder’da tasarladıysanız, kullanıcıya göstermek için mobil uygulama kodunuzda nasıl render edileceğini düşünmenize gerek yok. Böyle bir flow veya paywall, içinde nelerin 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 konfigürasyonunu almanız ve ardından mobil uygulamanızda sunmanız gerekir.

En iyi performansı sağlamak için, flow veya paywall’u ve görünüm yapılandırmasını mümkün olduğunca erken almanız kritik öneme sahiptir; böylece görseller kullanıcıya sunulmadan önce indirilmesi için yeterli süre tanınmış olur.

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

Adapty.GetFlow(
    "YOUR_PLACEMENT_ID",
    AdaptyPlacementFetchPolicy.Default,
    TimeSpan.FromSeconds(5),
    (flow, error) => {
        if (error != null) {
            // handle the error
            return;
        }

        // flow - the requested flow/paywall
    }
);

Parametreler:

ParametreZorunlulukAçıklama
placementIdzorunluİstenen Placement tanımlayıcısı. 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. Varsayılan olarak SDK önce sunucuya gider ve bu istek başarısız olursa önbelleğe alınmış verileri döndürür. Bu varyantı öneriyoruz çü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 AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad 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 mutlak son verilere ulaşamayabilir ama 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 kullanmak güvenlidir.

Üçüncü bir politika olan AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge), ikisi arasında yer alır: önbelleğe alınmış kopya, geçirdiğiniz TimeSpan 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 kaldırılıp yeniden yüklendiğinde veya manuel temizlik 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. Bunları daha hızlı getirmek için CDN, CDN’ye ulaşılamadığı durumlarda ise bağımsız bir yedek sunucu kullanıyoruz. Bu sistem, internet bağlantısının yetersiz olduğu durumlarda bile güvenilirliği sağlarken her zaman en güncel sürümü almanızı sağlamak için tasarlanmıştır.

loadTimeoutvarsayılan: 5 sn

Bu değer, metodun zaman aşımını sınırlandırır. Zaman aşımına ulaşılırsa önbelleğe alınmış veriler 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; zira işlem arka planda farklı isteklerden oluşabilir.

Yanıt parametreleri:

ParametreAçıklama
FlowPlacement’ı, tanımlayıcıları (InstanceIdentity, VariationId), adı, paywall varyasyonlarını (Paywalls — AdaptyFlowPaywall listesi) ve remote config’leri (RemoteConfigs — her locale için bir girdi içeren liste) barındıran AdaptyFlow nesnesi. Ürünleri ön yükleme, özel UI veya programatik kontroller için almak üzere GetPaywallProducts(flow) metodunu çağırın.

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

Flow veya paywall’ı getirdikten sonra, görünüm yapılandırmasını yükleyin ve CreateFlowView metoduyla tek adımda görünümü oluşturun. Ayrıca kontrol etmeniz gereken bir bayrak yoktur: placement Flow & Paywall Builder (bir flow) veya old Paywall Builder (bir paywall) ile tasarlanmışsa CreateFlowView, sunuma hazır görünümü döndürür. Placement, Builder arayüzü olmayan özel bir paywall ise CreateFlowView bir hata döndürür — bunu remote config paywall olarak ele alın.

Important

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

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetPreloadProducts(true)
    .SetLoadTimeout(TimeSpan.FromSeconds(5));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    if (error != null) {
        // the flow has no view configured, or view creation failed
        return;
    }

    // use view
});
ParametreZorunlulukAçıklama
flowzorunluAdapty.GetFlow aracılığıyla alınan bir AdaptyFlow nesnesi.
Localeisteğe bağlıFlow veya paywall’ı oluşturmak için kullanılacak Builder yerelleştirmesinin tanımlayıcısı; örneğin en veya pt-br. Flow, görünümü oluşturulduğunda yerelleştirilir, dolayısıyla yerelleştirmeyi seçebileceğiniz tek yer burasıdır. SDK cihaz yerelini okumaz: bu parametreyi atlarsanız flow en dilinde ya da flow’un en yerelleştirmesi yoksa varsayılan dilinde görüntülenir. Kod, flow’un yerelleştirme koduyla birebir eşleşmelidir. Bkz. Yerelleştirmeleri ve yerel kodlarını kullanma.
LoadTimeoutisteğe bağlıBu değer, metodun zaman aşımı süresini sınırlar. Zaman aşımına ulaşılırsa önbelleğe alınmış veriler veya yerel yedek döndürülür. İşlem arka planda farklı isteklerden oluşabileceğinden, bu metod nadir durumlarda LoadTimeout’ta belirtilenden biraz daha geç zaman aşımına uğrayabilir.
PreloadProductsisteğe bağlıDaha iyi performans için ürünleri önceden yüklemek amacıyla true olarak ayarlayın. Etkinleştirildiğinde ürünler önceden yüklenir ve flow veya paywall’ın görüntülenme süresi kısalır.
CustomTagsisteğe bağlıFlow’un özel etiketleri için uygulamanızın değerleri; her etiketin tam adıyla anahtarlanmış bir sözlük olarak girilir. Sözlüğü SetCustomTags metoduna iletin. Ayrıntılar için bkz. Flow’lara veri aktarma.
ProductPurchaseParametersisteğe bağlıYalnızca Android (iOS’ta göz ardı edilir). AdaptyProductIdentifier’dan AdaptyPurchaseParameters’a bir sözlük. Flow veya paywall’daki tek tek ürünler için kişiselleştirilmiş teklifler veya abonelik güncelleme parametreleri gibi satın alma özgü parametreleri yapılandırmak için kullanın.
EnableSafeAreaPaddingsisteğe bağlıYalnızca Android (iOS’ta göz ardı edilir). 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, Builder yerelleştirmesi eklemeyi öğ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 getirilir, bu yüzden bu süreci hızlandırmak için endişelenmenize gerek yoktur. Ancak çok sayıda kitle ve placement’ınız olduğunda ve kullanıcılarınızın internet bağlantısı zayıf olduğunda, bir flow veya paywall getirme işlemi 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 All Users kitlesi için flow veya paywall’ı getiren GetFlowForDefaultAudience metodunu kullanabilirsiniz. Ancak önerilen yaklaşımın, yukarıdaki Flow/paywall getirme bölümünde anlatıldığı gibi GetFlow metoduyla flow veya paywall getirmek olduğunu anlamak kritik öneme sahiptir.

Warning

Neden GetFlow kullanmanızı öneriyoruz

GetFlowForDefaultAudience metodu birkaç önemli dezavantajla birlikte gelir:

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

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

Adapty.GetFlowForDefaultAudience(
    "YOUR_PLACEMENT_ID",
    AdaptyPlacementFetchPolicy.Default,
    (flow, error) => {
        if (error != null) {
            // handle the error
            return;
        }

        // flow - the requested flow
    }
);
ParametreVarlıkAçıklama
placementIdgerekliPlacement tanımlayıcısı. Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
fetchPolicyvarsayılan: AdaptyPlacementFetchPolicy.Default

fetchPolicy, SDK’nın önbellekten yararlanıp yararlanamayacağını değil, hangi katmanı önce okuyacağını belirler. SDK varsayılan olarak ö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 veriyi almasını sağladığından bu varyantı öneririz.

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, önbellekte hiçbir şey yoksa sunucuya gider. Kullanıcılar mutlak olarak en güncel 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 boyunca kullanmak güvenlidir.

Üçüncü bir politika olan AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge), ikisi arasında konumlanır: önbelleğe alınan kopya, ilettiğiniz TimeSpan değerinden daha yeni olduğu sürece önbelleği önce okur; daha eski olduğunda sunucuya gider.

Önbelleğin uygulama yeniden başlatıldığında bozulmadan kaldığını, yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yoluyla silindiğ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 ayarlamanız gerekir.

Örneğin şunları yapabilirsiniz:

  • Bazı kullanıcılara farklı bir görüntü veya video gösterin.
  • Uzak bir ana görüntü yüklenirken yerel bir önizleme görüntüsü gösterin.
  • Bir video çalıştırmadan önce önizleme görüntüsü gösterin.
  • Uygulamayla birlikte gelen medyayı gösterin; böylece ilk ekran indirme olmadan render edilir. Bkz. Uygulama paketinden ilk ekran medyasını gösterme.

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

var customAssets = new Dictionary<string, AdaptyCustomAsset>
{
    { "custom_image", AdaptyCustomAsset.LocalImageFile("custom_assets/images/custom_image.png") },
    { "hero_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/custom_video.mp4") }
};

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetCustomAssets(customAssets)
    .SetLoadTimeout(TimeSpan.FromSeconds(3));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    // handle the result
});
Note

Bir varlık bulunamazsa veya yüklenemezse, flow veya paywall Builder’da yapılandırılmış varsayılan görünümüne geri döner.

Geliştirici tanımlı zamanlayıcıları ayarlama

Unity uygulamanızda özel zamanlayıcılar kullanmak için, zamanlayıcı ID’lerini ve bitiş tarihlerini içeren bir sözlüğü SetCustomTimers metoduna geçirin. İşte bir örnek:

var customTimers = new Dictionary<string, DateTime> {
    { "CUSTOM_TIMER_6H", DateTime.Now.AddHours(6) },
    { "CUSTOM_TIMER_NY", new DateTime(2026, 1, 1) }
};

var parameters = new AdaptyUICreateFlowViewParameters()
    .SetCustomTimers(customTimers)
    .SetLoadTimeout(TimeSpan.FromSeconds(3));

AdaptyUI.CreateFlowView(flow, parameters, (view, error) => {
    // handle the result
});

Bu örnekte, CUSTOM_TIMER_NY ve CUSTOM_TIMER_6H, Adapty Kontrol Paneli’nde ayarladığınız geliştirici tanımlı zamanlayıcıların Timer ID’leridir. Timer resolver, uygulamanızın her zamanlayıcıyı doğru değerle dinamik olarak güncellemesini sağlar. Örneğin:

  • CUSTOM_TIMER_NY: Yılbaşı gibi zamanlayıcının bitiş tarihine kalan süre.
  • CUSTOM_TIMER_6H: Kullanıcının flow’u veya paywall’u açtığı andan itibaren başlayan 6 saatlik sürede kalan zaman.

Adapty Kontrol Paneli’ndeki eski Paywall Builder ile paywallınızın görsel kısmını tasarladıktan sonra, bunu mobil uygulamanızda gösterebilirsiniz. Bu sürecin 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.

Warning

SDK 3.x Paywall Builder ile oluşturulan paywalllar, Unity SDK sürüm 3.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ınızı ekleyin.
  4. Mobil uygulamanıza Adapty SDK yükleyin.

Paywall Builder ile tasarlanan paywall’u 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 gösterilecek içeriği hem de nasıl gösterileceğini barındırır. Yine de placement aracılığıyla ID’sini, view konfigürasyonunu almanız ve ardından mobil uygulamanızda sunmanız gerekir.

En iyi performansı sağlamak için, paywall’ı ve görünüm yapılandırmasını olabildiğince erken almanız, böylece kullanıcıya sunulmadan önce görsellerin indirilmesi için yeterli süre tanımanız kritik önem taşır.

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

Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // paywall - the resulting object
});

Parametreler:

ParametreZorunlulukAçıklama
placementIdzorunluİstenen Placement tanımlayıcısı. Bu, Adapty Kontrol Paneli’nde 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, 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: 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 verileri almasını sağladığından bu seçeneği öneriyoruz.

Ancak kullanıcılarınızın kararsız 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; bu seçenek ö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 amacıyla oturum sırasında kullanmak güvenlidir.

Üçüncü bir politika olan AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge), ikisi arasında bir yerde durur: önbelleğe alınan kopya, geçirdiğiniz TimeSpan değerinden daha yeniyken önce önbelleği okur, daha eskiyse sunucuya gider.

Önbelleğin uygulama yeniden başlatıldığında bozulmadan kaldığını ve 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 depolar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve yedek paywall’lar. Paywall’ları daha hızlı almak için CDN ve CDN’e ulaşılamadığı durumlarda bağımsız bir yedek sunucu da kullanıyoruz. 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.

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ış veriler 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; zira işlem arka planda farklı isteklerden oluşabilir.

Yanıt parametreleri:

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

Paywall Builder ile tasarlanan paywall’un görünüm yapılandırmasını getirin

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’u getirdikten sonra, Paywall Builder kullanılarak oluşturulduğunu gösteren bir ViewConfiguration içerip içermediğini kontrol edin. Bu bilgi, paywall’u nasıl görüntüleyeceğinizi belirler. ViewConfiguration mevcutsa Paywall Builder paywall’u olarak ele alın; yoksa remote config paywall olarak işleyin.

Unity SDK’da, görünüm yapılandırmasını manuel olarak önceden getirmeye gerek kalmadan 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 yol açabilir.

var parameters = new AdaptyUICreatePaywallViewParameters()
  .SetPreloadProducts(preloadProducts)
  .SetLoadTimeout(new TimeSpan(0, 0, 3));

AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
  // handle the result
});

Parametreler:

ParametreZorunlulukAçıklama
paywallzorunluİstenen paywall için bir controller edinmek amacıyla kullanılan AdaptyPaywall nesnesi.
loadTimeoutvarsayılan: 5 snBu yöntem için zaman aşımı sınırını belirler. Zaman aşımına ulaşılırsa önbelleğe alınmış veriler veya yerel yedek döndürülür. Arka planda farklı isteklerden oluşabileceğinden, bu yöntem nadir durumlarda loadTimeout içinde belirtilenden biraz daha geç zaman aşımına uğrayabilir.
PreloadProductsisteğe bağlıEkranda ürünlerin görüntülenme süresini optimize etmek için bir AdaptyPaywallProducts dizisi sağlayın. nil geçilirse AdaptyUI gerekli ürünleri otomatik olarak getirir.
CustomTagsisteğe bağlıÖzel etiketlerin ve çözümlenmiş değerlerinin bir sözlüğünü tanımlayın. Özel etiketler, paywall içeriğinde yer tutucu olarak işlev görür; paywall içinde kişiselleştirilmiş içerik sunmak için belirli dizelerle dinamik olarak değiştirilirler. Daha fazla ayrıntı için Paywall Builder’da özel etiketler konusuna bakın.
CustomTimersisteğe bağlıÖzel zamanlayıcıların ve bitiş tarihlerinin bir sözlüğünü tanımlayın. Özel zamanlayıcılar, paywallınızda geri sayım sayaçları görüntülemenizi sağlar.
Note

Birden fazla dili 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ü oluşturduktan sonra paywallı gösterin.

Varlıkları özelleştirme

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

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

Diğer görüntü 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.
  • Uzaktaki 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.
Important

Bu özelliği kullanmak için Adapty Unity SDK’yı 3.8.0 veya üzeri bir sürüme güncelleyin.

Aşağıda, basit bir sözlük aracılığıyla özel varlıkları nasıl sağlayabileceğinize dair bir örnek bulunmaktadır:

var customAssets = new Dictionary<string, AdaptyCustomAsset>
{
    { "custom_image", AdaptyCustomAsset.LocalImageFile("custom_assets/images/custom_image.png") },
    { "hero_video", AdaptyCustomAsset.LocalVideoFile("custom_assets/videos/custom_video.mp4") }
};

var parameters = new AdaptyUICreatePaywallViewParameters()
    .SetCustomAssets(customAssets)
    .SetLoadTimeout(new TimeSpan(0, 0, 3));

AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
    // handle the result
});
Note

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

Unity uygulamanızda geliştirici tanımlı zamanlayıcılar kurma

Unity uygulamanızda özel zamanlayıcılar kullanmak için, zamanlayıcı ID’leri ve bitiş tarihlerinden oluşan bir sözlüğü doğrudan SetCustomTimers metoduna geçirebilirsiniz. İşte bir örnek:

var customTimers = new Dictionary<string, DateTime> {
    { "CUSTOM_TIMER_6H", DateTime.Now.AddHours(6) },
    { "CUSTOM_TIMER_NY", new DateTime(2025, 1, 1) }
};

var parameters = new AdaptyUICreatePaywallViewParameters()
    .SetCustomTimers(customTimers)
    .SetLoadTimeout(new TimeSpan(0, 0, 3));

AdaptyUI.CreatePaywallView(paywall, parameters, (view, error) => {
    // handle the result
});

Bu örnekte, CUSTOM_TIMER_NY ve CUSTOM_TIMER_6H, Adapty Kontrol Paneli’nde ayarladığınız geliştirici tanımlı zamanlayıcıların Timer ID’leridir. Zamanlayıcı çözümleyici, uygulamanızın her zamanlayıcıyı doğru değerle dinamik olarak güncellemesini sağlar. Örneğin:

  • CUSTOM_TIMER_NY: Yılbaşı gibi zamanlayıcının bitiş anına kalan süre.
  • CUSTOM_TIMER_6H: Kullanıcının paywall’ı açtığı andan itibaren başlayan 6 saatlik sürede kalan zaman.

Varsayılan kitle paywallı ile paywall getirme işlemini hızlandırın

Genellikle paywalllar neredeyse anında getirilir, bu yüzden bu süreci hızlandırma konusunda 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ın getirilmesi istediğinizden daha uzun sürebilir. Böyle durumlarda, hiç paywall göstermemek yerine sorunsuz bir kullanıcı deneyimi sağlamak amacıyla varsayılan bir paywall görüntülemek isteyebilirsiniz.

Bu sorunu çözmek için, belirtilen placement’ın paywallını All Users kitlesi için getiren GetPaywallForDefaultAudience metodunu kullanabilirsiniz. Ancak, önerilen yaklaşımın, yukarıdaki Paywall Getirme bölümünde açıklandığı gibi, paywallı getPaywall metoduyla getirmek olduğunu unutmayın.

Warning

GetPaywallForDefaultAudience yerine GetPaywall kullanmayı tercih edin; zira ikincisinin önemli kısıtlamaları vardır:

  • Uyumluluk sorunları: Birden fazla uygulama sürümünü desteklerken sorun çıkarabilir; geriye dönük uyumlu tasarımlar gerektirir ya da eski sürümlerin hatalı görüntüleneceğini kabul etmek gerekir.
  • Kişiselleştirme yok: Yalnızca “All Users” kitlesi için içerik gösterir; ülke, attribution veya özel özelliklere dayalı hedefleme yapılamaz.

Daha hızlı yükleme bu dezavantajları göze almaya değiyorsa, aşağıda gösterildiği gibi GetPaywallForDefaultAudience kullanın. Aksi takdirde, yukarıda açıklandığı şekilde GetPaywall kullanın.

Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // paywall - the resulting object
});

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, ikincisi ise bölge içindir.

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

fetchPolicyvarsayılan: AdaptyPlacementFetchPolicy.Default

fetchPolicy, SDK’nın önce hangi katmanı okuyacağını belirler; önbelleğin kullanılıp kullanılamayacağını değil. Varsayılan olarak SDK önce sunucuya gider ve istek başarısız olursa önbelleğe alınmış veriyi döndürür. Bu seçeneği ö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 göz önünde bulundurun; ö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 amacıyla oturum sırasında kullanmak güvenlidir.

Üçüncü bir politika olan AdaptyPlacementFetchPolicy.ReturnCacheDataIfNotExpiredElseLoad(maxAge), ikisi arasında bir yerde durur: önbelleğe alınmış kopya, geçirdiğiniz TimeSpan değerinden daha yeniyken önbelleği okur ve daha eskiyse 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 silindiğini unutmayın.

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