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

# Configuration du push web iOS

> Guide complet pour activer les notifications push web sur les appareils iOS et iPadOS, incluant la configuration du fichier manifest, les stratégies d'intégration des utilisateurs et les meilleures pratiques d'implémentation pour Safari, Chrome et Edge.

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 a commencé à prendre en charge les notifications push sur iOS et iPadOS 16.4+ pour les applications web ajoutées à l'écran d'accueil d'un utilisateur. Cette fonctionnalité fonctionne sur les navigateurs Safari, Chrome et Edge, ouvrant de nouvelles opportunités d'engagement pour les entreprises web-first. Ce guide complet couvre tout ce dont vous avez besoin pour implémenter avec succès les notifications push web iOS.

<Frame caption="Exemple de notification push web sur mobile.">
  <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>

***

## Mises à jour importantes pour 2025

**Prise en charge multi-navigateurs** : Les notifications push web fonctionnent désormais sur tous les principaux navigateurs sur iOS/iPadOS 16.4+ incluant Safari, Chrome et Edge.

**Améliorations iOS 17+** : Implémentation améliorée avec les API pertinentes activées par défaut, rendant le push web plus accessible aux utilisateurs.

**Considérations de fiabilité** : Certains développeurs rapportent des problèmes de fiabilité occasionnels où les notifications push web iOS peuvent fonctionner initialement puis s'arrêter de manière inattendue. Surveillez vos taux de livraison de notifications et ayez des stratégies d'engagement de secours en place.

***

## Exigences

* **Version iOS/iPadOS** : 16.4 ou supérieure
* **Origine HTTPS** : Connexion sécurisée avec design responsive
* **Manifest d'application web** : Fichier `manifest.json` valide avec les paramètres corrects
* **Installation sur l'écran d'accueil** : L'application web doit être ajoutée à l'écran d'accueil de l'utilisateur depuis n'importe quel navigateur pris en charge
* **Action initiée par l'utilisateur** : L'utilisateur doit interagir avec votre site avant que les invites d'autorisation puissent apparaître
* **Service Worker OneSignal** : Requis pour la livraison des notifications

### Vérification d'application web progressive (PWA)

Si votre site web est déjà une [Application Web Progressive (PWA)](https://onesignal.com/blog/what-is-a-pwa/), aucune mise à jour de site supplémentaire n'est nécessaire. Utilisez [Lighthouse dans Chrome DevTools](https://developer.chrome.com/docs/lighthouse/overview/#devtools) pour vérifier si votre site est qualifié comme PWA.

***

## Configuration

### 1. Créer votre manifest d'application web

Un Manifest d'Application Web (`manifest.json`) est un fichier JSON qui définit comment votre application web apparaît et se comporte lorsqu'elle est installée sur l'appareil d'un utilisateur. Pour le push web iOS, ce fichier est **obligatoire**.

#### Champs obligatoires du manifest

Votre `manifest.json` doit inclure ces champs essentiels :

* **`$schema`** (recommandé) : URL du schéma JSON pour la validation et le support IDE
* **`name`** (requis) : Nom complet de l'application affiché aux utilisateurs
* **`display`** (requis) : Doit être défini à `"standalone"` ou `"fullscreen"` pour la compatibilité iOS
* **`start_url`** (requis) : URL du point d'entrée lorsque l'application démarre
* **`icons`** (requis) : Tableau d'objets d'icône avec plusieurs tailles
* **`id`** (recommandé) : Identifiant unique permettant plusieurs instances d'application

#### Exemple de fichier manifest

```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"
}
```

#### Étapes d'implémentation

1. **Placement du fichier** : Placez `manifest.json` dans le répertoire racine de votre site web
2. **Intégration HTML** : Ajoutez cette balise link à la section `<head>` de toutes les pages :

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

3. **Préparation des icônes** : Créez des icônes PNG de haute qualité en plusieurs tailles (192x192, 256x256, 384x384, 512x512 pixels recommandés)

<Note>
  Utilisez des outils comme [SimiCart Manifest Generator](https://www.simicart.com/manifest-generator.html/) pour créer rapidement des fichiers manifest, ou validez les existants avec [Manifest Tester](https://manifesttester.com/).
</Note>

### 2. Ajouter le service worker OneSignal

Si vous avez déjà complété notre [configuration du SDK Web](./web-sdk-setup) et pouvez recevoir des notifications push web sur d'autres navigateurs, cette étape est terminée. Consultez la documentation [Service Worker OneSignal](./onesignal-service-worker) pour des instructions de configuration détaillées.

### 3. Configurer les invites d'autorisation

Les [invites d'autorisation Web](./permission-requests) existantes de votre [configuration SDK Web](./web-sdk-setup) fonctionneront sur les appareils iOS **uniquement après que les utilisateurs ajoutent votre site à leur écran d'accueil et l'ouvrent depuis là**. C'est une exigence de conception d'Apple.

### 4. Guider les utilisateurs vers "Ajouter à l'écran d'accueil"

Contrairement aux appareils de bureau ou Android où les invites d'autorisation apparaissent en fonction de vos paramètres, iOS nécessite un parcours utilisateur spécifique que vous devez faciliter.

#### Le parcours utilisateur requis

Les utilisateurs doivent compléter ces étapes pour recevoir des notifications :

1. Visiter votre site web sur Safari, Chrome ou Edge sur iOS/iPadOS 16.4+
2. Cliquer sur le bouton **Partager** du navigateur
3. Sélectionner l'option **Ajouter à l'écran d'accueil**
4. Enregistrer l'application sur leur appareil
5. Ouvrir l'application depuis l'écran d'accueil (pas depuis le navigateur)
6. Interagir avec votre bouton d'abonnement pour déclencher l'invite d'autorisation native

<Frame caption="Ajouter un site web à l'écran d'accueil sur iOS">
  <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>

#### Stratégies d'intégration des utilisateurs

Comme ce processus n'est pas intuitif, implémentez des conseils clairs à travers :

* **Bannières de site web** : Affichez des bannières spécifiquement sur les appareils mobiles Apple expliquant la valeur des notifications et fournissant des instructions étape par étape.

* **Guides visuels** : Utilisez des captures d'écran et des flèches pour montrer aux utilisateurs exactement où appuyer.

* **Timing** : Présentez le guide après que les utilisateurs ont démontré leur engagement avec votre contenu.

#### Exemples d'implémentation

Voici des approches efficaces d'applications réelles :

<Frame caption="Exemple de bannière invitant les utilisateurs à ajouter à l'écran d'accueil">
  <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="Guide visuel étape par étape">
  <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="Messagerie axée sur les avantages">
  <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="Appel à l'action clair avec des repères visuels">
  <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>

#### Solutions open source

Envisagez d'implémenter cette solution de bannière open source populaire :

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

<Frame caption="Exemple d'une bannière d'invite d'ajout à l'écran d'accueil d'un projet open source par rajatsehgal.">
  <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>

Exemples de bannières supplémentaires et meilleures pratiques disponibles sur [web.dev](https://web.dev/promote-install/).

### 5. Tests et validation

#### Tests du fichier manifest

1. **Vérification d'accessibilité** : Naviguez vers `https://votresite.com/manifest.json` pour assurer l'accessibilité publique
2. **Outils de développement du navigateur** :
   * Ouvrez Chrome DevTools (F12)
   * Allez dans l'onglet Application → Manifest
   * Examinez toutes les erreurs ou avertissements
3. **Validateurs en ligne** :
   * [Manifest Tester](https://manifesttester.com/)
   * [Validateur Redirection.io](https://redirection.io/tools/web-app-manifest/validator)
   * [ValidBot Manifest Wizard](https://www.validbot.com/tools/app-manifest-wizard.php)

#### Tests de bout en bout des notifications push

1. Visitez votre site web sur un appareil iOS 16.4+ en utilisant Safari, Chrome ou Edge
2. Cliquez sur le bouton **Partager** du navigateur
3. Sélectionnez **Ajouter à l'écran d'accueil**
4. Enregistrez l'application sur votre appareil
5. Ouvrez l'application depuis l'écran d'accueil (étape cruciale)
6. Déclenchez votre bouton d'abonnement - l'invite d'autorisation native devrait apparaître
7. Accordez l'autorisation et testez la livraison des notifications

#### Notes importantes sur les tests

**Exigences pour re-tester** : Pour tester à nouveau sur le même appareil :

* Supprimez l'application de l'écran d'accueil
* Effacez le cache du navigateur (Réglages > Safari/Chrome/Edge > Effacer le cache)
* Répétez le processus

**Récupération après refus d'autorisation** : Si l'autorisation est refusée, l'application de l'écran d'accueil doit être supprimée et ré-ajoutée pour que l'invite d'autorisation réapparaisse.

**Problèmes courants à vérifier** :

* Assurez-vous que le champ `display` est `"standalone"` ou `"fullscreen"`
* Vérifiez que tous les chemins d'icône sont accessibles
* Confirmez que le manifest est servi avec le type MIME correct (`application/manifest+json`)
* Testez les erreurs CORS

***

## Dépannage

**Manifest ne se charge pas** : Vérifiez le chemin du fichier, l'exigence HTTPS et la configuration du type MIME sur votre serveur.

**Icônes ne s'affichent pas** : Vérifiez l'accessibilité du fichier d'icône et les spécifications de taille correctes dans le manifest.

**Invite d'autorisation n'apparaît pas** : Assurez-vous que l'utilisateur a accédé au site via l'application de l'écran d'accueil et a cliqué sur un élément interactif en premier.

**Notifications ne se livrent pas** : Vérifiez que le service worker OneSignal est correctement installé et consultez la console du navigateur pour les erreurs.

***

## Étapes suivantes

<Check>
  Vous êtes maintenant prêt à envoyer des notifications ! Continuez vers la documentation [Push](./push) ou utilisez notre API [Créer un message](/reference/create-message) pour commencer à engager vos utilisateurs iOS avec des notifications push web.
</Check>

Pour un succès continu, surveillez vos métriques de performance du push web iOS et envisagez d'implémenter des stratégies d'amélioration progressive qui gèrent avec élégance les étapes supplémentaires requises pour les utilisateurs iOS tout en offrant des expériences fluides sur d'autres plateformes.

***
