---
title: "React Native SDK'da buton aksiyonlarına yanıt verme"
description: "Daha iyi uygulama monetizasyonu için Adapty kullanarak React Native'de paywall buton aksiyonlarını yönetin."
---

Adapty paywall builder kullanarak paywall oluşturuyorsanız, butonları doğru şekilde ayarlamak çok önemlidir:

1. [Paywall builder'da bir buton ekleyin](paywall-buttons) ve bu butona önceden tanımlanmış bir aksiyon atayın ya da özel bir aksiyon ID'si oluşturun.
2. Atadığınız her aksiyonu uygulamanızın kodunda ele alın.

Bu kılavuz, kodunuzda özel ve önceden tanımlanmış aksiyonları nasıl yöneteceğinizi gösterir.

:::warning
**Yalnızca satın almalar, geri yüklemeler, paywall kapatma işlemleri ve URL açma işlemleri otomatik olarak gerçekleşir.** Diğer tüm buton aksiyonları için uygulama kodunuzda uygun yanıt uygulamasını yapmanız gerekir.
:::

## Paywall'ları kapatma \{#close-paywalls\}

Paywall'ınızı kapatacak bir buton eklemek için:

1. Paywall builder'da bir buton ekleyin ve **Close** aksiyonunu atayın.
2. Uygulama kodunuzda, paywall'ı kapatan `close` aksiyonu için bir handler uygulayın.

:::info
React Native SDK'da `close` aksiyonu, varsayılan olarak paywall'ı kapatmayı tetikler. Ancak gerekirse bu davranışı kodunuzda geçersiz kılabilirsiniz. Örneğin, bir paywall'ı kapatmak başka birini açabilir.
:::

<Tabs groupId="version" queryString>
<TabItem value="new" label="SDK version 3.14 or later" default>

<Tabs groupId="presentation-method" queryString>
<TabItem value="platform" label="React component" default>

React component için close aksiyonunu ayrı event handler prop'ları aracılığıyla yönetin:

```javascript

function MyPaywall({ paywall }) {
  const onCloseButtonPress = useCallback<EventHandlers['onCloseButtonPress']>(() => {
    // Handle close button press - navigate away or hide component
    navigation.goBack();
  }, [navigation]);

  return (
    <AdaptyPaywallView
      paywall={paywall}
      style={styles.container}
      onCloseButtonPress={onCloseButtonPress}
    />
  );
}
```

</TabItem>
<TabItem value="standalone" label="Modal presentation">

Modal sunum için close handler'ı uygulayın:

```javascript

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
    onCloseButtonPress() {
        return true; // allow paywall closing
    }
});
```

</TabItem>
</Tabs>

</TabItem>

<TabItem value="old" label="SDK version < 3.14" default>

SDK version < 3.14 için yalnızca modal sunum desteklenir:

```javascript

const view = await createPaywallView(paywall);

const unsubscribe = view.registerEventHandlers({
    onCloseButtonPress() {
        return true; // allow paywall closing
    }
});
```

</TabItem>
</Tabs>

## Paywall'lardan URL açma \{#open-urls-from-paywalls\}

:::tip
Bir grup bağlantı eklemek istiyorsanız (ör. kullanım koşulları ve satın alma geri yükleme), paywall builder'da bir **Link** öğesi ekleyin ve bunu **Open URL** aksiyonuna sahip butonlarla aynı şekilde yönetin.
:::

Paywall'ınızdan bir bağlantı açacak bir buton eklemek için (ör. **Kullanım Koşulları** veya **Gizlilik Politikası**):

1. Paywall builder'da bir buton ekleyin, **Open URL** aksiyonunu atayın ve açmak istediğiniz URL'yi girin.
2. Uygulama kodunuzda, alınan URL'yi tarayıcıda açan `openUrl` aksiyonu için bir handler uygulayın.

:::info
React Native SDK'da `openUrl` aksiyonu, varsayılan olarak URL'yi açmayı tetikler. Ancak gerekirse bu davranışı kodunuzda geçersiz kılabilirsiniz.
:::

<Tabs groupId="version" queryString>
<TabItem value="new" label="SDK version 3.14 or later" default>

<Tabs groupId="presentation-method" queryString>
<TabItem value="platform" label="React component" default>

React component için URL açma işlemini event handler prop'u aracılığıyla yönetin:

```javascript

function MyPaywall({ paywall }) {
  const onUrlPress = useCallback<EventHandlers['onUrlPress']>((url) => {
    Linking.openURL(url);
  }, []);

  return (
    <AdaptyPaywallView
      paywall={paywall}
      style={styles.container}
      onUrlPress={onUrlPress}
    />
  );
}
```

</TabItem>
<TabItem value="standalone" label="Modal presentation">

Modal sunum için URL handler'ı uygulayın:

```javascript

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
    onUrlPress(url) {
        Linking.openURL(url);
        return false; // Keep paywall open
    },
});
```

</TabItem>
</Tabs>

</TabItem>

<TabItem value="old" label="SDK version < 3.14" default>

SDK version < 3.14 için yalnızca modal sunum desteklenir:

```javascript

const view = await createPaywallView(paywall);

const unsubscribe = view.registerEventHandlers({
    onUrlPress(url) {
        Linking.openURL(url);
        return false; // Keep paywall open
    },
});
```

</TabItem>
</Tabs>

## Uygulamaya giriş yapma \{#log-into-the-app\}

Kullanıcıların uygulamanıza giriş yapmasını sağlayan bir buton eklemek için:

1. Paywall builder'da bir buton ekleyin ve **Login** aksiyonunu atayın.
2. Uygulama kodunuzda, kullanıcınızı tanımlayan `login` aksiyonu için bir handler uygulayın.

<Tabs groupId="version" queryString>
<TabItem value="new" label="SDK version 3.14 or later" default>

<Tabs groupId="presentation-method" queryString>
<TabItem value="platform" label="React component" default>

React component için girişi event handler prop'u aracılığıyla yönetin:

```javascript

function MyPaywall({ paywall }) {
  const onCustomAction = useCallback<EventHandlers['onCustomAction']>((actionId) => {
    if (actionId === 'login') {
      navigation.navigate('Login');
    }
  }, [navigation]);

  return (
    <AdaptyPaywallView
      paywall={paywall}
      style={styles.container}
      onCustomAction={onCustomAction}
    />
  );
}
```

</TabItem>
<TabItem value="standalone" label="Modal presentation">

Modal sunum için login handler'ı uygulayın:

```javascript

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
    onCustomAction(actionId) {
        if (actionId === 'login') {
            navigation.navigate('Login');
        }
    }
});
```

</TabItem>
</Tabs>

</TabItem>

<TabItem value="old" label="SDK version < 3.14" default>

SDK version < 3.14 için yalnızca modal sunum desteklenir:

```javascript

const view = await createPaywallView(paywall);

const unsubscribe = view.registerEventHandlers({
    onCustomAction(actionId) {
        if (actionId === 'login') {
            navigation.navigate('Login');
        }
    }
});
```

</TabItem>
</Tabs>

## Özel aksiyonları yönetme \{#handle-custom-actions\}

Başka aksiyonları yönetecek bir buton eklemek için:

1. Paywall builder'da bir buton ekleyin, **Custom** aksiyonunu atayın ve bir ID belirleyin.
2. Uygulama kodunuzda, oluşturduğunuz aksiyon ID'si için bir handler uygulayın.

Örneğin, başka bir abonelik teklifi veya tek seferlik satın alma seçeneğiniz varsa, başka bir paywall görüntüleyen bir buton ekleyebilirsiniz:

<Tabs groupId="version" queryString>
<TabItem value="new" label="SDK version 3.14 or later" default>

<Tabs groupId="presentation-method" queryString>
<TabItem value="platform" label="React component" default>

React component için özel aksiyonları event handler prop'u aracılığıyla yönetin:

```javascript

function MyPaywall({ paywall }) {
  const onCustomAction = useCallback<EventHandlers['onCustomAction']>((actionId) => {
    if (actionId === 'openNewPaywall') {
      // Display another paywall
    }
  }, []);

  return (
    <AdaptyPaywallView
      paywall={paywall}
      style={styles.container}
      onCustomAction={onCustomAction}
    />
  );
}
```

</TabItem>
<TabItem value="standalone" label="Modal presentation">

Modal sunum için özel aksiyon handler'larını uygulayın:

```javascript
const unsubscribe = view.setEventHandlers({
    onCustomAction(actionId) {
        if (actionId === 'openNewPaywall') {
            // Display another paywall
        }
    },
});
```

</TabItem>
</Tabs>

</TabItem>

<TabItem value="old" label="SDK version < 3.14" default>

SDK version < 3.14 için yalnızca modal sunum desteklenir:

```javascript
const unsubscribe = view.registerEventHandlers({
    onCustomAction(actionId) {
        if (actionId === 'openNewPaywall') {
            // Display another paywall
        }
    },
});
```

</TabItem>
</Tabs>