---
title: "Unity SDK'da remote config paywallları için paywallları ve ürünleri getir"
description: "Kullanıcı monetizasyonunu artırmak için Adapty Unity SDK'da paywallları ve ürünleri getirin."
---

Adapty, farklı kullanıcı segmentleri için farklı ürünler satmak amacıyla paywallları kullanır. Remote config paywallları, hangi ürünlerin gösterileceğini ve paywall tasarımını belirlemenizi sağlayan özel parametreler içerir.

:::warning

Bu sayfa, remote config paywalllarının nasıl getirileceğini açıklamaktadır. Paywall Builder ile oluşturulmuş paywalllar getiriyorsanız, lütfen [Unity SDK'da Paywall Builder paywallları için paywallları ve ürünleri getir](get-pb-paywalls) sayfasına bakın.

:::

## Paywall getir

Adapty Kontrol Paneli'nde bir placement oluşturduğunuzda, o placement'ın adını kodunuzda kullanarak kullanıcıya gösterilecek paywall'ı alırsınız.

```csharp title="Unity"
Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
    if (error != null) {
        // hata işleme
        return;
    }
    
    // paywall'ı kullan
});
```

Parametreler:

| Parametre | Açıklama |
|-----------|----------|
| **placementId** | Adapty Kontrol Paneli'nde oluşturduğunuz placement'ın ID'si. |
| **locale** | Dil tercihi için isteğe bağlı bir parametre. Varsayılan olarak `nil` (veya Swift için `nil`). ISO 639-1 veya BCP 47 formatında olabilir (ör. `en`, `pt-BR`). Adapty'nin yerelleştirme süreci hakkında daha fazla bilgi için [Paywall yerelleştirmeleri ve dil kodları](localizations-and-locale-codes) sayfasına bakın. |
| **fetchPolicy** | Bu parametre, verilerin nasıl ve nereden getirileceğini belirler. `FetchPolicy.ReloadRevalidatingCacheData` (varsayılan) önbelleği yeniden doğrular; `FetchPolicy.ReturnCacheDataElseLoad` önce önbelleği kontrol eder, bulamazsa yükler; `FetchPolicy.ReturnCacheDataDontLoad` yalnızca önbelleği kullanır. Çevrimdışı kullanım için `ReturnCacheDataDontLoad` tercih edilir. |

`getPaywall` fonksiyonu, `AdaptyPaywall` nesnesini döndürür. Bu nesne, paywall'ı ekranınızda görüntülemek için ihtiyaç duyduğunuz tüm meta verileri içerir: başlık, açıklama, özel parametreler ve daha fazlası.

## Paywall ürünlerini getir

Paywall meta verilerini aldıktan sonra, ürün listesini getirmeniz gerekir. Bu sayede kullanıcıya fiyat, açıklama ve diğer yerel bilgileri gösterebilirsiniz.

```csharp title="Unity"
Adapty.GetPaywallProducts(paywall, (products, error) => {
    if (error != null) {
        // hata işleme
        return;
    }
    
    // products listesini kullan
});
```

Parametreler:

| Parametre | Açıklama |
|-----------|----------|
| **paywall** | Önceki adımda aldığınız `AdaptyPaywall` nesnesi. |

`getPaywallProducts` fonksiyonu, `AdaptyPaywallProduct` nesne listesini döndürür.

## Paywall ürünlerini teklif belirlemeden getir

Belirli durumlarda, sunulan teklifi (başlangıç teklifi, promosyon teklifi vb.) belirlemeden yalnızca ürün listesini almak isteyebilirsiniz. Bu, ürün ekranını daha hızlı yüklemenizi sağlar.

```csharp title="Unity"
Adapty.GetPaywallProductsWithoutDeterminingOffer(paywall, (products, error) => {
    if (error != null) {
        // hata işleme
        return;
    }
    
    // products listesini kullan
});
```

## Varsayılan kitle için paywall getir

Adapty SDK, varsayılan olarak kullanıcıya atanmış kitleye göre paywall döndürür. Ancak bazı durumlarda, profil ve kitle bilgisi henüz hazır olmadan önce bir paywall göstermek isteyebilirsiniz. Bu durumda `getPaywallForDefaultAudience` kullanın:

```csharp title="Unity"
Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
    if (error != null) {
        // hata işleme
        return;
    }
    
    // paywall'ı kullan
});
```

:::warning

`getPaywallForDefaultAudience`, yalnızca **varsayılan kitle** için tanımlanmış paywallı döndürür. Kullanıcı farklı bir segment veya kitleye aitse, bu fonksiyon yanlış paywallı döndürebilir.

:::

## Sonraki adım

Paywallı ve ürünleri başarıyla getirdikten sonra, bunları kullanıcıya nasıl göstereceğinizi öğrenmek için [Remote config ile paywall'ı görüntüle](unity-present-remote-config-paywalls) sayfasına bakın.

Remote config ve özel paywallları göstermeden önce, bunlara ilişkin bilgileri çekmeniz gerekir. Bu konunun remote config ve özel paywalllarla ilgili olduğunu lütfen unutmayın. Paywall Builder ile özelleştirilmiş paywallları çekmek için [Paywall Builder paywalllarını ve konfigürasyonlarını çekme](unity-get-pb-paywalls) konusuna bakabilirsiniz.

:::tip

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](sample-apps) göz atın.

:::

<details>
   <summary>Mobil uygulamanızda paywallları ve ürünleri çekmeye başlamadan önce (genişletmek için tıklayın)</summary>

   1. Adapty Kontrol Paneli'nde [ürünlerinizi oluşturun](create-product).
2. [Bir paywall oluşturun ve ürünlerinizi paywalla ekleyin](create-paywall) (Adapty Kontrol Paneli'nde).

3. [Placement'lar oluşturun ve paywallınızı placement'a ekleyin](create-placement) (Adapty Kontrol Paneli'nde).

4. [Adapty SDK'yı yükleyin](sdk-installation-unity) (mobil uygulamanıza).
</details>
## Paywall bilgilerini çekme \{#fetch-paywall-information\}

Adapty'de bir [ürün](product), hem App Store hem de Google Play'deki ürünlerin bir birleşimi olarak işlev görür. Bu çapraz platform ürünler, belirli mobil uygulama placement'larında gösterebilmeniz için paywall'lara entegre edilir.

Ürünleri görüntülemek için `getPaywall` metoduyla [placement](placements)'larınızdan birinden bir [Paywall](paywalls) almanız gerekir.
:::important
**Ürün ID'lerini doğrudan koda yazmayın.** Doğrudan kodlamanız gereken tek ID, placement ID'dir. Paywalllar uzaktan yapılandırıldığından, ürün sayısı ve mevcut teklifler her an değişebilir. Uygulamanız bu değişiklikleri dinamik olarak yönetmelidir; bir paywall bugün iki ürün döndürüyorsa ve yarın üç ürün döndürüyorsa, kod değişikliği yapmadan hepsini gösterin.
:::

```csharp showLineNumbers
Adapty.GetPaywall("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // paywall - the resulting object
});
```
| Parametre | Zorunluluk | Açıklama |
|---------|--------|-----------|
| **placementId** | zorunlu | [Placement](placements) tanımlayıcısı. Adapty Kontrol Paneli'nde placement oluştururken belirttiğiniz değerdir. |
| **locale** | <p>isteğe bağlı</p><p>varsayılan: `en`</p> | <p>[Paywall yerelleştirmesinin](add-remote-config-locale) tanımlayıcısı. Bu parametrenin, eksi (**-**) karakteriyle ayrılmış bir veya daha fazla alt etiketten oluşan bir dil kodu olması beklenir. İlk alt etiket dili, ikincisi ise bölgeyi belirtir.</p><p></p><p>Örnek: `en` İngilizce anlamına gelir, `pt-br` Brezilya Portekizcesini temsil eder.</p><p></p><p>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ı](unity-localizations-and-locale-codes) bölümüne bakın.</p> |
| **fetchPolicy** | varsayılan: `.reloadRevalidatingCacheData` | <p>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ığından bu seçeneği öneriyoruz.</p><p></p><p>Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla çalıştığını düşünüyorsanız, mevcut olduğunda önbelleğe alınmış veriyi döndürmek için `.returnCacheDataElseLoad` kullanmayı değerlendirebilirsiniz. Bu durumda kullanıcılar en güncel veriye 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ğ isteklerini azaltmak amacıyla oturum sırasında kullanmak güvenlidir.</p><p></p><p>Ö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.</p><p></p><p>Adapty SDK, paywall'ları iki katmanda saklar: yukarıda açıklanan düzenli olarak güncellenen önbellek ve [yedek paywall'lar](unity-use-fallback-paywalls). Paywall'ları daha hızlı getirmek için CDN, CDN'e 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 her zaman paywall'larınızın en güncel sürümünü almanızı garanti edecek şekilde tasarlanmıştır.</p> |
| **loadTimeout** | varsayılan: 5 sn | <p>Bu değer, metodun zaman aşımı süresini sınırlar. Zaman aşımına ulaşılırsa önbelleğe alınmış veri veya yerel yedek döndürülür.</p><p></p><p>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.</p> |
Ürün ID'lerini sabit olarak kodlamayın! Paywalllar uzaktan yapılandırıldığından, mevcut ürünler, ürün sayısı ve özel teklifler (ücretsiz deneme gibi) zamanla değişebilir. Kodunuzun bu senaryoları ele aldığından emin olun.

Örneğin, başlangıçta 2 ürün aldıysanız uygulamanız bu 2 ürünü göstermelidir. Ancak daha sonra 3 ürün gelirse, herhangi bir kod değişikliği gerektirmeden uygulamanız 3 ürünü de göstermelidir. Sabit olarak kodlamanız gereken tek şey placement ID'dir.

Yanıt parametreleri:
| Parametre | Açı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`](https://unity.adapty.io/class_adapty_s_d_k_1_1_adapty_paywall.html) nesnesi. |
## Ürünleri getir \{#fetch-products\}

Paywall'ı aldıktan sonra, ona karşılık gelen ürün dizisini sorgulayabilirsiniz:

```csharp showLineNumbers
Adapty.GetPaywallProducts(paywall, (products, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // products - the requested products array
});
```

Yanıt parametreleri:
| Parametre | Açıklama |
| :-------- | :------- |
| Products | Ürün tanımlayıcısı, ürün adı, fiyat, para birimi, abonelik süresi ve diğer çeşitli özellikleri içeren [`AdaptyPaywallProduct`](https://unity.adapty.io/class_adapty_s_d_k_1_1_adapty_paywall_product.html) nesnelerinin listesi. |
Kendi paywall tasarımınızı uygularken, büyük olasılıkla [`AdaptyPaywallProduct`](https://unity.adapty.io/class_adapty_s_d_k_1_1_adapty_paywall_product.html) nesnesindeki bu özelliklere ihtiyaç duyacaksınız. Aşağıda en sık kullanılan özellikler gösterilmektedir; mevcut tüm özellikler hakkında ayrıntılı bilgi için bağlantılı belgeye başvurun.
| Özellik | Açıklama |
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Başlık** | Ürünün başlığını göstermek için `product.LocalizedTitle` kullanın. Yerelleştirme, cihazın dil ayarına değil, kullanıcının seçtiği mağaza ülkesine göre yapılır. |
| **Fiyat** | Fiyatın yerelleştirilmiş halini göstermek için `product.Price.LocalizedString` kullanın. Bu yerelleştirme cihazın dil ayarına göre yapılır. Fiyata sayı olarak erişmek için `product.Price.Amount` kullanabilirsiniz; değer yerel para biriminde döner. İlgili para birimi sembolünü almak için `product.Price.CurrencySymbol` kullanın. |
| **Abonelik Dönemi** | Dönemi (örn. hafta, ay, yıl vb.) göstermek için `product.Subscription?.LocalizedPeriod` kullanın. Bu yerelleştirme cihazın dil ayarına göre yapılır. Abonelik dönemine programatik olarak erişmek için `product.Subscription?.Period` kullanın. Buradan `Unit` enum'una erişerek uzunluğu öğrenebilirsiniz (`AdaptySubscriptionPeriodUnit.Day`, `AdaptySubscriptionPeriodUnit.Week`, `AdaptySubscriptionPeriodUnit.Month`, `AdaptySubscriptionPeriodUnit.Year` veya `AdaptySubscriptionPeriodUnit.Unknown`). `NumberOfUnits` değeri ise dönem birimi sayısını verir. Örneğin üç aylık bir abonelik için `Unit` özelliğinde `AdaptySubscriptionPeriodUnit.Month`, `NumberOfUnits` özelliğinde ise `3` görürsünüz. |
| **Başlangıç Teklifi** | Bir aboneliğin başlangıç teklifi içerip içermediğini göstermek (rozet veya başka bir gösterge) için `product.Subscription?.Offer?.Phases` özelliğine bakın. Bu liste, ücretsiz deneme aşaması ve başlangıç fiyatı aşaması olmak üzere en fazla iki indirim aşaması içerebilir. Her aşama nesnesinde şu yararlı özellikler yer alır:<br/>• `PaymentMode`: `AdaptyPaymentMode.FreeTrial`, `AdaptyPaymentMode.PayAsYouGo`, `AdaptyPaymentMode.PayUpFront` ve `AdaptyPaymentMode.Unknown` değerlerine sahip bir enum. Ücretsiz denemeler `AdaptyPaymentMode.FreeTrial` türünde olur.<br/>• `Price`: İndirimli fiyatın sayısal değeri. Ücretsiz denemelerde bu değer `0` olur.<br/>• `LocalizedNumberOfPeriods`: Teklifin süresini cihazın dil ayarına göre yerelleştirilmiş şekilde açıklayan bir string. Örneğin üç günlük bir deneme teklifi bu alanda `"3 days"` gösterir.<br/>• `SubscriptionPeriod`: Alternatif olarak, teklif döneminin ayrıntılarına bu özellikle ulaşabilirsiniz. Teklifler için bir önceki bölümde açıklanan şekilde çalışır.<br/>• `LocalizedSubscriptionPeriod`: İndirimin abonelik döneminin kullanıcının dil ayarına göre biçimlendirilmiş hali. |
## Varsayılan kitle paywallı ile paywall getirmeyi hızlandırın \{#speed-up-paywall-fetching-with-default-audience-paywall\}

Paywalllar genellikle neredeyse anında getirilir, bu yüzden bu süreci hızlandırmak için endişelenmenize gerek yoktur. Ancak çok sayıda kitle ve paywallınız varsa ve kullanıcılarınızın internet bağlantısı zayıfsa, bir paywallın getirilmesi beklenenden 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](#fetch-paywall) bölümünde açıklandığı gibi `getPaywall` metoduyla paywall 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 sorunlara yol açabilir; ya geriye dönük uyumlu tasarımlar gerektirir ya da eski sürümlerin yanlış görüntülenmesini göze almanız gerekir.
- **Kişiselleştirme yok**: Yalnızca "Tüm Kullanıcılar" kitlesine yönelik içerik gösterir; ülke, attribution veya özel özniteliklere dayalı hedefleme devre dışı kalır.

Bu dezavantajlara rağmen daha hızlı yükleme sizin için öncelikliyse, aşağıda gösterildiği gibi `GetPaywallForDefaultAudience` kullanın. Aksi takdirde [yukarıda](#fetch-paywall) açıklandığı şekilde `GetPaywall` kullanın.
:::
```csharp showLineNumbers
Adapty.GetPaywallForDefaultAudience("YOUR_PLACEMENT_ID", "en", (paywall, error) => {
  if(error != null) {
    // handle the error
    return;
  }
  
  // paywall - the resulting object
});
```

Parametreler:
| Parametre | Zorunluluk | Açıklama |
|---------|--------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **placementId** | zorunlu | İstediğiniz [Placement](placements)'ın tanımlayıcısı. Bu, Adapty Kontrol Paneli'nde bir placement oluştururken belirttiğiniz değerdir. |
| **locale** | <p>isteğe bağlı</p><p>varsayılan: `en`</p> | <p>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.</p><p></p><p>Örnek: `en` İngilizce anlamına gelir, `pt-br` Brezilya Portekizcesini temsil eder.</p> |
| **fetchPolicy** | varsayılan: `.reloadRevalidatingCacheData` | <p>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ığından bu seçeneği öneriyoruz.</p><p></p><p>Ancak kullanıcılarınızın kararsız bir internet bağlantısıyla karşılaştığını düşünüyorsanız, mevcut önbellek verisini döndürmek için `.returnCacheDataElseLoad` seçeneğini kullanmayı düşünebilirsiniz. Bu senaryoda kullanıcılar en son verilere ulaşamayabilir, ancak internet bağlantıları ne kadar kesintili olursa olsun daha hızlı yükleme süreleri yaşarlar. Önbellek düzenli olarak güncellenir, bu nedenle ağ isteklerinden kaçınmak için oturum sırasında güvenle kullanılabilir.</p><p></p><p>Önbelleğin uygulama yeniden başlatıldığında korunduğunu, yalnızca uygulama yeniden yüklendiğinde veya manuel temizlik yapıldığında silindiğini unutmayın.</p><p></p><p>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, CDN'e erişilemediği 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 her zaman paywalllarınızın en güncel sürümüne ulaşmanızı garantilemek için tasarlanmıştır.</p> |