---
title: "Capacitor SDK'da remote config paywalllar için paywall ve ürün çekme"
description: "Kullanıcı monetizasyonunu geliştirmek için Adapty Capacitor SDK'da paywall ve ürün çekin."
---

Remote config ve özel paywallları göstermeden önce bunlara ait bilgileri çekmeniz gerekir. Bu konunun remote config ve özel paywalllarla ilgili olduğunu unutmayın. Paywall Builder ile özelleştirilmiş paywalllar için bilgi çekme konusunda [Paywall Builder paywalllarını ve yapılandırmalarını çekme](capacitor-get-pb-paywalls) sayfasına bakın.

:::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 paywall ve ürün çekmeye başlamadan önce (genişletmek için tıklayın)</summary>

   1. Adapty Kontrol Paneli'nde [ürünlerinizi oluşturun](create-product).

2. Adapty Kontrol Paneli'nde [bir paywall oluşturun ve ürünleri paywalla ekleyin](create-paywall).

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

4. Mobil uygulamanıza [Adapty SDK'yı yükleyin](sdk-installation-capacitor).
</details>

## Paywall bilgilerini çekme \{#fetch-paywall-information\}

Adapty'de bir [ürün](product), App Store ve Google Play'deki ürünlerin birleşiminden oluşur. Bu platformlar arası ürünler paywallara entegre edilerek belirli mobil uygulama placement'larında gösterilmesini sağlar.

Ürünleri göstermek için `getPaywall` metoduyla [placement](placements)'larınızdan birinden [Paywall](paywalls) almanız gerekir.

```typescript showLineNumbers

try {
  const paywall = await adapty.getPaywall({ 
    placementId: 'YOUR_PLACEMENT_ID', 
    locale: 'en',
    params: {
      fetchPolicy: 'reload_revalidating_cache_data', // Load from server, fallback to cache
      loadTimeoutMs: 5000 // 5 second timeout
    }
  });
  // the requested paywall
} catch (error) {
  console.error('Failed to fetch paywall:', error);
}
```

| Parametre | Zorunluluk | Açıklama |
|---------|--------|-----------|
| **placementId** | zorunlu | [Placement](placements)'ın 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 parametre, eksi (**-**) karakteriyle ayrılmış bir veya daha fazla alt etiket içeren bir dil kodu olmalıdır. İlk alt etiket dil, ikincisi bölge içindir.</p><p></p><p>Örnek: `en` İngilizce, `pt-br` Brezilya Portekizcesini temsil eder.</p><p></p><p>Yerel ayar kodları ve kullanım önerilerimiz hakkında daha fazla bilgi için [Yerelleştirmeler ve yerel ayar kodları](capacitor-localizations-and-locale-codes) sayfasına bakın.</p> |
| **params.fetchPolicy** | <p>isteğe bağlı</p><p>varsayılan: `'reload_revalidating_cache_data'`</p> | <p>Varsayılan olarak SDK, verileri sunucudan yüklemeye çalışır ve hata durumunda önbellekteki 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.</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, varsa önbellekteki verileri döndürmek için `'return_cache_data_else_load'` kullanmayı düşünebilirsiniz. Bu durumda kullanıcılar en güncel verilere ulaşamayabilir, ancak internet bağlantısından bağımsız olarak 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.</p><p></p><p>Ö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 sıfırlandığını unutmayın.</p> |
| **params.loadTimeoutMs** | <p>isteğe bağlı</p><p>varsayılan: 5000 ms</p> | <p>Bu değer, metodun zaman aşımı süresini (milisaniye cinsinden) sınırlar. Zaman aşımına ulaşıldığında önbellekteki veriler veya yerel yedek döndürülür.</p><p></p><p>Nadir durumlarda bu metodun `loadTimeoutMs`'de belirtilenden biraz daha geç zaman aşımına uğrayabileceğini unutmayın; çünkü işlem arka planda farklı isteklerden oluşabilir.</p> |

**Ürün ID'lerini kodunuza sabit olarak yazmayın.** Kodunuza sabit olarak yazmanız gereken tek ID, placement ID'sidir. 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 ele almalıdır; bugün iki ürün döndüren bir paywall yarın üç ürün döndürse bile kod değişikliği yapmadan hepsini göstermeniz gerekir.

Yanıt parametreleri:

| Parametre | Açıklama                                                                                                                                                  |
| :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Paywall   | Ürün ID'leri listesi, paywall tanımlayıcısı, remote config ve diğer çeşitli özellikleri içeren bir [`AdaptyPaywall`](https://capacitor.adapty.io/interfaces/adaptypaywall) nesnesi. |

## Ürünleri çekme \{#fetch-products\}

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

```typescript showLineNumbers

try {
  const products = await adapty.getPaywallProducts({ paywall });
  // the requested products list
} catch (error) {
  console.error('Failed to fetch products:', error);
}
```

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://capacitor.adapty.io/interfaces/adaptypaywallproduct) nesnelerinin listesi. |

Kendi paywall tasarımınızı uygularken [`AdaptyPaywallProduct`](https://capacitor.adapty.io/interfaces/adaptypaywallproduct) nesnesindeki bu özelliklere erişmeniz gerekecektir. Aşağıda en sık kullanılan özellikler gösterilmektedir; mevcut tüm özellikler için bağlantılı dokümana bakın.

| Özellik                | Açıklama                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Başlık**               | Ürünün başlığını göstermek için `product.localizedTitle` kullanın. Yerelleştirmenin cihazın yerel ayarına değil, kullanıcının seçtiği mağaza ülkesine göre yapıldığını unutmayın.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| **Fiyat**               | Fiyatın yerelleştirilmiş halini göstermek için `product.price?.localizedString` kullanın. Bu yerelleştirme cihazın yerel ayar bilgisine dayanır. Fiyata sayı olarak `product.price?.amount` üzerinden de erişebilirsiniz. Değer yerel para biriminde sağlanır. İlgili para birimi sembolünü almak için `product.price?.currencySymbol` kullanın.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **Abonelik Dönemi** | Dönemi (ör. hafta, ay, yıl vb.) göstermek için `product.subscription?.localizedSubscriptionPeriod` kullanın. Bu yerelleştirme cihazın yerel ayarına dayanır. Abonelik dönemine programatik olarak erişmek için `product.subscription?.subscriptionPeriod` kullanın. Buradan süreyi (yani 'day', 'week', 'month', 'year' veya 'unknown') almak için `unit` özelliğine erişebilirsiniz. `numberOfUnits` değeri dönem birimi sayısını verir. Örneğin üç aylık bir abonelikte `unit` özelliğinde `'month'`, `numberOfUnits` özelliğinde `3` görürsünüz.                                                                                                                                                                                                                                                                                                       |
| **Başlangıç Teklifi**  | Bir aboneliğin başlangıç teklifi içerdiğini gösteren bir rozet veya gösterge için `product.subscription?.offer?.phases` özelliğini inceleyin. 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 bulunur:<br/>• `paymentMode`: `'free_trial'`, `'pay_as_you_go'`, `'pay_up_front'` ve `'unknown'` değerlerini alan bir string. Ücretsiz denemeler `'free_trial'` türünde olacaktır.<br/>• `price`: İndirimli fiyat, sayı olarak. Ücretsiz denemeler için burada `0` arayın.<br/>• `localizedNumberOfPeriods`: Teklifin süresini cihazın yerel ayarıyla yerelleştirilmiş olarak 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 erişebilirsiniz. Teklifler için önceki bölümde açıklanan şekilde çalışır.<br/>• `localizedSubscriptionPeriod`: Kullanıcının yerel ayarı için biçimlendirilmiş indirim abonelik dönemi. |

## Varsayılan kitle paywallıyla paywall çekmeyi hızlandırma \{#speed-up-paywall-fetching-with-default-audience-paywall\}

Paywalllar genellikle neredeyse anında çekildiğinden 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 paywall çekme işlemi beklediğinizden daha uzun sürebilir. Bu durumlarda, hiç paywall göstermemek yerine düzgün bir kullanıcı deneyimi sağlamak amacıyla varsayılan bir paywall göstermek isteyebilirsiniz.

Bunu çözmek için belirtilen placement'ın **All Users** kitlesi için paywallını çeken `getPaywallForDefaultAudience` metodunu kullanabilirsiniz. Ancak önerilen yaklaşımın, yukarıdaki [Paywall Bilgilerini Çekme](fetch-paywalls-and-products-capacitor#fetch-paywall-information) bölümünde açıklandığı gibi `getPaywall` metoduyla paywall çekmek olduğunu unutmayın.

:::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 gerekirse zorluklarla karşılaşabilirsiniz. Ya mevcut (eski) sürümü destekleyen paywalllar tasarlamak zorunda kalırsınız ya da mevcut (eski) sürümdeki kullanıcıların render edilmeyen paywalllarla karşılaşabileceğini kabul etmek durumunda kalırsınız.
- **Hedefleme kaybı**: Tüm kullanıcılar **All Users** kitlesi için tasarlanmış aynı paywallı görür; bu da ülkelere, pazarlama attribution'ına veya kendi özel niteliklerinize dayalı kişiselleştirilmiş hedeflemeyi kaybettiğiniz anlamına gelir.

Bu dezavantajları daha hızlı paywall çekme avantajı için kabul etmeye hazırsanız, `getPaywallForDefaultAudience` metodunu aşağıdaki gibi kullanın. Aksi takdirde [yukarıda](fetch-paywalls-and-products-capacitor#fetch-paywall-information) açıklanan `getPaywall` metodunu kullanmaya devam edin.
:::

```typescript showLineNumbers

try {
  const paywall = await adapty.getPaywallForDefaultAudience({ 
    placementId: 'YOUR_PLACEMENT_ID', 
    locale: 'en',
    params: {
      fetchPolicy: 'reload_revalidating_cache_data' // Load from server, fallback to cache
    }
  });
  // the requested paywall
} catch (error) {
  console.error('Failed to fetch default audience paywall:', error);
}
```

:::note
`getPaywallForDefaultAudience` metodu Capacitor SDK 2.11.2 sürümünden itibaren kullanılabilir.
:::

| Parametre | Zorunluluk | Açıklama |
|---------|--------|-----------|
| **placementId** | zorunlu | [Placement](placements)'ın 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 parametre, eksi (**-**) karakteriyle ayrılmış bir veya daha fazla alt etiket içeren bir dil kodu olmalıdır. İlk alt etiket dil, ikincisi bölge içindir.</p><p></p><p>Örnek: `en` İngilizce, `pt-br` Brezilya Portekizcesini temsil eder.</p><p></p><p>Yerel ayar kodları ve kullanım önerilerimiz hakkında daha fazla bilgi için [Yerelleştirmeler ve yerel ayar kodları](capacitor-localizations-and-locale-codes) sayfasına bakın.</p> |
| **params.fetchPolicy** | <p>isteğe bağlı</p><p>varsayılan: `'reload_revalidating_cache_data'`</p> | <p>Varsayılan olarak SDK, verileri sunucudan yüklemeye çalışır ve hata durumunda önbellekteki 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.</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, varsa önbellekteki verileri döndürmek için `'return_cache_data_else_load'` kullanmayı düşünebilirsiniz. Bu durumda kullanıcılar en güncel verilere ulaşamayabilir, ancak internet bağlantısından bağımsız olarak 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.</p><p></p><p>Ö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 sıfırlandığını unutmayın.</p> |