> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Web izin istemleri

> Push bildirim kabul oranlarını artırmak için OneSignal'in web push izin istemlerini nasıl kullanacağınızı öğrenin. Yumuşak istemleri, yerel tarayıcı istemlerini, slidedown istemlerini, kategori kurulumunu, e-posta ve telefon numarası toplamayı ve abonelik zili özelleştirmesini kapsar.

***

<Frame>
  <iframe width="560" height="315" src="https://www.youtube.com/embed/yQBdt7Kf1Lg?si=XSBE3dIb1eBqjOZA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen />
</Frame>

***

## Genel bakış

"İstem gösterme" (Prompting), kullanıcılardan push bildirimleri gönderme izni isteme sürecini ifade eder. İstemler, tarayıcı veya mobil uygulama tarafından sunulan açılır mesajlardır ve kullanıcının abone olmak ve push bildirimleri almak için "İzin Ver"e tıklamasını gerektirir.

Web Push, Masaüstü, Android ve iOS'ta çalışır, ancak lütfen [iOS için web push'un yapılandırılması için bazı ek adımlar gerektirdiğini](./web-push-for-ios) unutmayın. Bir mobil uygulamanız varsa, [Uygulama İçi Mesajlarla Push İzinleri için nasıl istem gösterileceğine](./prompt-for-push-permissions) bakın.

Tarayıcılar, kullanıcının web sitenize abone olması için hem gösterilmesi hem de "İzin Ver" tıklanması gereken kendi yerel, sistem düzeyinde izin istemlerini sağlar. Tarayıcılar artık web sitelerinin yerel izin istemini gösterme konusunda daha seçici olmasını [şiddetle öneriyor](https://onesignal.com/blog/changes-to-chrome-and-firefox-permission-prompting). Bu nedenle yerel istemden önce OneSignal İstemleri veya kendi özel "yumuşak istemlerinizi" kullanmanız teşvik edilir.

### OneSignal istemleri (yumuşak istemler)

OneSignal yumuşak istemleri, tarayıcının yerel izin diyalogundan önce görünen kullanıcı dostu, özelleştirilebilir istemlerdir. Bu istemler kullanıcıları kendi başlarına bildirimlere abone etmez; bunun yerine şunlara yardımcı olur:

1. Bildirimlere abone olmanın değerini açıklamak (push, e-posta veya SMS).
2. Tarayıcıların izin isteklerini otomatik olarak engellemesini önlemek.
3. Yerel tarayıcı istemini yalnızca kullanıcı ilgisini gösterdikten sonra başlatmak.

Yumuşak istemler [tarayıcılar tarafından önerilir](https://onesignal.com/blog/changes-to-chrome-and-firefox-permission-prompting) ve domain itibarınızı korurken kabul oranlarını maksimize etmeye yardımcı olur.

***

## İstem simgesi

Web push bildirimlerinizde gösterilen simgeyi özelleştirmek için OneSignal dashboard'unuza gidin: **Settings > Push & In-App > Web Settings**.

**Site Setup** bölümünde, **Default Icon URL**'yi yapılandırın. Bu simge, aksi belirtilmedikçe tüm bildirimlerinizde görünür.

* Kabul edilen formatlar: `.png` veya `.jpg`
* Önerilen boyut: `256x256` piksel (Safari'nin gereksinimlerini karşılamak için)
* Ayarlanmazsa, OneSignal genel bir zil simgesi kullanacaktır

Bu ayar herhangi bir zamanda değiştirilebilir.

<Frame caption="Resim, web push ayarlarınızın Site Setup bölümünü gösterir. Web sitesi adınızı, site URL'nizi ve varsayılan simgenizi burada yapılandırırsınız.">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/prompt-icon-site-setup.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=17d8ced53a0a9606ee0e5ffcd1c55d4a" width="2028" height="750" data-path="images/docs/prompt-icon-site-setup.png" />
</Frame>

***

## İzin istemi kurulumu

Kullanıcı aboneliklerini teşvik etmek için sitenizde görüntülemek istediğiniz istemleri yapılandırın. OneSignal dashboard'unuzda şu yolu izleyin: **Settings > Push & In-App > Web Settings > Permission Prompt Setup**

Oradan, OneSignal'in mevcut istem türlerinden birini seçmek için **Add Prompt**'a tıklayın. Listede zaten gösterilen mevcut istemleri de düzenleyebilirsiniz.

<Frame caption="Yeni istemler ekleyin veya düzenlemek istediğiniz istemi seçin.">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/permission-prompt-setup.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=7f4d0dec6942dce06f795f0397df5633" width="2028" height="576" data-path="images/docs/permission-prompt-setup.png" />
</Frame>

Her istem türünün farklı kullanım alanları ve görüntüleme davranışları vardır. Kullanıcıları web sitenizin UX'ine uygun bir şekilde abonelik sürecinde yönlendirmek için bunları ayrı ayrı veya birlikte kullanabilirsiniz.

Mevcut istemler:

* [Slidedown](#slidedown-%26-category): Push bildirimleri ve isteğe bağlı kategori seçimi için kullanılan görsel olarak belirgin bir istem.
* [Email/Phone prompt](#email-%26-phone-number-prompt): Kullanıcı e-posta adreslerini, telefon numaralarını veya her ikisini toplamak için kullanılır.
* [Subscription bell prompt](#subscription-bell-prompt): Push abonelikleri için genellikle sitenizin alt köşesine yerleştirilen kalıcı bir yüzen widget.
* [Custom link prompt](#custom-link-prompt): Yerel tarayıcı istemini tetikleyen, sitenize gömülü özelleştirilebilir bir düğme veya bağlantı.
* [Native permission prompt](#native-permission-prompt): Kullanıcıların push bildirimleri alabilmesi için kabul edilmesi gereken gerekli tarayıcı düzeyinde istem.

***

### Slidedown & category

Slide ve Category istemleri masaüstünde ekranın üst merkezinde ve mobilde alt merkezde belirgin şekilde görünür. Bunlar, gerekli [yerel izin isteminden](#native-permission-prompt) önce gösterilen yüksek görünürlüğe sahip yumuşak istemlerdir. Kullanıcıyı kendi başlarına abone etmezler ancak abonelik akışını başlatmaya yardımcı olur.

<Frame caption="Kategori Etiketleri ile Slide İstemi'ni gösteren örnek.">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/slidedown-categories-demo.gif?s=aba2989a03cc97b01b35eff561c1f120" width="552" height="338" data-path="images/docs/slidedown-categories-demo.gif" />
</Frame>

Bir Slide İstemi eklemek için:

1. **Settings > Push & In-App > Web Settings > Permission Prompt Setup** bölümüne gidin
2. **Add Prompt > Push Prompt > Push Slide Prompt** seçin

<Info>
  Custom Code kurulumu için, OneSignal `init` kodunuzun `promptOptions` nesnesi içinde `slidedown` özelliklerini kullanın. Daha fazla ayrıntı için [Web SDK Referansı](./web-sdk-reference)'na bakın.
</Info>

<Frame caption="Push slide istemi seçenekleri.">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/slide-prompt-options.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=3b525cb30aa7908a7b8062e99e5734f4" width="1918" height="1602" data-path="images/docs/slide-prompt-options.png" />
</Frame>

<Note>İstemi tetiklemeyle ilgili ayrıntılar için [Otomatik istem & görüntüleme ayarları](#auto-prompt-%26-display-settings)'na bakın.</Note>

#### Slide istem metni

Slide istemde görüntülenen metni özelleştirebilirsiniz:

* Eylem mesajı: 90 karaktere kadar
* Düğme etiketleri: her biri 15 karaktere kadar
* Font, boyut veya renk özelleştirmesi şu anda desteklenmiyor

Dashboard'da metin özelleştirme seçeneğini etkinleştirin. Metin girilmezse, varsayılan metin kullanılacaktır.

<Frame caption="Slide istem metin seçenekleri.">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/slide-prompt-text-options.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=52231800573d2d9f1720f924d59a3474" width="568" height="392" data-path="images/docs/slide-prompt-text-options.png" />
</Frame>

İşiniz bittiğinde, **Done**'a tıklayın ve bunun etkili olmasını görmek için sonraki sayfada tekrar **Save**'e tıklayın.

<Info>
  Custom Code kurulumu için, OneSignal `init` kodunuzun `promptOptions` nesnesi içinde `text` özelliklerini kullanın. Daha fazla ayrıntı için [Web SDK Referansı](./web-sdk-reference)'na bakın.
</Info>

#### Kategoriler

Slidedown istemini kategoriler ekleyerek geliştirebilirsiniz—kullanıcıların belirli mesaj konularına (örneğin, Haberler, Satışlar, Güncellemeler) ilgi göstermelerini sağlayan onay kutuları.

* 10 kategori kadar izin verilir
* Her kategori, 1 (seçili) veya 0 (seçili değil) olan bir Veri Etiketi olarak saklanır
* Segmentasyon ve kullanıcı tercihlerine göre mesajları hedefleme için kullanışlıdır

Kullanıcıların tercihlerini güncellemelerine izin vermek için kategori istemini daha sonra tekrar görüntüleyebilirsiniz. Daha önce seçilen değerler, üzerine yazılmadıkça korunacaktır.

* **Label**: kullanıcının istemde gördüğü şey. İlk harfi büyük yapmanız önerilir.
* **Tag Key**: OneSignal'deki etiketin ne olacağı. Boşluklar için küçük harf ve alt çizgi (`_`) kullanmanız önerilir.
* **Update Instructions, Positive and Negative Buttons**: kullanıcı zaten push'a abone olduktan sonra kategori istemini tekrar görüntülemeyi seçerseniz, eylem mesajı yerine güncelleme talimatları gösterilir. Bu, kullanıcıya kategorilerini güncelleyebileceklerini bildirmenize olanak tanır.

<Frame caption="Örnek kategoriler. Label, kullanıcıların gördüğü şeydir, tag key ise '1' değeriyle bir tag key olarak ayarlanan şeydir.">
  <img src="https://mintcdn.com/onesignal/DUD9LiwQFHL3zLE4/images/web-push/slidedown-category-config.png?fit=max&auto=format&n=DUD9LiwQFHL3zLE4&q=85&s=0bd4de9323c496e67ce19138b18cb602" width="328" height="429" data-path="images/web-push/slidedown-category-config.png" />
</Frame>

İşiniz bittiğinde, **Done**'a tıklayın ve bunun etkili olmasını görmek için sonraki sayfada tekrar **Save**'e tıklayın.

<Info>
  Custom Code kurulumu için, OneSignal `init` kodunuzun `promptOptions` nesnesi içinde `categories` özelliklerini kullanın. Daha fazla ayrıntı için [Web SDK Referansı](./web-sdk-reference)'na bakın.
</Info>

<Note>İstemi tetiklemeyle ilgili ayrıntılar için [Otomatik istem & görüntüleme ayarları](#auto-prompt-%26-display-settings)'na bakın.</Note>

***

### Email & phone number prompt

Email & Phone İstemi, isteğe bağlı kullanıcı iletişim bilgilerini doğrudan bir Slidedown içinde toplar. Her alanda doğru formatlamayı sağlamak için yerleşik doğrulama vardır.

Gönderildikten sonra:

* Kullanıcı için yeni Email ve/veya SMS abonelikleri oluşturulur
* Bu kanallar arasında onlara mesaj göndermeye başlayabilirsiniz

Bu istemi eklemek için:

* **Settings > Push & In-App > Web Settings > Permission Prompt Setup > Add Prompt > Email/Phone Prompt** bölümüne gidin.

<Frame caption="Email & Phone Number İstem Kurulumu">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/email-phone-prompt-setup.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=fea01e0388356640c0d456b8ff0acd53" width="1356" height="428" data-path="images/docs/email-phone-prompt-setup.png" />
</Frame>

Hangi giriş alanlarının gösterileceğini, metin etiketlerini ve otomatik istem gecikmesini özelleştirin.

<Frame caption="Email & Phone Number İstem Kurulumu">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/email-phone-prompt-options.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=aac3648d194490c50d9b39ac2eecac79" width="1504" height="1574" data-path="images/docs/email-phone-prompt-options.png" />
</Frame>

İşiniz bittiğinde, **Done**'a basın ve bunun etkili olmasını görmek için sonraki sayfada tekrar **Save**'e basın.

<Info>
  Custom Code kurulumu için, OneSignal `init` kodunuzun `promptOptions` nesnesi içinde `type`'ı `email`, `sms` veya `smsAndEmail` olarak ekleyin. Daha fazla ayrıntı için [Web SDK Referansı](./web-sdk-reference)'na bakın.
</Info>

<Note>İstemi tetiklemeyle ilgili ayrıntılar için [Otomatik istem & görüntüleme ayarları](#auto-prompt-%26-display-settings)'na bakın.</Note>

***

### Subscription bell prompt

Subscription Bell İstemi, web sitenizin alt köşesinde görünen küçük, kalıcı bir widget'tır. Abone olmamış bir kullanıcı tarafından tıklandığında, [Yerel Tarayıcı İstemi](./permission-requests)'ni tetikler.

Minimal ayak izi nedeniyle, zil her zaman görünür bırakılabilir, bu da onu devam eden kabul fırsatları için pasif ama etkili bir seçenek haline getirir. Kapatılması gerektirmez ve kullanıcılara ne zaman abone olacakları konusunda kontrol sağlar.

<Frame caption="Subscription Bell İstemi">
  <img src="https://mintcdn.com/onesignal/uaUYB-ILUGPSRvKB/images/docs/subscription-bell-widget.png?fit=max&auto=format&n=uaUYB-ILUGPSRvKB&q=85&s=6b78132f8eddd9584dc4e6fe687b99d1" width="1340" height="730" data-path="images/docs/subscription-bell-widget.png" />
</Frame>

OneSignal Bell İstemi'nin rengini, boyutunu, alt konumunu, metnini ve daha fazlasını özelleştirebilirsiniz! **🛑 Şu anda simge resmini değiştiremez veya zili üst köşelere yerleştiremezsiniz.**

<AccordionGroup>
  <Accordion title="Tipik Site & WordPress Kurulumu: Subscription Bell İstemi">
    Şu yolu izleyin: **Settings > Push & In-App > Web Settings > Permission Prompt Setup > Add Prompt > Subscription Bell Prompt**

    Zilin şunları özelleştirebilirsiniz:

    * Renk
    * Boyut
    * Alt konum (sol veya sağ)
    * Metin ve etiketler

    Kurulumdan sonra, değişiklikleri uygulamak için **Done**'a, ardından **Save**'e tıklayın.

    <Frame caption="Dashboard'da Subscription Bell Kurulumu">
      <img src="https://mintcdn.com/onesignal/uaUYB-ILUGPSRvKB/images/docs/subscription-bell-setup.png?fit=max&auto=format&n=uaUYB-ILUGPSRvKB&q=85&s=0439c90f8592644b6d9e4f2a8fd1853b" width="1504" height="1352" data-path="images/docs/subscription-bell-setup.png" />
    </Frame>
  </Accordion>

  <Accordion title="Custom Code Kurulumu: Subscription Bell İstemi">
    Web SDK başlatma seçeneklerinizde `notifyButton` parametresini kullanın. Bell İstemi özelleştirmeleri için farklı örnekler arasında geçiş yapabilirsiniz.

    **Gizleme:** Bir kullanıcı abone olduktan sonra subscription bell'i gizlemek veya yalnızca belirli sayfalarda göstermek için, başlatma sırasında `displayPredicate` fonksiyonunda `false` değerini *veya* `false` değerine çözümlenen bir `Promise` döndürdüğünüzden emin olun. Bu fonksiyon, subscription bell gösterilmeden önce değerlendirilir. Subscription bell'i göstermek için başka herhangi bir değer döndürebilirsiniz.

    <CodeGroup>
      ```javascript Text & Basic Options theme={null}
      // Your other init options here
      notifyButton: {
          enable: true, /* Subscription Bell kullanmak için gerekli */
          size: 'medium', /* 'small', 'medium' veya 'large' biri */
          theme: 'default', /* 'default' (kırmızı-beyaz) veya 'inverse" (beyaz-kırmızı) biri */
          position: 'bottom-right', /* 'bottom-left' veya 'bottom-right' */
          offset: {
              bottom: '0px',
              left: '0px', /* Yalnızca bottom-left ise uygulanır */
              right: '0px' /* Yalnızca bottom-right ise uygulanır */
          },
          showCredit: false, /* OneSignal logosunu gizle */
          text: {
              'tip.state.unsubscribed': 'Bildirimlere abone ol',
              'tip.state.subscribed': "Bildirimlere abone oldunuz",
              'tip.state.blocked': "Bildirimleri engellediniz",
              'message.prenotify': 'Bildirimlere abone olmak için tıklayın',
              'message.action.subscribed': "Abone olduğunuz için teşekkürler!",
              'message.action.resubscribed': "Bildirimlere abone oldunuz",
              'message.action.unsubscribed': "Bir daha bildirim almayacaksınız",
              'dialog.main.title': 'Site Bildirimlerini Yönet',
              'dialog.main.button.subscribe': 'ABONE OL',
              'dialog.main.button.unsubscribe': 'ABONELİĞİ İPTAL ET',
              'dialog.blocked.title': 'Bildirimlerin Engelini Kaldır',
              'dialog.blocked.message': "Bildirimlere izin vermek için şu talimatları izleyin:"
          }
      }
      ```

      ```javascript Colors theme={null}
      // Your other init options here
      notifyButton: {
        enable: true, // Subscription Bell kullanmak için gerekli
        // Your other Subscription Bell settings here
        colors: { // Ana düğme ve diyalog açılır düğmesinin renklerini özelleştir
          'circle.background': 'rgb(84,110,123)',
          'circle.foreground': 'white',
          'badge.background': 'rgb(84,110,123)',
          'badge.foreground': 'white',
          'badge.bordercolor': 'white',
          'pulse.color': 'white',
          'dialog.button.background.hovering': 'rgb(77, 101, 113)',
          'dialog.button.background.active': 'rgb(70, 92, 103)',
          'dialog.button.background': 'rgb(84,110,123)',
          'dialog.button.foreground': 'white'
        },
      }
      ```

      ```javascript Hiding theme={null}
      // Your other init options here
      notifyButton: {
          /* Your other Subscription Bell settings here ... */
          enable: true,
          displayPredicate: function() {
            /* Kullanıcı abone oldu, bu yüzden Subscription Bell'i gizlemek için "false" döndürmek istiyoruz */
            return !OneSignal.Notifications.permission
          },
      }
      ```

      ```javascript HTTPS Full Example Code theme={null}
      <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
      <script>
        var OneSignal = window.OneSignal || [];
        OneSignal.push(function() {
          OneSignal.init({
            appId: "YOUR_APP_ID",
            notifyButton: {
              enable: true, /* Subscription Bell kullanmak için gerekli */
            /* SUBSCRIPTION BELL ÖZELLEŞTİRMELERİ BURADA BAŞLAR */
              size: 'medium', /* 'small', 'medium' veya 'large' biri */
              theme: 'default', /* 'default' (kırmızı-beyaz) veya 'inverse" (beyaz-kırmızı) biri */
              position: 'bottom-right', /* 'bottom-left' veya 'bottom-right' */
              offset: {
                  bottom: '0px',
                  left: '0px', /* Yalnızca bottom-left ise uygulanır */
                  right: '0px' /* Yalnızca bottom-right ise uygulanır */
              },
              showCredit: false, /* OneSignal logosunu gizle */
              text: {
                  'tip.state.unsubscribed': 'Bildirimlere abone ol',
                  'tip.state.subscribed': "Bildirimlere abone oldunuz",
                  'tip.state.blocked': "Bildirimleri engellediniz",
                  'message.prenotify': 'Bildirimlere abone olmak için tıklayın',
                  'message.action.subscribed': "Abone olduğunuz için teşekkürler!",
                  'message.action.resubscribed': "Bildirimlere abone oldunuz",
                  'message.action.unsubscribed': "Bir daha bildirim almayacaksınız",
                  'dialog.main.title': 'Site Bildirimlerini Yönet',
                  'dialog.main.button.subscribe': 'ABONE OL',
                  'dialog.main.button.unsubscribe': 'ABONELİĞİ İPTAL ET',
                  'dialog.blocked.title': 'Bildirimlerin Engelini Kaldır',
                  'dialog.blocked.message': "Bildirimlere izin vermek için şu talimatları izleyin:"
              },
              colors: { // Ana düğme ve diyalog açılır düğmesinin renklerini özelleştir
                 'circle.background': 'rgb(84,110,123)',
                 'circle.foreground': 'white',
                 'badge.background': 'rgb(84,110,123)',
                 'badge.foreground': 'white',
                 'badge.bordercolor': 'white',
                 'pulse.color': 'white',
                 'dialog.button.background.hovering': 'rgb(77, 101, 113)',
                 'dialog.button.background.active': 'rgb(70, 92, 103)',
                 'dialog.button.background': 'rgb(84,110,123)',
                 'dialog.button.foreground': 'white'
               },
              /* KULLANICI ABONE OLDUĞUNDA SUBSCRIPTION BELL'İ GİZLE */
              displayPredicate: function() {
                  return OneSignal.isPushNotificationsEnabled()
                      .then(function(isPushEnabled) {
                          return !isPushEnabled;
                      });
              }
            }
          });
        });
      </script>
      ```
    </CodeGroup>
  </Accordion>
</AccordionGroup>

***

### Custom link prompt

Custom Link İstemi, web sitenizin herhangi bir yerine gömebileceğiniz kullanıcı tarafından tetiklenen bir düğme veya bağlantıdır. Tıklandığında, push bildirimleri için [Yerel Tarayıcı İstemi](./permission-requests)'ni görüntüler.

<Frame caption="Custom Link İstemi">
  <img src="https://mintcdn.com/onesignal/a0r2lOarnYx0JYIH/images/docs/custom-link-prompt.png?fit=max&auto=format&n=a0r2lOarnYx0JYIH&q=85&s=85fdb1296bafe621b69c8c45cce1db99" width="1744" height="746" data-path="images/docs/custom-link-prompt.png" />
</Frame>

Yaygın kullanım alanları:

* Bir blog yazısının altında: "Bu makaleyi beğendiniz mi? Gönderi yayınlar yayınlamaz güncellemeleri alın!"
* Site altbilginizde
* Yapışkan başlıkta veya yüzen araç çubuğunda

<AccordionGroup>
  <Accordion title="Tipik Site & WordPress Kurulumu: Custom Link İstemi">
    Şu yolu izleyin: **Settings > Push & In-App > Web Settings > Permission Prompt Setup > Add Prompt > Custom Link**.

    Widget'ın render edilmesini istediğiniz sayfaya sağlanan HTML'yi ekleyin.

    Seçeneklerinizi yapılandırın, ardından etkinleştirmek için **Done** ve **Save**'e tıklayın.

    <Frame caption="Dashboard'da Custom Link Kurulumu">
      <img src="https://mintcdn.com/onesignal/a0r2lOarnYx0JYIH/images/docs/custom-link-setup.png?fit=max&auto=format&n=a0r2lOarnYx0JYIH&q=85&s=a47f3461c89f9e730f2574047edfe290" width="1534" height="1352" data-path="images/docs/custom-link-setup.png" />
    </Frame>
  </Accordion>

  <Accordion title="Custom Code Kurulumu: Custom Link">
    OneSignal `init` kodunuzun `promptOptions` nesnesi içinde, `customlink` nesnesini ve mevcut özelliklerini ekleyin.

    <CodeGroup>
      ```javascript theme={null}
      // Your other init options here
      promptOptions: {
        customlink: {
          enabled: true, /* Custom Link kullanmak için gerekli */
          style: "button", /* 'button' veya 'link' değeri vardır */
          size: "medium", /* 'small', 'medium' veya 'large' biri */
          color: {
            button: '#E12D30', /* style = "button" ise düğme arka plan rengi */
            text: '#FFFFFF', /* İstemin metin rengi */
          },
          text: {
            subscribe: "Push bildirimlerine abone ol", /* Abone değilken istemin metni */
            unsubscribe: "Push bildirimlerinden aboneliği iptal et", /* Abone olunduğunda istemin metni */
            explanation: "Sizin için önemli olan her türlü şeyden güncelleme alın", /* İstem düğmesinden önce görünen isteğe bağlı metin */
          },
          unsubscribeEnabled: true, /* Abonelikten sonra istemin görünür olup olmadığını kontrol eder */
        }
      }
      ```
    </CodeGroup>

    Sitenizde istemi render etmek için, widget'ın görünmesini istediğiniz yere aşağıdaki HTML'yi ekleyin:

    ```html html theme={null}
    <div class='onesignal-customlink-container'></div>
    ```
  </Accordion>

  <Accordion title="Tipik & Custom Code Kurulumu: Ek Stil">
    Widget'ın görünümünü herhangi bir zamanda değiştirmek için tüm öğelerin, dahili stillerimizle çakışma olmadığından ve dashboard'da tanımladığınız gibi tam olarak göründüğünden emin olmak için öğeden önceki herhangi bir stili kaldıran özel bir `onesignal-reset` sınıfı vardır.

    Herhangi bir OneSignal stilini yeniden tanımlamanız gerekirse, işte Custom Link widget'ında kullanılan sınıfların kısa bir referansı:

    | Sınıf Adı                        | Şuna uygulanır                                                                       |
    | -------------------------------- | ------------------------------------------------------------------------------------ |
    | onesignal-customlink-container   | Ana konteyner                                                                        |
    | onesignal-customlink-subscribe   | Eylem düğmesi                                                                        |
    | onesignal-customlink-explanation | Özel açıklama metni içeren paragraf                                                  |
    | state-subscribed                 | Ana konteynerin içindeki tüm bileşenler                                              |
    | state-unsubscribed               | Ana konteynerin içindeki tüm bileşenler                                              |
    | button                           | Düğme modundaysa eylem düğmesi                                                       |
    | link                             | Bağlantı modundaysa eylem düğmesi                                                    |
    | small                            | Ana konteynerin içindeki tüm bileşenler                                              |
    | medium                           | Ana konteynerin içindeki tüm bileşenler                                              |
    | large                            | Ana konteynerin içindeki tüm bileşenler                                              |
    | hide                             | unsubscribeEnabled false olarak ayarlanmışsa ana konteynerin içindeki tüm bileşenler |

    Bunlardan herhangi birini geçersiz kılmak için daha yüksek özgünlüğe sahip bir CSS kuralı oluşturmanız gerekir, sınıf adını üst öğe id'siyle birleştirmek yeterli olmalıdır. Ancak çakışmalara dikkat edin, dahili stillerimiz değişebilir.
  </Accordion>
</AccordionGroup>

***

## Native permission prompt

Yerel izin istemi, kullanıcıların web sitenizden push bildirimlerine abone olmak için kabul etmesi gereken tarayıcı kontrollü diyalogdur. Bu istem:

* Abonelik için gereklidir
* OneSignal yumuşak istemlerinden (Slidedown veya Custom Link gibi) sonra otomatik olarak tetiklenir
* Görünüm, metin veya davranış olarak özelleştirilebilir değildir

<Frame caption="Yerel İzin İstemi">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/native-prompt-chrome.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=db741c607bbd5d18f5b31bdf4f0ac38b" width="1422" height="592" data-path="images/docs/native-prompt-chrome.png" />
</Frame>

### Tarayıcı yerel istemi davranışı

Farklı tarayıcılar spam izin isteklerini azaltmak için benzersiz davranışlar ve kısıtlamalar uygular:

#### Chrome

[Chrome 80+](https://blog.chromium.org/2020/01/introducing-quieter-permission-ui-for.html?m=1) tam istem yerine daha sessiz bir UI görüntüleyebilir:

* İstemleri sık sık reddeden kullanıcılara otomatik olarak uygulanır
* Ayrıca yüksek reddetme oranına sahip sitelere de uygulanır

Chrome, kullanıcı yerel istemde "X"e tıklarsa back-off mantığı uygular:

* İstem göstermek için 3 denemeniz var
* 3. kapatmadan sonra, istem 7 gün boyunca bastırılır ([kaynak](https://chromestatus.com/feature/6443143280984064)).

#### Firefox

* [Firefox 72+](https://blog.mozilla.org/futurereleases/2019/11/04/restricting-notification-permission-prompts-in-firefox/) istemi tetiklemek için bir kullanıcı hareketi gerektirir
* Otomatik istemler engellenir ve kullanıcılar bir site öğesiyle aktif olarak etkileşim kurmalıdır

#### Safari

* [Safari 12.1+](https://developer.apple.com/documentation/safari_release_notes/safari_12_1_release_notes) istemleri bir kullanıcı hareketi gerektirir
* Otomatik istem gösterme, doğrudan bir etkileşimle tetiklenmedikçe sessizce engellenir

#### Edge

[Edge](https://blogs.windows.com/msedgedev/2023/07/06/fighting-notification-spam-microsoft-edge/) güven tabanlı bir model kullanır:

* Site güvenilir değilse, istem bastırılır ve tarayıcı çubuğunda bir zil simgesiyle değiştirilir:

<Frame caption="Edge'de yabancı veya güvenilmeyen siteler için gösterilen zil simgesi.">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/edge-untrusted-bell-icon.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=89f63297323c3dd1bb72007b2259110d" width="1014" height="556" data-path="images/docs/edge-untrusted-bell-icon.png" />
</Frame>

* Site güvenilirse, yerel istem normal olarak görünür:

<Frame caption="Edge'de güvenilen siteler için yerel istem doğrudan görünür.">
  <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/edge-trusted-native-prompt.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=08a0cef396c99ca006e44c4a1b6b0460" width="862" height="402" data-path="images/docs/edge-trusted-native-prompt.png" />
</Frame>

***

## Otomatik istem & görüntüleme ayarları

Katılımı maksimize etmek ve kullanıcılarınızı rahatsız etmekten kaçınmak için, istemleri sitenizde biraz zaman geçirdikten sonra göstermeyi geciktirmek en iyisidir. OneSignal, kullanıcı davranışına göre istemleri otomatik olarak görüntülemenize olanak tanır ve iki gecikme koşulu kullanır:

* **Page Views:** Kullanıcının sitenizde herhangi bir sayfayı kaç kez yüklediği
* **Seconds on Page:** Kullanıcının sayfada geçirmesi gereken süre

Bu gecikmeler bir **VE** koşulu kullanılarak uygulanır, yani istemin görünmeden önce her ikisinin de karşılanması gerekir.

**Örnek:** Gecikmeyi 3 sayfa görüntüleme ve 30 saniye olarak ayarlarsanız, istem üçüncü sayfa yüklemesinde, 30 saniye geçtikten sonra görüntülenecektir. Kullanıcı istemle etkileşime girmezse, tıklanana veya kapatılana kadar her sayfa yüklemesinde (30 saniye sonra) gösterilmeye devam edecektir.

<AccordionGroup>
  <Accordion title="Tipik Site & WordPress Kurulumu: Otomatik İstem">
    * Şu yolu izleyin: **Settings > Push & In-App > Web Settings > Permission Prompt Setup**
    * Bir istem seçin veya yeni bir tane oluşturun
    * Otomatik İstemi etkinleştirin
    * Gecikme tercihlerinizi ayarlayın (sayfa görüntülemeleri ve zaman gecikmesi)

    <Frame caption="Örnek: Bu istem, 30 saniye sonra üçüncü sayfa görüntülemede görünecek şekilde ayarlanmıştır.">
      <img src="https://mintcdn.com/onesignal/sJbUl77xEbJHQiBq/images/docs/auto-prompt-delay-settings.png?fit=max&auto=format&n=sJbUl77xEbJHQiBq&q=85&s=992e5b449485e3cf96fd5fef5588f8fb" width="564" height="218" data-path="images/docs/auto-prompt-delay-settings.png" />
    </Frame>

    * Done'a, ardından Save'e tıklayın

    <Info>
      İstemi programlı olarak tetiklemek istiyorsanız, Otomatik İstemi devre dışı bırakın ve [Web SDK İstem yöntemlerini](./web-sdk-reference) kullanın.
    </Info>
  </Accordion>

  <Accordion title="Custom Code Kurulumu: Otomatik İstem">
    OneSignal `init` kodunuzun `promptOptions` nesnesi içinde `autoPrompt` ve `delay` seçeneklerini kullanın. İstenen slidedown veya yerel istemleri doğrudan tetiklemek için yöntemler de vardır. Daha fazla ayrıntı için [Web SDK Referansı](./web-sdk-reference)'na bakın.
  </Accordion>

  <Accordion title="Manuel Tetikleme (Otomatik İstem Yerine)">
    İstemlerin ne zaman gösterileceği üzerinde daha fazla kontrole sahip olmak istiyorsanız—örneğin, yalnızca belirli sayfalarda veya belirli eylemlerden sonra:

    1. Otomatik İstemi devre dışı bırakın
    2. Kod aracılığıyla istemi göstermek için SDK'nın Slidedown veya Yerel İstem yöntemlerini kullanın
  </Accordion>
</AccordionGroup>

### Slidedown istemi back-off mantığı

Bir Slidedown (Push, Kategori veya Email/Phone) istemi gösterilip kapatıldığında (İzin Ver, İptal veya diyalogu kapatma yoluyla), geri çekilecek ve tanımlanmış bir programa göre yeniden görünecektir:

|                Etkileşim Sonucu               | Sonraki İstem Zamanlaması |
| :-------------------------------------------: | :-----------------------: |
|                  İlk Kapatma                  |        3 gün bekle        |
|                 İkinci Kapatma                |        7 gün bekle        |
| Üçüncü ve sonraki kapatmalar (abone olunmadı) |        30 gün bekle       |

Örneğin, kullanıcı Slidedown'da "İzin Ver"e tıklarsa ancak daha sonra tarayıcının yerel isteminde "X"e tıklarsa (abone olmadan), Slidedown yukarıdaki back-off döngüsünü izleyecektir.

<Warning>
  Bu mantık Push, Kategori ve Email/Phone Slidedown istemlerine uygulanır. [Web SDK Slidedown istem yöntemlerimizi](./web-sdk-reference#slidedown-prompts) kullanarak backoff mantığını atlayabilirsiniz.

  Yerel istem back-off mantığı için, [Tarayıcı yerel istemi davranışı](#browser-native-prompt-behavior)'na bakın. Tarayıcı tarafından kontrol edildiğinden yerel istem için backoff mantığını atlayamazsınız.
</Warning>

Kullanıcı çerezleri veya tarayıcı verilerini temizlerse, back-off döngüsü sıfırlanır ve istem ilk kez gibi tekrar görünebilir.

***

## SSS

<AccordionGroup>
  <Accordion title="İstemleri Facebook veya Instagram veya TikTok gibi bir sosyal medya uygulamasında nasıl gösterebilirim?">
    Web sitenizi bir Sosyal Medya Uygulaması (Instagram, Facebook, diğerleri) üzerinden görüntülemeye çalışırsanız, webview kullanıyorsa web istemini görmeyebilirsiniz. Webview'ler web push bildirimlerini desteklemez. Uygulama, web sitenizi web push bildirimlerini destekleyen bir tarayıcıda açmalıdır.
  </Accordion>

  <Accordion title="İstemi nasıl çevirebilir/yerelleştirebilirim?">
    Şu anda [Custom Code Kurulumu](./web-push-custom-code-setup)'nu seçmeniz gerekecektir. Ardından, kullanıcının tarayıcı dilini algılayarak ve OneSignal SDK'yı farklı metin(ler) ile başlatarak istemlerin dilini programlı olarak değiştirin.

    Yerel İzin İstemi, tarayıcının ayarlanmış diline otomatik olarak çevrilecektir.
  </Accordion>

  <Accordion title="İstemleri A/B Testi yapabilir miyim?">
    [Custom Code Kurulumu](./web-push-custom-code-setup) kullanarak OneSignal'i farklı istem seçenekleriyle başlatabilirsiniz. OneSignal'i başlatan A/B/C/D vb. testleri tetiklemek için kendi yolunuzu kurmanız gerekir.

    Bonus olarak, kullanıcının ne zaman abone olduğunu algılamak ve hangi testin aboneliği kazandığına göre [Veri Etiketleri](./add-user-data-tags) eklemek için [Abonelik Değişikliği](./web-sdk-reference#addeventlistener-push-subscription) yöntemini kullanabilirsiniz.
  </Accordion>

  <Accordion title="Abonelikleri abone oldukları sayfaya göre segmentlere ayırabilir miyim?">
    Evet! Lütfen [Abonelik Sayfasına Göre Otomatik Segmentasyon](./auto-segment-users-by-page-visit) kılavuzumuza bakın.
  </Accordion>

  <Accordion title="Zil simgesini değiştirebilir miyim?">
    Zil resmini değiştiremezsiniz, ancak renkleri, metni değiştirebilir ve sayfanın sol altına veya sağ altına koyabilirsiniz.
  </Accordion>

  <Accordion title="Kategorileri sayfaya göre değiştirebilir miyim?">
    Evet! Bu, [Custom Code Kurulumu](./web-push-custom-code-setup)'nu kullanmanızı ve yukarıdaki kurulum yapılandırmalarına göre kategorileri kod aracılığıyla eklemenizi gerektirecektir.
  </Accordion>

  <Accordion title="Slide İstem Olaylarını nasıl takip edebilirim?">
    OneSignal Web SDK, ekranda ne zaman gösterildiğini, ne zaman kapatıldığını ve "İzin Ver" veya "İptal" eylemini algılamak için [Slide İstem Olay Yöntemlerine](./web-sdk-reference#addeventlistener-slidedown) sahiptir.
  </Accordion>

  <Accordion title="Bir web push istemini kapattıktan sonra, istem tekrar ne zaman gösterilir?">
    OneSignal İstemleri için, [Slidedown istemi back-off mantığı](#slidedown-prompt-back-off-logic)'na bakın.

    Yerel izin istemleri için, [Tarayıcı yerel istemi davranışı](#browser-native-prompt-behavior)'na bakın.
  </Accordion>

  <Accordion title="İstemi yalnızca belirli sayfalarda nasıl gösterebilirim?">
    [**Otomatik İstem** seçeneğini devre dışı bırakmanız](#auto-prompt-%26-display-settings), ardından istemlerin gösterilmesini istediğiniz belirli sayfalara [Slidedown istemi](./web-sdk-reference#slidedown-prompts) kodunu eklemeniz gerekir.

    Bell istemini kullanıyorsanız, şu anda sayfa sayfa bazında devre dışı bırakılamaz.
  </Accordion>

  <Accordion title="Yerel Tarayıcı İstemi istediğimde neden Firefox'ta Slide İstemi görüyorum?">
    [Firefox 72+](https://blog.mozilla.org/futurereleases/2019/11/04/restricting-notification-permission-prompts-in-firefox/) ile yerel tarayıcı istemini göstermek için bir kullanıcının bir düğmeye tıklamasını gerektiren bir değişiklik var. Yerel tarayıcı istemini otomatik olarak göstermeye çalışırsanız, tarayıcı içinde bunun gibi bir simge görürsünüz:

    <Frame caption="Firefox simgesi">
      <img src="https://mintcdn.com/onesignal/QOf62tdZP66tkOD2/images/docs/firefox-permission-icon.png?fit=max&auto=format&n=QOf62tdZP66tkOD2&q=85&s=b02371c12275f3bb8ae2c8e9bea1cd9e" width="831" height="84" data-path="images/docs/firefox-permission-icon.png" />
    </Frame>

    Kullanıcının Firefox'ta yerel İzin İstemi'ni görmek için bu simgeye tıklaması gerekir. Bu nedenle Firefox'ta Slide İstemi'ni varsayılan olarak kullanıyoruz çünkü her iki durumda da 2 adımlı kabul gerektirir.

    Slide İstemi'ni varsayılan olarak göstermek istemiyorsanız, İstem Editöründe Otomatik İstem anahtarını kapatmanız (**Save** düğmesine basmayı unutmayın), ardından [Web SDK `requestPermission()` yöntemini](./web-sdk-reference#requestpermission) kullanmanız gerekir.
  </Accordion>

  <Accordion title="Neden mobilde yerel İzin İstemi istediğimde Slide İstemi görüyorum?">
    5 Aralık 2017'de Google, Android için Chrome'da yerel İzin İstemi'nin nasıl göründüğünü değiştirdi. Sitenizin tüm ekranını kaplayan kullanıcı dostu olmayan bir açılır penceredir. Kullanıcılarınızın sitenizde kötü bir deneyim yaşamasını önlemek için kasıtlı olarak Android'de çift istemi ekledik.

    Slide İstemi'ni göstermek istemiyorsanız, İstem Editöründe Otomatik İstem anahtarını kapatmanız (**Save** düğmesine basmayı unutmayın), ardından [Web SDK `requestPermission()` yöntemini](./web-sdk-reference#requestpermission) kullanmanız gerekir.
  </Accordion>

  <Accordion title="Slide istemi neden sürekli gösteriliyor?">
    Gizli modda, özel tarayıcı modunda veya misafir tarayıcı modunda olmadığınızdan emin olun.
  </Accordion>

  <Accordion title="İstemim neden gösterilmiyor?">
    Bir tarayıcının yerel İzin İstemi, bu koşullardan biri doğruysa gösterilmeyebilir:

    * [Tarayıcı istemin gösterilmesini engelledi.](https://onesignal.com/blog/changes-to-chrome-and-firefox-permission-prompting/)
    * Kullanıcı zaten bildirimlere izin verdi veya zaten abone oldu
    * Kullanıcı bildirimleri engelledi. Bir kullanıcı "Engelle" (Chrome), "İzin Verme" (Safari) veya "Asla İzin Verme" (Firefox) tıklarsa, bir daha asla istem gösterilemez ve tarayıcı ayarlarında çok adımlı bir süreç aracılığıyla abone olması gerekir. Bu nedenle [OneSignal İstemleri](#onesignal-prompts) kullanmanız önerilir.
    * Otomatik İstem kapalı ve [`requestPermission();`](./web-sdk-reference#requestpermission)'a çağrı yok
    * Yerel İzin İstemi, Gizli Modda, Özel Tarayıcı modunda veya Misafir Tarayıcı modundayken gösterilmeyecektir. Ayrıca Safari 12.1+ veya Firefox 72+'de hemen gösterilmeyecektir ([daha fazla ayrıntı](https://onesignal.com/blog/changes-to-chrome-and-firefox-permission-prompting/)).
    * [Web push'u destekleyen bir tarayıcı ve cihaz kullandığınızdan](./web-push-setup-faq#browser-support-by-operating-system) emin olun.

    **Otomatik İstem**'in açık olduğundan veya kullanıcılara istem göstermek için [Web SDK](./web-sdk-reference)'mızı kullandığınızdan emin olmak için istem kurulumunuzu kontrol edin.

    iOS için, kullanıcılardan abonelikleri için istem göstermek için bazı ek gereksinimler vardır. Daha fazla bilgi [iOS/iPadOS için Mobil Web Push](./web-push-for-ios) kılavuzunda görülebilir.

    Son olarak, sitenizi ilk kez bir kullanıcı gibi ziyaret etmek için [çerezinizi ve tarayıcı önbelleğinizi sıfırlamak için bu adımları izleyin](./browser-behavior-and-unsubscribes).
  </Accordion>
</AccordionGroup>

***

## İlgili sayfalar

<Columns cols={2}>
  <Card title="Web SDK referansı" icon="code" href="./web-sdk-reference">
    Prompt yöntemleri, olaylar ve başlatma seçenekleri için tam API referansı.
  </Card>

  <Card title="iOS için web push" icon="apple" href="./web-push-for-ios">
    iOS ve iPadOS web push desteği için gereken ek kurulum adımları.
  </Card>

  <Card title="Web push sorun giderme" icon="wrench" href="./troubleshooting-web-push">
    Yaygın web push bildirimi sorunlarını tanılayın ve çözün.
  </Card>

  <Card title="Tercih merkezi" icon="sliders" href="./preference-center">
    Kullanıcıların bildirim tercihlerini ve kanal opt-in'lerini yönetmelerine izin verin.
  </Card>
</Columns>
