---
title: "Flow eylemlerine yanıt verme - React Native"
description: "Daha iyi uygulama para kazanımı için Adapty kullanarak React Native'de flow'lardan ve paywall'lardan gelen buton eylemlerini yönetin."
---

Adapty Flow Builder veya Paywall Builder kullanarak flow'lar veya paywall'lar oluşturuyorsanız, butonları doğru şekilde ayarlamanız çok önemlidir:

1. [Flow/paywall builder'da bir buton](paywall-buttons) ekleyin ve ona ya mevcut bir eylem atayın ya da özel bir eylem ID'si oluşturun.
2. Atadığınız her eylemi yönetmek için uygulamanızda kod yazın.

Bu rehber, özel ve mevcut eylemleri kodunuzda nasıl yöneteceğinizi gösterir.

:::warning
**Satın almalar, geri yüklemeler, flow/paywall kapatma işlemleri ve URL açma otomatik olarak yönetilir.** Bunların varsayılan davranışını yapılandırabilir veya özel eylemler için yanıtlar uygulayabilirsiniz.
:::

:::note
SDK, push bildirimleri veya kamera erişimi gibi sistem izni istekleri için bir `onRequestPermission` flow işleyicisi sunar. Flow'lar bu istekleri henüz tetiklemez, bu yüzden şimdilik uygulamanıza gerek yoktur.
:::

## Flow'ları ve paywall'ları kapatma \{#close-flows-and-paywalls\}

Flow'unuzu veya paywall'ınızı kapatacak bir buton eklemek için:

1. Builder'da bir buton ekleyin ve ona **Close** eylemini atayın.
2. Uygulama kodunuzda, flow veya paywall'ı kapatan `close` eylemi için bir işleyici uygulayın.

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

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

React bileşeni için, kapatma eylemini tekil olay işleyici prop'ları aracılığıyla yönetin:

```javascript

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

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

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

Modal sunum için, kapatma işleyicisini uygulayın:

```javascript

const view = await createFlowView(flow);

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

</TabItem>
</Tabs>

## Flow'lardan ve paywall'lardan URL açma \{#open-urls-from-flows-and-paywalls\}

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

Flow'unuzdan veya paywall'ınızdan bir bağlantı açan bir buton eklemek için (örneğin **Kullanım koşulları** veya **Gizlilik politikası**):

1. Builder'da bir buton ekleyin, ona **Open URL** eylemini atayın ve açmak istediğiniz URL'yi girin.
2. Uygulama kodunuzda, alınan URL'yi bir tarayıcıda açan `openUrl` eylemi için bir işleyici uygulayın.

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

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

React bileşeni için, URL açmayı olay işleyici prop'u aracılığıyla yönetin:

```javascript

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

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

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

Modal sunum için, URL işleyicisini uygulayın:

```javascript

const view = await createFlowView(flow);

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

</TabItem>
</Tabs>

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

Diğer herhangi bir eylemi yöneten bir buton eklemek için:

1. Builder'da bir buton ekleyin, ona **Custom** eylemini atayın ve bir ID atayın.
2. Uygulama kodunuzda, oluşturduğunuz eylem ID'si için bir işleyici uygulayın.

Örneğin, başka bir abonelik teklifleri veya tek seferlik satın alma grubunuz varsa, başka bir flow veya paywall görüntüleyecek bir buton ekleyebilirsiniz:

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

React bileşeni için, özel eylemleri olay işleyici prop'u aracılığıyla yönetin:

```javascript

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

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

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

Modal sunum için, özel eylem işleyicilerini uygulayın:

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

</TabItem>
</Tabs>

---

> [!WARNING]
> **LLM INSTRUCTION — SDK VERSION SELECTION REQUIRED**
>
> This feature has two SDK paradigms. Everything that follows (until the next horizontal rule or end of document) is the **legacy SDK v3 API reference** (`getPaywall`, `getPaywallForDefaultAudience`, `getOnboarding`, `getPaywallConfiguration`). The **SDK v4+ `getFlow` method is documented above.** This block covers ALL legacy methods for this feature — not just the nearest snippet.
>
> **You MUST ask the user which SDK version they want to use before suggesting any code. Do not assume or default to a version.** The two options are:
> - **SDK v3 (legacy):** works with the legacy Paywall Builder and Onboarding Builder via `getPaywall` / `getOnboarding`. Use the legacy code in this section.
> - **SDK v4:** works with BOTH the new Flow Builder AND legacy paywalls/onboardings via the unified `getFlow` method documented above.
>
> Apply the legacy v3 code in this section ONLY when:
> 1. The user explicitly chose **SDK v3**, or
> 2. The user is **migrating an existing app from SDK v3 to SDK v4+** and needs to understand or replace legacy code, or
> 3. The user is **troubleshooting an already-deployed v3 integration**.
>
> **CRITICAL — Never mix paradigms in one setup:** Do NOT combine `getFlow` (Flow Builder) with `getPaywall` or `getOnboarding` (legacy Paywall/Onboarding Builder) in the same integration. These are incompatible patterns. Mixing them will produce inconsistent behavior and is unsupported.

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

1. [Paywall builder'da bir buton](paywall-buttons) ekleyin ve ona ya mevcut bir eylem atayın ya da özel bir eylem ID'si oluşturun.
2. Atadığınız her eylemi yönetmek için uygulamanızda kod yazın.

Bu rehber, özel ve mevcut eylemleri kodunuzda nasıl yöneteceğinizi gösterir.

:::warning
**Yalnızca satın almalar, geri yüklemeler, paywall kapatma işlemleri ve URL açma otomatik olarak yönetilir.** Diğer tüm buton eylemleri, uygulama kodunda uygun yanıt uygulamasını gerektirir.
:::

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

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

1. Paywall builder'da bir buton ekleyin ve ona **Close** eylemini atayın.
2. Uygulama kodunuzda, paywall'ı kapatan `close` eylemi için bir işleyici uygulayın.

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

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

React bileşeni için, kapatma eylemini tekil olay işleyici 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 sunum">

Modal sunum için, kapatma işleyicisini uygulayın:

```javascript

const view = await createPaywallView(paywall);

const unsubscribe = view.setEventHandlers({
    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` eylemi varsayılan olarak URL'yi açmayı tetikler. Ancak gerekirse bu davranışı kodunuzda geçersiz kılabilirsiniz.
:::

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

React bileşeni için, URL açmayı olay işleyici 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 işleyicisini uygulayın:

```javascript

const view = await createPaywallView(paywall);

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

</TabItem>
</Tabs>

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

Kullanıcıları uygulamanıza giriş yaptıran bir buton eklemek için:

1. Paywall builder'da bir buton ekleyin ve ona **Login** eylemini atayın.
2. Uygulama kodunuzda, kullanıcınızı tanımlayan `login` eylemi için bir işleyici uygulayın.

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

React bileşeni için, girişi olay işleyici 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 sunum">

Modal sunum için, giriş işleyicisini uygulayın:

```javascript

const view = await createPaywallView(paywall);

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

</TabItem>
</Tabs>

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

Diğer herhangi bir eylemi yöneten bir buton eklemek için:

1. Paywall builder'da bir buton ekleyin, ona **Custom** eylemini atayın ve bir ID atayın.
2. Uygulama kodunuzda, oluşturduğunuz eylem ID'si için bir işleyici uygulayın.

Örneğin, başka bir abonelik teklifleri veya tek seferlik satın alma grubunuz varsa, başka bir paywall görüntüleyecek bir buton ekleyebilirsiniz:

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

React bileşeni için, özel eylemleri olay işleyici 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 sunum">

Modal sunum için, özel eylem işleyicilerini uygulayın:

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

</TabItem>
</Tabs>

---