Passer au contenu

Personnalisation du SDK iOS

Intégration

Anchor link to

Lien profond

Anchor link to

Dans votre fichier Info.plist, ajoutez un tableau URL types avec un URL Identifier et un URL Scheme.
Dans l’exemple ci-dessous, le URL Scheme est com.pushwoosh et le URL Identifier est promotion.

Dans votre fichier App Delegate (généralement AppDelegate.m pour iOS 12 et versions antérieures, ou SceneDelegate.m pour iOS 13 et versions ultérieures), ajoutez la fonction déléguée openURL appropriée comme indiqué dans l’exemple ci-dessous. L’exemple vérifie la page correcte, analyse la valeur “id” de l’URL et ouvre PromoPageViewController en réponse.

AppDelegate.swift

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
let components = URLComponents(url: url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
if page == "promotion" {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//afficher PromoPageViewController
}

SceneDelegate.swift

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let urlContext = URLContexts.first else { return }
let components = URLComponents(url: urlContext.url, resolvingAgainstBaseURL: false)
let page = components?.host
var promotionId: String?
guard page == "promotion" else {
return
}
let items = components?.queryItems ?? []
for item in items {
if item.name == "id" {
promotionId = item.value
}
}
//afficher PromoPageViewController
}

Suivi des achats in-app

Anchor link to

Par défaut, le suivi des achats in-app est désactivé. Si vous souhaitez suivre les achats in-app lors de la configuration des Customer Journeys, définissez l’indicateur Pushwoosh_PURCHASE_TRACKING_ENABLED sur true dans le fichier info.plist. Vous trouverez une liste des indicateurs disponibles dans le tableau.

Si vous souhaitez suivre les achats in-app manuellement, vous pouvez utiliser le code ci-dessous.

Dans la méthode déléguée paymentQueue:updatedTransactions:, appelez la méthode sendSKPaymentTransactions de PushManager

func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
// Code de suivi In-Apps de Pushwoosh ici
Pushwoosh.sharedInstance().sendSKPaymentTransactions(transactions)
// le reste du code, consommer les transactions, etc.
}
InAppTrackingViewController.swift

Notifications push Geozones

Anchor link to

Les notifications push Geozones sont encapsulées dans un framework distinct PushwooshGeozones.

  1. Ajoutez PushwooshGeozones.framework à votre projet

Pour ajouter PushwooshGeozones.framework à votre projet à l’aide d’un gestionnaire de dépendances, insérez les lignes suivantes dans votre podfile ou cartfile :

pod 'PushwooshXCFramework/Geozones'

Alternativement, vous pouvez simplement glisser-déposer le framework dans Lier les binaires aux bibliothèques dans les Phases de build de votre projet.

  1. Ajoutez les clés suivantes à votre Info.plist :
  • NSLocationWhenInUseUsageDescription(requis) pour que l’application suive les Geozones uniquement lorsqu’elle est exécutée en premier plan.
  • NSLocationAlwaysAndWhenInUseUsageDescription(requis) pour que l’application suive les Geozones en premier plan et en arrière-plan et pour afficher une fenêtre de dialogue de demande d’autorisation.
  • NSLocationAlwaysUsageDescription(optionnel) pour que l’application suive les Geozones à tout moment ; doit être utilisé si votre application cible iOS 10 et les versions antérieures.
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>pour que l'application suive les Geozones dans les deux conditions et affiche un dialogue de demande d'autorisation</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>pour que l'application suive les Geozones uniquement lorsqu'elle est exécutée au premier plan</string>

  1. Importez le framework
import PushwooshGeozones
  1. Démarrez le suivi des Geozones
PWGeozonesManager.shared()?.startLocationTracking()

Référence GitHub

override func viewDidLoad() {
super.viewDidLoad()
// Démarrer le suivi des Geozones lorsque nécessaire
PWGeozonesManager.shared().startLocationTracking()
}

Création d’une file d’attente Rich Media

Anchor link to

S’il y a plusieurs pages Rich Media à afficher simultanément (par exemple, des événements déclencheurs pour deux In-Apps ou plus se produisent au même moment, ou une page Rich Media est déjà affichée au moment où un autre événement déclencheur se produit), vous pouvez configurer une file d’attente pour l’affichage des pages Rich Media. Pour créer une file d’attente, suivez les étapes décrites ci-dessous.

  1. Créez une classe qui implémente PWRichMediaPresentingDelegate :
@interface ChainedRichMediaPresentingDelegate () <PWRichMediaPresentingDelegate>
@property (nonatomic) NSMutableArray *queue;
@property (nonatomic) BOOL inAppIsPresenting;
@end
@implementation ChainedRichMediaPresentingDelegate
- (instancetype)init {
self = [super init];
if (self) {
_queue = [NSMutableArray new];
}
return self;
}
- (BOOL)richMediaManager:(PWRichMediaManager *)richMediaManager shouldPresentRichMedia:(PWRichMedia *)richMedia {
[_queue addObject:richMedia];
return !_inAppIsPresenting;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didPresentRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = YES;
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager didCloseRichMedia:(PWRichMedia *)richMedia {
_inAppIsPresenting = NO;
[_queue removeObject:richMedia];
if (_queue.count) {
[[PWRichMediaManager sharedManager] presentRichMedia:_queue.firstObject];
}
}
- (void)richMediaManager:(PWRichMediaManager *)richMediaManager presentingDidFailForRichMedia:(PWRichMedia *)richMedia withError:(NSError *)error {
[self richMediaManager:richMediaManager didCloseRichMedia:richMedia];
}
@end

2. Définissez le délégué :

[PWRichMediaManager sharedManager].delegate = [ChainedRichMediaPresentingDelegate new];

Lecture automatique d’une vidéo envoyée dans une Notification Riche avec Force Touch

Anchor link to

Pour qu’une vidéo envoyée en tant que pièce jointe de Notification Riche soit lue automatiquement lorsque la notification est développée sans aucune interaction de l’utilisateur, suivez les étapes ci-dessous :

  1. Ajoutez l’Extension de Contenu de Notification à votre projet :
  • Dans Xcode, sélectionnez Fichier > Nouveau > Cible.
  • Choisissez Extension de Contenu de Notification.
  • Donnez-lui un nom et terminez la configuration.
Extension de Contenu de Notification - Notification Push Riche iOS

Si le message « Activer le schéma » s’affiche, choisissez Annuler.

Activer le schéma du contenu de notification
  1. Ajustez les propriétés et méthodes dans l’Extension de Contenu comme suit :
import UIKit
import UserNotifications
import UserNotificationsUI
import AVKit
class NotificationViewController: UIViewController, UNNotificationContentExtension {
var playerController: AVPlayerViewController!
@IBOutlet weak var playerBackgroundView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
// Effectuez ici toute initialisation d'interface requise.
}
func didReceive(_ notification: UNNotification) {
let attachment = notification.request.content.attachments.first
playerController = AVPlayerViewController()
// Définir la hauteur par programmation
// preferredContentSize.height = 250
if let url = attachment?.url {
setupVideoPlayer(url: url)
} else {
print("Aucune URL valide...")
}
}
private func setupVideoPlayer(url: URL) {
guard let playerController = self.playerController else { return }
let player = AVPlayer(url: url)
playerController.player = player
playerController.view.frame = self.playerBackgroundView.bounds
playerBackgroundView.addSubview(playerController.view)
addChild(playerController)
playerController.didMove(toParent: self)
player.play()
}
  1. Incorporez une UIView dans MainInterface.storyboard :
UIView dans le MainInterface.storyboard
  1. Liez l’IBOutlet playerBackgroundView avec la UIView que vous venez d’ajouter :
Lier l'IBOutlet playerBackgroundView avec la UIView
  1. Mettez à jour le fichier info.plist avec l’entrée suivante :
UNNotificationExtensionUserInteractionEnabled = true
UNNotificationExtensionUserInteractionEnabled = true

Pour joindre une vidéo à votre notification, saisissez l’URL d’une vidéo dans le champ Pièce jointe multimédia du Control Panel :

URL de la vidéo dans le champ Pièce jointe multimédia du Control Panel de Pushwoosh

Lorsque vous envoyez une notification via la requête API /createMessage, incluez l’URL dans le paramètre “ios_attachment” et assurez-vous que l’indicateur “mutable-content” est défini sur `1`.

Vidéo d'exemple Hello World

Son de notification push personnalisé

Anchor link to

Pour jouer un son personnalisé lors de la réception d’une notification push, placez d’abord le fichier audio dans le dossier racine de votre projet.

Ensuite, spécifiez le nom du fichier son dans les paramètres push – remplissez le champ Son des paramètres spécifiques à iOS de votre message ou spécifiez le nom du fichier comme valeur pour le paramètre “ios_sound” de la requête API createMessage.

Le fichier audio pour le son personnalisé iOS doit être dans l’un des formats suivants : .aif, .caf, .wav. Assurez-vous de spécifier le format dans le nom du fichier ; sinon, il sera ignoré par le SDK iOS de Pushwoosh.

Push Provisoire iOS

Anchor link to

Comment ça marche

Anchor link to

Les notifications push provisoires apparaissent silencieusement dans le Centre de notifications de l’utilisateur mais pas sur l’écran de verrouillage. Ce type de push ne nécessite pas d’autorisation explicite de l’utilisateur : vous pouvez commencer à les envoyer dès qu’un utilisateur installe et lance votre application.

Cependant, les utilisateurs peuvent toujours s’abonner à vos notifications push proéminentes : en ouvrant le Push Provisoire, ils ont deux options pour choisir leur expérience – conserver les notifications push dans le Centre de notifications sans alertes ni sons, ou vous autoriser à envoyer des notifications push de manière proéminente afin qu’elles apparaissent sur l’écran de verrouillage.

Les Push Provisoires sont conçus pour permettre aux utilisateurs de prendre des décisions éclairées sur leur souhait de recevoir des notifications de votre application. Comme la demande d’abonnement native APN n’est montrée aux utilisateurs qu’une seule fois et que pour s’abonner plus tard, ils doivent se rendre dans les paramètres système de leur téléphone, certains utilisateurs pourraient ne pas s’abonner car ils ne sont pas conscients de la valeur qu’ils obtiennent avec vos notifications push. Les Push Provisoires donnent aux utilisateurs cette compréhension : ils peuvent voir quel contenu vous livrez dans les notifications push et décider s’ils ont besoin d’être notifiés de ce contenu de manière proéminente.

Comment l’implémenter

Anchor link to

1. Intégrez le SDK iOS de Pushwoosh en suivant le guide.

2. Ajoutez la chaîne suivante à l’AppDelegate de votre projet avant d’appeler la méthode registerForPushNotifications() :

if #available(iOS 12.0, *) {
Pushwoosh.sharedInstance().additionalAuthorizationOptions = UNAuthorizationOptions.provisional
}

C’est tout ! Les utilisateurs de l’application recevront des messages directement dans leur Centre de notifications une fois qu’ils auront installé l’application.

Partagez vos commentaires avec nous

Anchor link to

Vos commentaires nous aident à créer une meilleure expérience, nous serions donc ravis d’avoir de vos nouvelles si vous rencontrez des problèmes lors du processus d’intégration du SDK. Si vous rencontrez des difficultés, n’hésitez pas à nous faire part de vos réflexions via ce formulaire.