---
title: "iOS SDK'da özel paywall'unuzda satın almaları etkinleştirme"
description: "Uygulama içi satın almaları etkinleştirmek için Adapty SDK'yı özel iOS paywall'larınıza entegre edin."
---

Bu kılavuz, Adapty'yi özel paywall'larınıza nasıl entegre edeceğinizi açıklar. Paywall uygulaması üzerinde tam kontrolü elinizde tutarken Adapty SDK ürünleri getirir, yeni satın almaları yönetir ve önceki satın almaları geri yükler.
:::important
**Bu kılavuz, özel paywall uygulayan geliştiriciler içindir.** Satın alma işlemlerini etkinleştirmenin en kolay yolunu istiyorsanız [Adapty Flow Builder](ios-quickstart-paywalls)'ı kullanın. Flow Builder ile görsel bir no-code editörde flow'lar oluşturursunuz, Adapty tüm satın alma mantığını otomatik olarak yönetir ve uygulamanızı yeniden yayınlamadan farklı tasarımları test edebilirsiniz.
:::
## Başlamadan önce \{#before-you-start\}

### Ürünleri ayarlayın \{#set-up-products\}

Uygulama içi satın almaları etkinleştirmek için üç temel kavramı anlamanız gerekir:

- [**Ürünler**](product) – kullanıcıların satın alabileceği her şey (abonelikler, consumable'lar, süresiz erişim)
- [**Paywalllar**](paywalls) – hangi ürünlerin sunulacağını tanımlayan yapılandırmalar. Adapty'de paywalllar, ürünleri almanın tek yoludur; ancak bu tasarım sayesinde uygulama kodunuza dokunmadan ürünleri, fiyatları ve teklifleri değiştirebilirsiniz.
- [**Placement'lar**](placements) – uygulamanızda paywallları nerede ve ne zaman göstereceğiniz (örneğin `main`, `onboarding`, `settings`). Kontrol panelinde placement'lar için paywalllar ayarlarsınız, ardından kodunuzda placement ID'siyle bunları talep edersiniz. Bu yapı, A/B testleri yürütmeyi ve farklı kullanıcılara farklı paywalllar göstermeyi kolaylaştırır.

Özel bir paywall kullanıyor olsanız bile bu kavramları anladığınızdan emin olun. Temelde bunlar, uygulamanızda sattığınız ürünleri yönetme biçiminizdir.

Özel paywallınızı uygulamak için bir **paywall** oluşturmanız ve bunu bir **placement**'a eklemeniz gerekir. Bu kurulum, ürünlerinizi almanızı sağlar. Kontrol panelinde ne yapmanız gerektiğini anlamak için [buradaki](quickstart) hızlı başlangıç kılavuzunu takip edin.

### Kullanıcıları yönetin \{#manage-users\}

Kendi tarafınızda backend kimlik doğrulaması ile veya olmadan çalışabilirsiniz.

Ancak Adapty SDK, anonim ve tanımlanmış kullanıcıları farklı biçimde ele alır. Ayrıntıları anlamak ve kullanıcılarla doğru şekilde çalıştığınızdan emin olmak için [kimlik belirleme hızlı başlangıç kılavuzunu](ios-quickstart-identify) okuyun.

## Adım 1. Ürünleri alın \{#step-1-get-products\}

Özel paywall'ınız için ürünleri almak için şunları yapmanız gerekir:

1. [placement](placements) ID'sini `getFlow` metoduna geçirerek `flow` nesnesini alın.
2. Bu flow için ürünler dizisini `getPaywallProducts` metodunu kullanarak alın.

<Tabs groupId="current-os" queryString>

<TabItem value="swift" label="Swift" default>
```swift

func loadPaywall() async {
    do {
        let flow = try await Adapty.getFlow(placementId: "YOUR_PLACEMENT_ID")
        let products = try await Adapty.getPaywallProducts(flow: flow)

        // Use products to build your custom paywall UI
    } catch {
        // Handle the error
    }
}
```
</TabItem>

<TabItem value="swift-callback" label="Swift-Callback" default>

```swift

func loadPaywall() {
    Adapty.getFlow(placementId: "YOUR_PLACEMENT_ID") { result in
        switch result {
        case let .success(flow):
            Adapty.getPaywallProducts(flow: flow) { result in
                switch result {
                case let .success(products):
                    // Use products to build your custom paywall UI
                case let .failure(error):
                    // Handle the error
                }
            }
        case let .failure(error):
            // Handle the error
        }
    }
}
```
</TabItem>
</Tabs>

## Adım 2. Satın almaları kabul edin \{#step-2-accept-purchases\}

Kullanıcı özel paywallınızdaki bir ürüne dokunduğunda, seçilen ürünle birlikte `makePurchase` metodunu çağırın. Bu, satın alma akışını yönetir ve güncellenmiş profili döndürür.

<Tabs groupId="current-os" queryString>

<TabItem value="swift" label="Swift" default>

```swift

func purchaseProduct(_ product: AdaptyPaywallProduct) async {
    do {
        let purchaseResult = try await Adapty.makePurchase(product: product)
        
        switch purchaseResult {
        case .userCancelled:
            // User canceled the purchase
            break
        case .pending:
            // Purchase is pending (e.g., awaiting parental approval)
            break
        case let .success(profile, transaction):
            // Purchase successful, profile updated
            break
        }
    } catch {
        // Handle the error
    }
}
```
</TabItem>

<TabItem value="swift-callback" label="Swift-Callback" default>

```swift

func purchaseProduct(_ product: AdaptyPaywallProduct) {
    Adapty.makePurchase(product: product) { result in
        switch result {
        case let .success(purchaseResult):
            switch purchaseResult {
            case .userCancelled:
                // User canceled the purchase
                break
            case .pending:
                // Purchase is pending (e.g., awaiting parental approval)
                break
            case let .success(profile, transaction):
                // Purchase successful, profile updated
                break
            }
        case let .failure(error):
            // Handle the error
        }
    }
}
```
</TabItem>
</Tabs>

## Adım 3. Satın almaları geri yükleyin \{#step-3-restore-purchases\}

Apple, abonelik sunan tüm uygulamaların kullanıcıların satın almalarını geri yükleyebileceği bir yol sağlamasını zorunlu kılar. Satın almalar, kullanıcı Apple ID'siyle giriş yaptığında otomatik olarak geri yüklense de uygulamanızda yine de bir geri yükleme butonu eklemeniz gerekir.

Kullanıcı geri yükleme butonuna dokunduğunda `restorePurchases` metodunu çağırın. Bu, satın alma geçmişini Adapty ile senkronize eder ve güncellenmiş profili döndürür.

<Tabs groupId="current-os" queryString>

<TabItem value="swift" label="Swift" default>

```swift

func restorePurchases() async {
    do {
        let profile = try await Adapty.restorePurchases()
        // Restore successful, profile updated
    } catch {
        // Handle the error
    }
}
```
</TabItem>

<TabItem value="swift-callback" label="Swift-Callback" default>

```swift

func restorePurchases() {
    Adapty.restorePurchases { result in
        switch result {
        case let .success(profile):
            // Restore successful, profile updated
        case let .failure(error):
            // Handle the error
        }
    }
}
```
</TabItem>
</Tabs>

## Sonraki adımlar \{#next-steps\}

:::tip
Sorularınız mı var ya da sorunlarla mı karşılaşıyorsunuz? Sık sorulan soruların yanıtlarını bulabileceğiniz veya kendi sorularınızı sorabileceğiniz [destek forumumuza](https://adapty.featurebase.app/) göz atın. Ekibimiz ve topluluğumuz yardımcı olmak için burada!
:::

Paywallınız uygulamada gösterilmeye hazır. Paywalldan bir test satın almasını tamamlayabildiğinizden emin olmak için [satın almalarınızı sandbox modunda test edin](test-purchases-in-sandbox).

Ardından, paywallı gösterip göstermeyeceğinizi veya ücretli özelliklere erişim izni verip vermeyeceğinizi belirlemek için [kullanıcıların satın almayı tamamlayıp tamamlamadığını kontrol edin](ios-check-subscription-status).