App Clips iOS
Les App Clips permettent aux utilisateurs d’accomplir une tâche rapidement sans télécharger votre application complète. Avec Pushwoosh, vous pouvez envoyer des notifications push aux utilisateurs d’App Clips — iOS accorde automatiquement un accès aux notifications de 8 heures lorsque l’App Clip est ouvert.
Ce dont vous avez besoin
Anchor link to- SDK Pushwoosh pour iOS 7.0.33+
- Xcode 15+
- Une application Pushwoosh distincte pour votre App Clip (ID de bundle différent = application distincte)
- Un appareil réel pour les tests (les jetons push ne fonctionnent pas sur le simulateur)
1. Créer une application Pushwoosh
Anchor link toVotre App Clip a un ID de bundle différent (par ex. com.yourapp.Clip), il nécessite donc une application Pushwoosh distincte avec sa propre clé APNs.
- Allez dans le Panneau de Contrôle Pushwoosh
- Créez une nouvelle application avec l’ID de bundle de l’App Clip
- Téléchargez votre clé d’authentification APNs
- Copiez le Code d’Application et le Jeton d’API
2. Créer une cible App Clip
Anchor link to- Dans Xcode : File → New → Target → App Clip
- Ajoutez la capacité Push Notifications à la cible App Clip
Pour des captures d’écran détaillées sur l’ajout de capacités, consultez le guide d’intégration de base.
3. Ajouter les frameworks Pushwoosh
Anchor link toDans les Build Phases → Link Binary With Libraries de la cible App Clip, ajoutez :
PushwooshFramework.frameworkPushwooshCore.frameworkPushwooshBridge.framework
4. Configurer Info.plist
Anchor link to<!-- Pushwoosh --><key>Pushwoosh_APPID</key><string>XXXXX-XXXXX</string><key>Pushwoosh_API_TOKEN</key><string>YOUR_API_TOKEN</string>
<!-- Push éphémère (autorisation auto. de 8h, sans dialogue) --><key>NSAppClip</key><dict> <key>NSAppClipRequestEphemeralUserNotification</key> <true/> <key>NSAppClipRequestLocationConfirmation</key> <false/></dict>
<key>UIBackgroundModes</key><array> <string>remote-notification</string></array>5. Initialiser le SDK
Anchor link toimport SwiftUIimport PushwooshFramework
class AppClipDelegate: NSObject, UIApplicationDelegate, PWMessagingDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool { Pushwoosh.configure.delegate = self Pushwoosh.configure.registerForPushNotifications() return true }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Pushwoosh.configure.handlePushRegistration(deviceToken) }
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { Pushwoosh.configure.handlePushRegistrationFailure(error as NSError) }
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { Pushwoosh.configure.handlePushReceived(userInfo) completionHandler(.noData) }
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageOpened message: PWMessage) { print("Push ouvert : \(message.payload ?? [:])") }}
@mainstruct YourAppClip: App { @UIApplicationDelegateAdaptor(AppClipDelegate.self) var appDelegate
var body: some Scene { WindowGroup { ContentView() } }}import UIKitimport PushwooshFramework
@mainclass AppDelegate: UIResponder, UIApplicationDelegate, PWMessagingDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { Pushwoosh.configure.delegate = self Pushwoosh.configure.registerForPushNotifications() return true }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Pushwoosh.configure.handlePushRegistration(deviceToken) }
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { Pushwoosh.configure.handlePushRegistrationFailure(error as NSError) }
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { Pushwoosh.configure.handlePushReceived(userInfo) completionHandler(.noData) }
func pushwoosh(_ pushwoosh: Pushwoosh, onMessageOpened message: PWMessage) { print("Push ouvert : \(message.payload ?? [:])") }}Avec les autorisations éphémères, iOS accorde automatiquement l’accès aux notifications push pour 8 heures. Si vous souhaitez utiliser le mode éphémère sans afficher de dialogue d’autorisation, appelez directement UIApplication.shared.registerForRemoteNotifications() au lieu de Pushwoosh.configure.registerForPushNotifications().
Pour demander une autorisation push permanente (dialogue standard), utilisez Pushwoosh.configure.registerForPushNotifications() comme indiqué ci-dessus.
Autorisations de push éphémères
Anchor link toLorsqu’un utilisateur ouvre votre App Clip, iOS accorde l’accès aux notifications push pour 8 heures sans demander. Après 8 heures, l’autorisation expire. L’utilisateur doit rouvrir l’App Clip pour obtenir 8 heures supplémentaires.
Pour obtenir un jeton push pour 8 heures sans afficher de dialogue d’autorisation :
UIApplication.shared.registerForRemoteNotifications()Pour obtenir un jeton push permanent (affiche le dialogue d’autorisation standard) :
Pushwoosh.configure.registerForPushNotifications()Limitations
Anchor link to| Limitation | Détails |
|---|---|
| Pas de notifications riches | Les App Clips ne peuvent pas inclure de Notification Service Extension — pas d’images, pas de Communication Notifications |
| Limite de taille | 15 Mo (iOS 16) / 50 Mo (iOS 17+) |
| Fenêtre de push de 8 heures | L’autorisation éphémère expire après 8 heures |
| Pas de traitement en arrière-plan | Le push silencieux a des fonctionnalités limitées |
| ID de l’appareil | identifierForVendor renvoie des zéros — le SDK gère cela automatiquement (7.0.33+) |
À quoi ça ressemble
Anchor link to
Notification push reçue dans un App Clip avec des autorisations éphémères