Flow ve paywallları getir - Unity

GetFlow ile alınanlar
Flow'lar Flow Builder ile oluşturulur — cihazda natif olarak render edilir, WebView gerekmez
Paywall Builder paywall'ları Mevcut tüm Paywall Builder içeriği

flow veya Paywall Builder paywallınızı tasarladıktan sonra, onu mobil uygulamanızda gösterebilirsiniz. İlk adım, placement ile ilişkili flow veya paywallı ve görünüm yapılandırmasını aşağıda açıklandığı şekilde almaktır.

Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğini gerçek bir örnekle görmek ister misiniz? Tam kurulumu, paywall’ların gösterimini, satın alma işlemlerini ve diğer temel işlevleri içeren örnek uygulamalarımıza göz atın.

Mobil uygulamanızda flow’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 flow/paywall oluşturun ve ürünleri ekleyin.
  3. Adapty Kontrol Paneli’nde placement’lar oluşturun ve flow/paywall’unuzu ekleyin.
  4. Mobil uygulamanıza Adapty SDK’yı yükleyin.

Flow/paywall getirme

Flow Builder veya Paywall Builder ile bir flow ya da paywall tasarladıysanız, bunu kullanıcıya göstermek için mobil uygulama kodunuzda ayrıca render etmeniz gerekmez. Böyle bir flow veya paywall, hem neyin gösterileceğini hem de nasıl gösterileceğini kendi içinde barındırır. Yine de placement üzerinden 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, 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’ın tanımlayıcısı. Bu, Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
fetchPolicyvarsayılan: AdaptyPlacementFetchPolicy.Default

SDK varsayılan olarak sunucudan veri yüklemeye çalışır ve başarısız olursa önbelleğe alınan verileri 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 bir internet bağlantısıyla karşılaştığını düşünüyorsanız, önbellekte veri varsa onu döndürmek için AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad kullanmayı değerlendirebilirsiniz. Bu senaryoda kullanıcılar en son verilere ulaşamayabilir; ancak internet bağlantısı ne kadar düzensiz 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.

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

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

loadTimeoutvarsayılan: 5 sn

Bu değer, metodun zaman aşımını sınırlar. Zaman aşımına ulaşılırsa önbelleğe alınan veriler veya yerel yedek döndürülür.

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

Yanıt parametreleri:

ParametreAçıklama
FlowPlacement’ı, tanımlayıcıları (InstanceIdentity, VariationId), adı, paywall varyasyonlarını (PaywallsAdaptyFlowPaywall 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.

View yapılandırmasını getir

Flow veya paywall’ı getirdikten sonra, CreateFlowView metoduyla view yapılandırmasını yükleyin ve view’ı tek adımda oluşturun. Ayrı bir kontrol bayrağı yoktur: placement Flow Builder’da (flow) veya Paywall Builder’da (paywall) tasarlanmışsa, CreateFlowView görüntülemeye hazır view’ı döndürür. Placement, Builder arayüzü olmayan özel bir paywall ise CreateFlowView hata döndürür — bunu remote config paywall olarak ele alın.

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

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 elde edilen bir AdaptyFlow nesnesi.
Localeisteğe bağlıFlow veya paywallın hangi Builder lokalizasyonu ile render edileceğini belirleyen tanımlayıcı; örneğin en veya pt-br. Bir flow, görünümü oluşturulduğunda lokalize edilir; bu nedenle lokalizasyonu seçebileceğiniz tek yer burasıdır. SDK cihaz dilini okumaz: bu parametre atlandığında flow en dilinde ya da flow’un en lokalizasyonu yoksa varsayılan dilinde render edilir. Kod, flow’un lokalizasyon koduyla tam olarak eşleşmelidir. Bkz. Lokalizasyonları ve dil kodlarını kullanma.
LoadTimeoutisteğe bağlıBu değer, metodun zaman aşımını sınırlar. Zaman aşımına ulaşıldığında önbelleğe alınmış veri veya yerel yedek döndürülür. Nadir durumlarda bu metod, LoadTimeout içinde belirtilenden biraz daha geç zaman aşımına uğrayabilir; zira işlem arka planda farklı isteklerden oluşabilir.
PreloadProductsisteğe bağlıDaha iyi performans için ürünleri önceden yüklemek üzere true olarak ayarlayın. Etkinleştirildiğinde, ürünler önceden yüklenerek flow veya paywallın gösterilmesi için gereken süre kısalır.
ProductPurchaseParametersisteğe bağlıYalnızca Android (iOS’ta yok sayılır). AdaptyProductIdentifier’dan AdaptyPurchaseParameters’a bir sözlük. Flow veya paywall içindeki bireysel ürünler için kişiselleştirilmiş teklifler veya abonelik güncelleme parametreleri gibi satın almaya özgü parametreleri yapılandırmak için kullanın.
EnableSafeAreaPaddingsisteğe bağlıYalnızca Android (iOS’ta yok sayılır). true olduğunda, flow görünümü güvenli alan dolguları uygular. Varsayılan: true. Varsayılan değer çoğu durum için uygundur.

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.

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
placementIdzorunluPlacement tanımlayıcısı. Adapty Kontrol Paneli’nde bir placement oluştururken belirttiğiniz değerdir.
fetchPolicyvarsayılan: AdaptyPlacementFetchPolicy.Default

SDK, varsayılan olarak sunucudan veri yüklemeye çalışır; 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 bir internet bağlantısıyla çalıştığını düşünüyorsanız, önbelleğe alınmış veri mevcutsa onu döndürmek için AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad kullanmayı değerlendirin. Bu durumda kullanıcılar en güncel verilere ulaşamayabilir; ancak internet bağlantısı ne kadar tutarsız olursa olsun daha hızlı yükleme süreleri yaşarlar. Önbellek düzenli olarak güncellenir, dolayısıyla oturum sırasında gereksiz ağ isteklerini önlemek için kullanmak güvenlidir.

Önbelleğin uygulama yeniden başlatıldığında silinmediğini, yalnızca uygulama kaldırılıp yeniden kurulduğunda veya manuel temizlik yapıldığında sıfırlandığını 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österme.
  • Uzak bir ana görsel yüklenirken yerel bir önizleme görseli gösterme.
  • Video başlamadan önce bir önizleme görseli gösterme.

İşte ö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
});

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’nde yeni Paywall Builder ile paywall’unuzun görsel kısmını tasarladıktan sonra, bunu mobil uygulamanızda görüntüleyebilirsiniz. Bu sürecin 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.

Yeni Paywall Builder, Unity SDK 3.3.0 veya daha yüksek sürümüyle çalışır.

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.

Adapty SDK’nın bir mobil uygulamaya nasıl entegre edildiğini gerçek bir örnekle görmek ister misiniz? Tam kurulumu, paywall’ların gösterimini, satın alma işlemlerini ve diğer temel işlevleri içeren ö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’ın 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 iki alt etiket içeren bir dil kodu olması beklenir. İlk alt etiket dil, ikincisi ise bölge içindir.

Örnek: en İngilizce, 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: .reloadRevalidatingCacheData

SDK varsayılan olarak sunucudan veri yüklemeye çalışır; 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 erişmesini 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, mevcut olması halinde önbelleğe alınmış veriyi döndürmek için .returnCacheDataElseLoad kullanmayı değerlendirin. Bu senaryoda 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 deneyimler. Önbellek düzenli aralıklarla güncellenir, dolayısıyla ağ isteklerini azaltmak amacıyla oturum sırasında kullanmak güvenlidir.

Ö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 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’e 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 paywall’larınızın en güncel sürümünü almanızı garantilemek için tasarlanmıştır.

loadTimeoutvarsayılan: 5 sn

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

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

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.

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.

Birden fazla dil kullanıyorsanız, Paywall Builder yerelleştirmesi eklemeyi ve yerel ayar kodlarını doğru kullanmayı buradan öğrenebilirsiniz.

Görünümü elde ettikten 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.

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
});

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.

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

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

fetchPolicyvarsayılan: .reloadRevalidatingCacheData

SDK, varsayılan olarak verileri sunucudan yüklemeye çalışır ve başarısız olması durumunda önbelleğe alınmış verileri 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 bir internet bağlantısıyla karşılaştığını düşünüyorsanız, mevcut olduğunda önbelleğe alınmış verileri döndürmek için .returnCacheDataElseLoad seçeneğini kullanmayı değerlendirin. Bu senaryoda 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şarlar. Önbellek düzenli olarak güncellenir, bu nedenle oturum sırasında ağ isteklerini önlemek amacıyla güvenle kullanılabilir.

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

Adapty SDK, paywalls’ları yerel olarak iki katmanda depolar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve yedek paywalls. Paywalls’ları daha hızlı almak için CDN, CDN’e 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 her zaman en son paywall sürümünü almanızı ve güvenilirliği sağlamak amacıyla tasarlanmıştır.