> ## 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.

# iOS web push kurulumu

> Manifest dosyası kurulumu, kullanıcı katılım stratejileri ve Safari, Chrome ve Edge tarayıcıları için implementasyon en iyi uygulamalarını içeren iOS ve iPadOS cihazlarında web push bildirimlerini etkinleştirme hakkında eksiksik kılavuz.

export const SdkReleasesIframe = ({sdkFilter = undefined, viewMode = undefined, height, ...frameProps}) => {
  const baseUrl = 'https://onesignal.github.io/sdk-releases';
  const buildUrl = (theme, sdkFilter, viewMode) => {
    const url = new URL(baseUrl);
    const params = new URLSearchParams();
    if (theme) {
      params.set('theme', theme);
    }
    if (sdkFilter) {
      params.set('sdk', sdkFilter);
    }
    if (viewMode) {
      params.set('viewMode', viewMode);
    }
    if (params.toString()) {
      url.search = params.toString();
    }
    return url.toString();
  };
  const detectTheme = () => {
    if (document.documentElement.classList.contains('dark')) {
      return 'dark';
    }
    return 'light';
  };
  const [theme, setTheme] = useState('light');
  const [iframeSrc, setIframeSrc] = useState(() => {
    const initialTheme = detectTheme();
    return buildUrl(initialTheme, sdkFilter, viewMode);
  });
  useEffect(() => {
    const currentTheme = detectTheme();
    setTheme(currentTheme);
    setIframeSrc(buildUrl(currentTheme, sdkFilter, viewMode));
    const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
    const handleThemeChange = () => {
      const newTheme = detectTheme();
      setTheme(newTheme);
      setIframeSrc(buildUrl(newTheme, sdkFilter, viewMode));
    };
    if (mediaQuery.addEventListener) {
      mediaQuery.addEventListener('change', handleThemeChange);
    } else {
      mediaQuery.addListener(handleThemeChange);
    }
    window.addEventListener('storage', handleThemeChange);
    const observer = new MutationObserver(handleThemeChange);
    observer.observe(document.documentElement, {
      attributes: true,
      attributeFilter: ['class', 'data-theme']
    });
    return () => {
      if (mediaQuery.removeEventListener) {
        mediaQuery.removeEventListener('change', handleThemeChange);
      } else {
        mediaQuery.removeListener(handleThemeChange);
      }
      window.removeEventListener('storage', handleThemeChange);
      observer.disconnect();
    };
  }, [sdkFilter, viewMode]);
  const getIframeHeight = () => {
    if (viewMode === 'table') {
      return '450';
    }
    if (viewMode === 'mini') {
      return '170';
    }
    return '800';
  };
  const iframeHeight = height || getIframeHeight();
  return <Frame {...frameProps}>
      <iframe src={iframeSrc} width="100%" height={iframeHeight} frameBorder="0" style={{
    border: "none"
  }} title="SDK Releases" key={iframeSrc} />
    </Frame>;
};

<SdkReleasesIframe sdkFilter="react,vue,vue3,angular,wordpress" viewMode="table" height="380" />

Apple, bir kullanıcının ana ekranına eklenen web uygulamaları için iOS ve iPadOS 16.4+ sürümünde push bildirimlerini desteklemeye başladı. Bu işlevsellik Safari, Chrome ve Edge tarayıcılarında çalışır ve web-öncelikli şirketler için yeni etkileşim fırsatları açar. Bu kapsamlı kılavuz, iOS web push bildirimlerini başarıyla uygulamak için ihtiyacınız olan her şeyi kapsar.

<Frame caption="Mobil cihazda örnek web push bildirimi.">
  <img src="https://mintcdn.com/onesignal/3zq1PvSaqvUE2bIx/images/docs/2477862-iOS_push-doc.jpg?fit=max&auto=format&n=3zq1PvSaqvUE2bIx&q=85&s=86aed6cdbed6645e568a644ac725f414" width="806" height="929" data-path="images/docs/2477862-iOS_push-doc.jpg" />
</Frame>

***

## 2025 için önemli güncellemeler

**Tarayıcılar Arası Destek**: Web push bildirimleri artık Safari, Chrome ve Edge dahil olmak üzere iOS/iPadOS 16.4+ üzerindeki tüm büyük tarayıcılarda çalışıyor.

**iOS 17+ İyileştirmeleri**: İlgili API'ler varsayılan olarak etkinleştirilmiş gelişmiş implementasyon, web push'u kullanıcılar için daha erişilebilir hale getiriyor.

**Güvenilirlik Hususları**: Bazı geliştiriciler, iOS web push bildirimlerinin başlangıçta çalıştığı ancak daha sonra beklenmedik şekilde durduğu ara sıra güvenilirlik sorunları bildiriyor. Bildirim teslimat oranlarınızı izleyin ve yedek etkileşim stratejilerinizin yerinde olmasını sağlayın.

***

## Gereksinimler

* **iOS/iPadOS Sürümü**: 16.4 veya üzeri
* **HTTPS Origin**: Duyarlı tasarımla güvenli bağlantı
* **Web Uygulama Manifestosu**: Doğru ayarlarla geçerli `manifest.json` dosyası
* **Ana Ekran Kurulumu**: Web uygulaması, desteklenen herhangi bir tarayıcıdan kullanıcının ana ekranına eklenmelidir
* **Kullanıcı Tarafından Başlatılan Eylem**: İzin istemleri görünmeden önce kullanıcı sitenizle etkileşime girmelidir
* **OneSignal Service Worker**: Bildirim teslimatı için gereklidir

### Progressive web app (PWA) kontrolü

Web siteniz zaten bir [Progressive Web App (PWA)](https://onesignal.com/blog/what-is-a-pwa/) ise, ek site güncellemelerine gerek yoktur. Sitenizin bir PWA olarak uygun olup olmadığını denetlemek için [Chrome DevTools'da Lighthouse](https://developer.chrome.com/docs/lighthouse/overview/#devtools)'u kullanın.

***

## Kurulum

### 1. Web uygulama manifestonuzu oluşturun

Bir Web Uygulama Manifestosu (`manifest.json`), web uygulamanızın bir kullanıcının cihazına yüklendiğinde nasıl göründüğünü ve davrandığını tanımlayan bir JSON dosyasıdır. iOS web push için bu dosya **zorunludur**.

#### Gerekli manifest alanları

`manifest.json` dosyanız bu temel alanları içermelidir:

* **`$schema`** (önerilir): Doğrulama ve IDE desteği için JSON şema URL'si
* **`name`** (gerekli): Kullanıcılara gösterilen tam uygulama adı
* **`display`** (gerekli): iOS uyumluluğu için `"standalone"` veya `"fullscreen"` olarak ayarlanmalıdır
* **`start_url`** (gerekli): Uygulama başlatıldığında giriş noktası URL'si
* **`icons`** (gerekli): Birden fazla boyutta ikon nesneleri dizisi
* **`id`** (önerilir): Birden fazla uygulama örneğine izin veren benzersiz tanımlayıcı

#### Örnek manifest dosyası

```json theme={null}
{
  "$schema": "https://json.schemastore.org/web-manifest-combined.json",
  "name": "OneSignal Manifest Example",
  "short_name": "OS Manifest",
  "display": "standalone",
  "start_url": "/",
  "theme_color": "#E54B4D",
  "background_color": "#ffffff",
  "icons": [
    { "src": "/icon-192x192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/icon-256x256.png", "sizes": "256x256", "type": "image/png" },
    { "src": "/icon-384x384.png", "sizes": "384x384", "type": "image/png" },
    { "src": "/icon-512x512.png", "sizes": "512x512", "type": "image/png" }
  ],
  "id": "?homescreen=1"
}
```

#### İmplementasyon adımları

1. **Dosya Yerleşimi**: `manifest.json`'u web sitenizin root dizinine yerleştirin
2. **HTML Entegrasyonu**: Tüm sayfaların `<head>` bölümüne bu link etiketini ekleyin:

```html theme={null}
<link rel="manifest" href="/manifest.json"/>
```

3. **İkon Hazırlığı**: Birden fazla boyutta yüksek kaliteli PNG ikonları oluşturun (192x192, 256x256, 384x384, 512x512 piksel önerilir)

<Note>
  Manifest dosyalarını hızlıca oluşturmak için [SimiCart Manifest Generator](https://www.simicart.com/manifest-generator.html/) gibi araçları kullanın veya mevcut olanları [Manifest Tester](https://manifesttester.com/) ile doğrulayın.
</Note>

### 2. OneSignal service worker'ı ekleyin

[Web SDK kurulumumuzu](./web-sdk-setup) zaten tamamladıysanız ve diğer tarayıcılarda web push bildirimleri alabiliyorsanız, bu adım tamamlanmıştır. Ayrıntılı kurulum talimatları için [OneSignal Service Worker](./onesignal-service-worker) belgelerine bakın.

### 3. İzin istemlerini yapılandırın

[Web SDK kurulumunuzdaki](./web-sdk-setup) mevcut [Web izin istemleri](./permission-requests) iOS cihazlarda **yalnızca kullanıcılar sitenizi ana ekranlarına ekledikten ve oradan açtıktan sonra** çalışacaktır. Bu Apple'ın tasarım gereksinimidir.

### 4. Kullanıcıları "Ana Ekrana Ekle"ye yönlendirin

İzin istemlerinin ayarlarınıza göre göründüğü masaüstü veya Android cihazların aksine, iOS kolaylaştırmanız gereken belirli bir kullanıcı yolculuğu gerektirir.

#### Gerekli kullanıcı yolculuğu

Kullanıcılar bildirimleri almak için bu adımları tamamlamalıdır:

1. iOS/iPadOS 16.4+ üzerinde Safari, Chrome veya Edge'de web sitenizi ziyaret edin
2. Tarayıcının **Paylaş** düğmesine tıklayın
3. **Ana Ekrana Ekle** seçeneğini seçin
4. Uygulamayı cihazlarına kaydedin
5. Uygulamayı ana ekrandan açın (tarayıcıdan değil)
6. Yerel izin istemini tetiklemek için abone ol düğmenizle etkileşime girin

<Frame caption="iOS'ta bir Web Sitesini Ana Ekrana Ekleme">
  <img src="https://mintcdn.com/onesignal/2iWYYuHf1gqm06bv/images/docs/638b3a1-ios-web-push-add-to-home-screen.jpg?fit=max&auto=format&n=2iWYYuHf1gqm06bv&q=85&s=54cb44f40d70397099b32375a3e97683" width="1346" height="736" data-path="images/docs/638b3a1-ios-web-push-add-to-home-screen.jpg" />
</Frame>

#### Kullanıcı katılım stratejileri

Bu süreç sezgisel olmadığından, şunlar aracılığıyla net rehberlik uygulayın:

* **Web sitesi banner'ları**: Özellikle mobil Apple cihazlarda bildirimlerin değerini açıklayan ve adım adım talimatlar sağlayan banner'lar görüntüleyin.

* **Görsel kılavuzlar**: Kullanıcılara tam olarak nereye dokunacaklarını göstermek için ekran görüntüleri ve oklar kullanın.

* **Zamanlama**: Rehberliği, kullanıcılar içeriğinizle etkileşim gösterdikten sonra sunun.

#### İmplementasyon örnekleri

Gerçek uygulamalardan etkili yaklaşımlar:

<Frame caption="Kullanıcıları ana ekrana eklemeye teşvik eden örnek banner">
  <img src="https://mintcdn.com/onesignal/6v_cVPknFpo5qSVB/images/docs/0b97752-image.png?fit=max&auto=format&n=6v_cVPknFpo5qSVB&q=85&s=bfec43a31639c25a6eab85961334a8bd" width="2055" height="1257" data-path="images/docs/0b97752-image.png" />
</Frame>

<Frame caption="Adım adım görsel rehberlik">
  <img src="https://mintcdn.com/onesignal/YOTSrtBSoqdrJ37A/images/docs/4e970c1-image.png?fit=max&auto=format&n=YOTSrtBSoqdrJ37A&q=85&s=04aef274f934dd44f34eaa8bd7e37360" width="2055" height="1257" data-path="images/docs/4e970c1-image.png" />
</Frame>

<Frame caption="Fayda odaklı mesajlaşma">
  <img src="https://mintcdn.com/onesignal/tNi1OgLc_p9hiq7_/images/docs/208b123-image.png?fit=max&auto=format&n=tNi1OgLc_p9hiq7_&q=85&s=c8bd38cfb229c68500a9260b8b6e4b33" width="2055" height="1257" data-path="images/docs/208b123-image.png" />
</Frame>

<Frame caption="Görsel ipuçlarıyla net eylem çağrısı">
  <img src="https://mintcdn.com/onesignal/0qspEXXeJ8zJbkJ-/images/docs/7ec125a-image.png?fit=max&auto=format&n=0qspEXXeJ8zJbkJ-&q=85&s=c532cb02bcde365092a6bc001beaaf06" width="2055" height="1257" data-path="images/docs/7ec125a-image.png" />
</Frame>

#### Açık kaynak çözümleri

Bu popüler açık kaynak banner çözümünü uygulamayı düşünün:

**GitHub Projesi**: [add-to-home-screen by rajatsehgal](https://github.com/rajatsehgal/add-to-home-screen)

<Frame caption="rajatsehgal'in açık kaynak projesinden Ana Ekrana Ekle banner istemi örneği.">
  <img src="https://mintcdn.com/onesignal/56ctKxZSV4m5VEkn/images/docs/b63b31f-GitHub_A2HS_Ex_1.jpg?fit=max&auto=format&n=56ctKxZSV4m5VEkn&q=85&s=ccc678721ffc636fa5ddb4a71efb7ed0" width="1149" height="2142" data-path="images/docs/b63b31f-GitHub_A2HS_Ex_1.jpg" />
</Frame>

Ek banner örnekleri ve en iyi uygulamalar [web.dev](https://web.dev/promote-install/)'de mevcuttur.

### 5. Test ve doğrulama

#### Manifest dosyası testi

1. **Erişilebilirlik Kontrolü**: Herkese açık erişilebilirliği sağlamak için `https://yoursite.com/manifest.json`'a gidin
2. **Tarayıcı DevTools**:
   * Chrome DevTools'u açın (F12)
   * Application sekmesi → Manifest'e gidin
   * Hataları veya uyarıları inceleyin
3. **Çevrimiçi Doğrulayıcılar**:
   * [Manifest Tester](https://manifesttester.com/)
   * [Redirection.io Validator](https://redirection.io/tools/web-app-manifest/validator)
   * [ValidBot Manifest Wizard](https://www.validbot.com/tools/app-manifest-wizard.php)

#### Uçtan uca push bildirim testi

1. Safari, Chrome veya Edge kullanarak iOS 16.4+ cihazda web sitenizi ziyaret edin
2. Tarayıcının **Paylaş** düğmesine tıklayın
3. **Ana ekrana ekle**'yi seçin
4. Uygulamayı cihazınıza kaydedin
5. Uygulamayı ana ekrandan açın (kritik adım)
6. Abone ol düğmenizi tetikleyin - yerel izin istemi görünmelidir
7. İzin verin ve bildirim teslimatını test edin

#### Önemli test notları

**Yeniden test gereksinimleri**: Aynı cihazda tekrar test etmek için:

* Uygulamayı ana ekrandan kaldırın
* Tarayıcı önbelleğini temizleyin (Ayarlar > Safari/Chrome/Edge > Önbelleği temizle)
* Süreci tekrarlayın

**İzin reddedildi kurtarma**: İzin reddedilirse, izin isteminin tekrar görünmesi için ana ekran uygulaması kaldırılmalı ve yeniden eklenmelidir.

**Kontrol edilecek yaygın sorunlar**:

* `display` alanının `"standalone"` veya `"fullscreen"` olduğundan emin olun
* Tüm ikon yollarının erişilebilir olduğunu doğrulayın
* Manifest'in doğru MIME tipiyle (`application/manifest+json`) sunulduğunu onaylayın
* CORS hataları için test edin

***

## Sorun Giderme

**Manifest yüklenmiyor**: Dosya yolunu, HTTPS gereksinimini ve sunucunuzdaki MIME tipi yapılandırmasını kontrol edin.

**İkonlar görüntülenmiyor**: Ikon dosyası erişilebilirliğini ve manifest'teki doğru boyut belirtimlerini doğrulayın.

**İzin istemi görünmüyor**: Kullanıcının siteye ana ekran uygulaması üzerinden eriştiğinden ve önce etkileşimli bir öğeye tıkladığından emin olun.

**Bildirimler teslim edilmiyor**: OneSignal service worker'ın düzgün kurulduğunu doğrulayın ve hatalar için tarayıcı konsolunu kontrol edin.

***

## Sonraki adımlar

<Check>
  Artık bildirim göndermeye hazırsınız! iOS kullanıcılarınızla web push bildirimleriyle etkileşime başlamak için [Push](./push) belgelerine devam edin veya [Create message](/reference/create-message) API'mizi kullanın.
</Check>

Sürekli başarı için, iOS web push performans metriklerinizi izleyin ve diğer platformlarda sorunsuz deneyimler sağlarken iOS kullanıcıları için gerekli ek adımları zarif bir şekilde yöneten aşamalı geliştirme stratejileri uygulamayı düşünün.

***
