Guide d'intégration du SDK iOS
Cette page explique comment implémenter le SDK iOS pour Rokt Ecommerce afin de proposer des expériences client plus pertinentes lors du paiement. Le SDK vous permet de déclencher et de suivre ces expériences (comme l'affichage d'offres sur les pages de confirmation) en s'activant sur les pages configurées et en transmettant les données utilisateur et de transaction à Rokt pour personnalisation et mesure.
Votre représentant de compte dédié vous aidera à configurer votre compte pour le SDK iOS. Ils vous fourniront à la fois la clé et le secret nécessaires pour initialiser le SDK ainsi que des ressources supplémentaires nécessaires pour rendre les expériences les plus pertinentes pour vos clients.
Ces instructions nécessitent des ressources de développement pour être complétées. Si vous avez besoin d'une assistance supplémentaire, veuillez contacter votre gestionnaire de compte Rokt. Les boutiques Shopify peuvent configurer un emplacement Rokt en quelques secondes en utilisant l'application Rokt Ecommerce — aucun codage nécessaire !
1. Ajouter le SDK Rokt à votre application iOS
Utilisez soit SPM soit CocoaPods pour inclure le SDK Rokt dans votre application :
CocoaPods
Pour intégrer le SDK à l'aide de CocoaPods, spécifiez-le dans votre Podfile avec :
pod 'mParticle-Apple-SDK', '~> 8.0'
pod 'mParticle-Rokt','~> 8.0'
SPM
Pour intégrer le SDK à l'aide de Swift Package Manager :
- Ouvrez votre projet dans Xcode et allez à l'onglet "Package Dependencies".
- Cliquez sur le bouton + sous la liste des Packages.
- Entrez l'URL du dépôt
https://github.com/mParticle/mparticle-apple-sdk
dans la boîte de recherche en haut à droite, choisissezmparticle-apple-sdk
dans la liste des packages, et changez "Dependency Rule" en "Up to Next Major Version". - Cliquez sur le bouton "Add Package" en bas à droite, et choisissez soit le "Package Product" appelé
mParticle-Apple-SDK
. Si vous souhaitez utiliser une version du SDK qui n'inclut pas la prise en charge du suivi de localisation, choisissezmParticle-Apple-SDK-NoLocation
. - Répétez les étapes 3 et 4 avec l'URL du dépôt Rokt Kit
https://github.com/mparticle-integrations/mparticle-apple-integration-rokt.git
.- Si vous choisissez le "Package Product"
mParticle-Apple-SDK-NoLocation
, vous devrez importer le SDK en utilisantimport mParticle_Apple_SDK_NoLocation
au lieu deimport mParticle_Apple_SDK
.
- Si vous choisissez le "Package Product"
2. Initialisez le SDK Rokt
Pour initialiser le SDK, insérez l'extrait d'initialisation suivant dans votre fichier AppDelegate :
- Assurez-vous de remplacer
your-key
etyour-secret
par la clé et le secret fournis par votre équipe dédiée Rokt.
- Swift
- Objective-C
import mParticle_Apple_SDK
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Initialiser le SDK
let options = MParticleOptions(key: "your-key",
secret: "your-secret")
// Spécifiez l'environnement de données avec environment :
// Réglez-le sur .development si vous testez encore votre intégration.
// Réglez-le sur .production si votre intégration est prête pour les données de production.
// La valeur par défaut est .autoDetect, qui tente de détecter automatiquement l'environnement
options.environment = .development
// Identifier l'utilisateur actuel :
let identifyRequest = MPIdentityApiRequest.withEmptyUser()
// Si vous utilisez une adresse e-mail non hachée, définissez-la dans 'email'.
identifyRequest.email = "j.smith@example.com"
// Si l'utilisateur est identifié par son adresse e-mail, définissez des attributs utilisateur supplémentaires.
options.identifyRequest = identifyRequest
options.onIdentifyComplete = {(result: MPIdentityApiResult?, error: Error?) in
if let user = result?.user {
user.setUserAttribute("example attribute key", value: "example attribute value")
} else {
// gérer l'échec - voir la section "Gestion des erreurs" ci-dessous
}
}
MParticle.sharedInstance().start(with: options)
return true
}
#import <mParticle_Apple_SDK/mParticle.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Initialiser le SDK
MParticleOptions *options = [MParticleOptions optionsWithKey:@"your-key"
secret:@"your-secret"];
// Spécifier l'environnement de données avec environment:
// Réglez-le sur MPEnvironmentDevelopment si vous testez toujours votre intégration.
// Réglez-le sur MPEnvironmentProduction si votre intégration est prête pour les données de production.
// Le paramètre par défaut est MPEnvironmentAutoDetect qui tente de détecter automatiquement l'environnement
options.environment = MPEnvironmentDevelopment;
// Identifier l'utilisateur actuel:
// Si vous n'avez pas l'adresse e-mail de l'utilisateur, vous pouvez passer une valeur nulle
MPIdentityApiRequest *identifyRequest = [MPIdentityApiRequest requestWithEmptyUser];
// Si vous utilisez une adresse e-mail non hachée, définissez-la dans 'email'.
identifyRequest.email = @"j.smith@example.com";
options.identifyRequest = identifyRequest;
// Si l'utilisateur est identifié par son adresse e-mail, définissez des attributs utilisateur supplémentaires.
options.onIdentifyComplete = ^(MPIdentityApiResult *_Nullable apiResult, NSError *_Nullable error) {
if (apiResult) {
[apiResult.user setUserAttribute:@"example attribute key"
value:@"example attribute value"];
} else {
//gérer l'échec - voir https://docs.mparticle.com/developers/sdk/ios/idsync/#error-handling
}
};
[[MParticle sharedInstance] startWithOptions:options];
return YES;
}
2.1 Identifier l'utilisateur lors de l'initialisation
Lorsque le SDK est initialisé, il peut identifier l'utilisateur actuel afin que toutes les données collectées lui soient correctement attribuées et pour garantir qu'il voit les publicités les plus pertinentes en fonction de son comportement.
Le script d'initialisation du SDK inclut un objet appelé identifyRequest :
- Swift
- Objective-C
let identifyRequest = MPIdentityApiRequest.withEmptyUser()
identifyRequest.email = "j.smith@example.com"
options.identifyRequest = identifyRequest
MPIdentityApiRequest *identifyRequest = [MPIdentityApiRequest requestWithEmptyUser];
identifyRequest.email = @"j.smith@example.com";
options.identifyRequest = identifyRequest;
2.2 Définir des attributs utilisateur supplémentaires
Le script d'initialisation inclut une fonction de rappel qui vous permet de définir des attributs utilisateur supplémentaires pour l'utilisateur s'il est identifié avec succès avec son adresse e-mail :
- Swift
- Objective-C
options.onIdentifyComplete = {(result: MPIdentityApiResult?, error: Error?) in
if let user = result?.user {
user.setUserAttribute("example attribute key", value: "example attribute value")
} else {
//gérer l'échec - voir la section "Gestion des erreurs" ci-dessous
}
}
options.onIdentifyComplete = ^(MPIdentityApiResult *_Nullable apiResult, NSError *_Nullable error) {
if (apiResult) {
[apiResult.user setUserAttribute:@"example attribute key"
value:@"example attribute value"];
} else {
//gérer l'échec - voir https://docs.mparticle.com/developers/sdk/ios/idsync/#error-handling
}
};
3. Identifier l'utilisateur au fur et à mesure que les données deviennent disponibles
Dès que l'utilisateur fournit son adresse e-mail après l'initialisation du SDK (par exemple, lorsqu'il se connecte ou effectue un achat), vous devez appeler la méthode identify pour transmettre son e-mail à Rokt. Cela garantit que les données sont correctement attribuées à l'utilisateur actuel.
3.1 Créer un identifyRequest
Pour identifier l'utilisateur, créez d'abord un objet identifyRequest
pour contenir l'adresse e-mail de l'utilisateur.
Si vous fournissez une adresse e-mail non hachée, utilisez :
- Swift
- Objective-C
let identifyRequest = MPIdentifyApiRequest.withEmptyUser()
identifyRequest.email = "j.smith@example.com"
MPIdentifyApiRequest *identifyRequest = [MPIdentifyApiRequest requestWithEmptyUser];
identifyRequest.email = @"j.smith@example.com";
3.2 Définir des attributs utilisateur supplémentaires
Ensuite, vous avez la possibilité de définir des attributs utilisateur supplémentaires lors de l'identification d'un utilisateur en créant une fonction de rappel. Si la requête identifyRequest
réussit, alors les attributs utilisateur que vous définissez avec setUserAttribute
sont attribués à l'utilisateur.
- Swift
- Objective-C
let identifyCallback = {(result: MPIdentifyApiResult?) in
if let user = result?.user {
user.setUserAttribute("example attribute key", value: "example attribute value")
}
}
id identityCallback = ^(MPIdentifyApiResult *_Nullable apiResult) {
if (apiResult) {
[apiResult.user setUserAttribute:@"example attribute key"
value:@"example attribute key"];
}
}
3.3 Appelez la méthode identify
Enfin, après avoir créé votre identifyRequest
et votre identityCallback
, pour définir des attributs supplémentaires, appelez la méthode identify, en passant les objets identifyRequest
et identityCallback
que vous venez de créer :
- Swift
- Objective-C
MParticle.sharedInstance().identity.identify(identifyRequest, completion: identityCallback)
[[[MParticle sharedInstance] identity] identify:identifyRequest completion:identityCallback];
Par exemple, pour identifier un utilisateur nommé Jane Smith avec l'adresse e-mail j.smith@example.com (et vous n'avez pas besoin de hacher son adresse e-mail), vous utiliseriez :
- Swift
- Objective-C
let identifyRequest = MPIdentifyApiRequest.withEmptyUser()
identifyRequest.email = "j.smith@example.com"
let identifyCallback = {(result: MPIdentifyApiResult?) in
if let user = result?.user {
user.setUserAttribute("example attribute key", value: "example attribute value")
}
}
MParticle.sharedInstance().identity.identify(identifyRequest, completion: identityCallback)
MPIdentifyApiRequest *identifyRequest = [MPIdentifyApiRequest requestWithEmptyUser];
identifyRequest.email = @"j.smith@example.com";
id identityCallback = ^(MPIdentifyApiResult *_Nullable apiResult) {
if (apiResult) {
[apiResult.user setUserAttribute:@"example attribute key"
value:@"example attribute key"];
}
}
[[[MParticle sharedInstance] identity] identify:identifyRequest completion:identityCallback];
4. Suivre les attributs utilisateur
Vous pouvez utiliser le SDK Rokt pour collecter des attributs utilisateur séparément des événements. Les attributs utilisateur sont distincts des attributs personnalisés lors du suivi des événements. Le SDK associera tous les attributs utilisateur collectés lors d'une session donnée aux événements déclenchés dans la même session.
Pour collecter des attributs utilisateur, le code suivant doit être exécuté dans votre application immédiatement après l'initialisation du SDK Rokt et avant que vous n'enregistriez un événement.
- Swift
- Objective-C
import mParticle_Apple_SDK
// Récupérez l'utilisateur actuel. Cela ne réussira que si vous avez identifié l'utilisateur lors de l'initialisation du SDK ou en appelant la méthode d'identification.
let currentUser = MParticle.sharedInstance().identity.currentUser
// Une fois que vous avez correctement défini l'utilisateur actuel sur `currentUser`, vous pouvez définir les attributs utilisateur avec :
currentUser?.setUserAttribute("custom-attribute-name", value: "custom-attribute-value")
// Remarque : tous les attributs utilisateur (y compris les attributs de liste et les tags) doivent avoir des noms distincts.
// Rokt recommande de définir autant que possible des attributs utilisateur parmi les suivants :
currentUser?.setUserAttribute("firstname", value: "John")
currentUser?.setUserAttribute("lastname", value: "Doe")
// Les numéros de téléphone peuvent être formatés soit sous la forme '1234567890', soit sous la forme '+1 (234) 567-8901'
currentUser?.setUserAttribute("mobile", value: "3125551515")
currentUser?.setUserAttribute("age", value: "33")
currentUser?.setUserAttribute("gender", value: "M")
currentUser?.setUserAttribute("city", value: "Brooklyn")
currentUser?.setUserAttribute("state", value: "NY")
currentUser?.setUserAttribute("zip", value: "123456")
currentUser?.setUserAttribute("dob", value: "yyyymmdd")
currentUser?.setUserAttribute("title", value: "Mr")
currentUser?.setUserAttribute("language", value: "en")
currentUser?.setUserAttribute("value", value: "52.25")
currentUser?.setUserAttribute("predictedltv", value: "136.23")
// Vous pouvez créer un attribut utilisateur pour contenir une liste de valeurs
currentUser?.setUserAttributeList("favorite-genres", values: ["documentary", "comedy", "romance", "drama"])
// Pour supprimer un attribut utilisateur, appelez removeUserAttribute et passez le nom de l'attribut. Tous les attributs utilisateur partagent le même espace de clés.
currentUser?.removeAttribute("attribute-to-remove")
#import <mParticle_Apple_SDK/mParticle.h>
// Récupérez l'utilisateur actuel. Cela ne réussira que si vous avez identifié l'utilisateur pendant l'initialisation du SDK ou en appelant la méthode identify.
MParticleUser *currentUser = [[[MParticle sharedInstance] identity] currentUser];
// Une fois que vous avez correctement défini l'utilisateur actuel sur `currentUser`, vous pouvez définir des attributs utilisateur avec :
[currentUser setUserAttribute:@"custom-attribute-name" value:@"custom-attribute-name"];
// Remarque : tous les attributs utilisateur (y compris les attributs de liste et les balises) doivent avoir des noms distincts.
// Rokt recommande de définir autant que possible les attributs utilisateur suivants :
[currentUser setUserAttribute:@"firstname" value:@"John"];
[currentUser setUserAttribute:@"lastname" value:@"Doe"];
// Les numéros de téléphone peuvent être formatés soit comme '1234567890', soit comme '+1 (234) 567-8901'
[currentUser setUserAttribute:@"mobile" value:@"3125551515"];
[currentUser setUserAttribute:@"age" value:@"33"];
[currentUser setUserAttribute:@"gender" value:@"M"];
[currentUser setUserAttribute:@"city" value:@"Brooklyn"];
[currentUser setUserAttribute:@"state" value:@"NY"];
[currentUser setUserAttribute:@"zip" value:@"123456"];
[currentUser setUserAttribute:@"dob" value:@"yyyymmdd"];
[currentUser setUserAttribute:@"title" value:@"Mr"];
[currentUser setUserAttribute:@"language" value:@"en"];
[currentUser setUserAttribute:@"value" value:@"52.25"];
[currentUser setUserAttribute:@"predictedltv" value:@"136.23"];
// Vous pouvez créer un attribut utilisateur pour contenir une liste de valeurs
[currentUser setUserAttribute:@"favorite-genres" values:@[@"documentary", @"comedy", @"romance", @"drama"]];
// Pour supprimer un attribut utilisateur, appelez removeUserAttribute et passez le nom de l'attribut. Tous les attributs utilisateur partagent le même espace clé.
[currentUser removeUserAttribute:@"attribute-to-remove"];
5. Capturer les événements du funnel
Le SDK Rokt vous permet de mettre en œuvre le suivi des événements pour collecter des données décrivant le parcours de vos utilisateurs à travers votre application. Vous pouvez ensuite utiliser ces données pour optimiser l'expérience de vos utilisateurs.
Il existe trois principaux types d'événements que vous pouvez enregistrer avec le SDK :
- Événements de vue d'écran : Ce sont des événements que vous pouvez déclencher lorsqu'une page de votre application est chargée.
- Événements personnalisés : Ce sont des événements libres que vous créez pour suivre les informations spécifiques à votre application.
- Événements commerciaux : Ce sont des événements spécifiques au commerce électronique qui peuvent décrire les différentes étapes de l'expérience d'achat, y compris l'ajout d'articles à un panier et la réalisation d'un achat final.
Lors de la première intégration avec le SDK Rokt, commencez par mettre en œuvre le suivi des vues d'écran. Pour en savoir plus sur le suivi des événements personnalisés et commerciaux, voir l'Annexe.
Suivez les vues d'écran
Un des types d'événements les plus basiques à suivre est la vue d'écran. Pour enregistrer une vue d'écran, appelez la méthode .logScreen
, en passant le nom de l'écran sous forme de chaîne de caractères.
Le nom que vous passez doit être un des ensembles limités de pages, comme 'homepage'
ou 'product detail page'
. Vous pouvez également inclure des attributs personnalisés supplémentaires dans le tableau eventInfo
.
- Swift
- Objective-C
MParticle.sharedInstance().logScreen(
"homepage",
eventInfo: ["custom-attribute": custom-value]
)
[[MParticle sharedInstance] logScreen:@"homepage"
eventInfo:@{@"custom-attribute": customValue}];
6. Afficher un Placement
La principale valeur du SDK Rokt est débloquée grâce à la méthode selectPlacements
, qui sert un placement (ou une mise en page) hyper-pertinent pour vos clients en fonction des attributs que vous fournissez.
Une fois l'intégration de Rokt initialisée, vous pouvez appeler la méthode selectPlacements
depuis la page où votre mise en page sera rendue. Elle doit être appelée aussi tôt que possible, et une fois que tous les attributs requis sont disponibles, pour garantir la meilleure expérience pour vos utilisateurs.
Lors de l'appel de selectPlacements, vous devez fournir au moins les attributs email
, firstname
, lastname
, billingzipcode
et confirmationref
pour offrir à vos utilisateurs le placement le plus pertinent.
Placements en superposition
- Swift
- Objective-C
import mParticle_Apple_SDK
let attributes = [
"email": "test@gmail.com",
"firstname": "Jenny",
"lastname": "Smith",
"billingzipcode": "07762",
"confirmationref": "54321"
]
MParticle.sharedInstance().rokt.selectPlacements("RoktExperience", attributes: attributes)
#import <mParticle_Apple_SDK/mParticle.h>
NSDictionary *attributes = @{
@"email": @"test@gmail.com",
@"firstname": @"Jenny",
@"lastname": @"Smith",
@"billingzipcode": @"07762",
@"confirmationref": @"54321"
};
[[[MParticle sharedInstance] rokt] selectPlacements:@"RoktExperience" attributes:attributes];
Vous pouvez également vouloir passer des paramètres optionnels tels que MPRoktConfig
, qui vous permettront de personnaliser l'interface utilisateur du placement, principalement selon que l'application est en mode sombre ou clair. Des paramètres optionnels supplémentaires tels que les vues intégrées et les rappels sont montrés plus bas.
- Swift
- Objective-C
let roktConfig = MPRoktConfig()
roktConfig.colorMode = .light
MParticle.sharedInstance().rokt.selectPlacements("RoktExperience", attributes: attributes, embeddedViews: nil, callbacks: nil, config: roktConfig)
MPRoktConfig *roktConfig = [[MPRoktConfig alloc] init];
roktConfig.colorMode = MPColorModeLight;
[[MParticle sharedInstance].rokt selectPlacements:@"RoktExperience" attributes:attributes embeddedViews:nil config:roktConfig callbacks:callbacks];
Si vous souhaitez mettre à jour l'identifiant RoktExperience
ou l'identifiant intégré RoktEmbedded1
avec une valeur différente, contactez votre gestionnaire de compte Rokt pour vous assurer que les placements Rokt sont configurés de manière cohérente.
Fonctions optionnelles
Fonction | Objectif |
---|---|
Rokt.close() | Utilisé pour fermer automatiquement les placements en superposition. |
Placements intégrés
Les placements intégrés partagent toutes les mêmes recommandations et exigences que les placements en superposition ci-dessus, mais vous permettent d'intégrer les vues de placement dans votre interface utilisateur. Nous utiliserons également cette section pour fournir des exemples pour les différentes fonctionnalités avancées permises par Rokt.
La classe MPRoktEventCallback
, qui est passée à Rokt via le paramètre callbacks
, vous permet de répondre à divers événements qui se produisent lors de la génération et de l'affichage d'un placement.
- Swift
- Objective-C
import mParticle_Apple_SDK
let attributes = [
"email": "test@gmail.com",
"firstname": "Jenny",
"lastname": "Smith",
"billingzipcode": "07762",
"confirmationref": "54321"
]
let roktFrame = CGRect(x: 0, y: 0, width: 320, height: 50)
let roktView = MPRoktEmbeddedView(frame: roktFrame)
let embeddedViews = ["RoktEmbedded1": roktView]
let roktConfig = MPRoktConfig()
roktConfig.colorMode = .light
let callbacks = MPRoktEventCallback()
callbacks.onLoad = {
// Callback optionnel pour lorsque le placement Rokt se charge
}
callbacks.onUnLoad = {
// Callback optionnel pour lorsque le placement Rokt se décharge
}
callbacks.onShouldShowLoadingIndicator = {
// Callback optionnel pour afficher un indicateur de chargement
}
callbacks.onShouldHideLoadingIndicator = {
// Callback optionnel pour masquer un indicateur de chargement
}
callbacks.onEmbeddedSizeChange = { (placement: String, size: CGFloat) in
// Callback optionnel pour obtenir le placement sélectionné et la hauteur requise par le placement chaque fois que la hauteur du placement change
}
MParticle.sharedInstance().rokt.selectPlacements("RoktExperience", attributes: attributes, embeddedViews: embeddedViews, config: roktConfig, callbacks: callbacks)
#import <mParticle_Apple_SDK/mParticle.h>
NSDictionary *attributes = @{
@"email": @"test@gmail.com",
@"firstname": @"Jenny",
@"lastname": @"Smith",
@"billingzipcode": @"07762",
@"confirmationref": @"54321"
};
CGRect roktFrame = CGRectMake(0, 0, 320, 50);
MPRoktEmbeddedView *roktView = [[MPRoktEmbeddedView alloc] initWithFrame:roktFrame];
NSDictionary *embeddedViews = @{@"RoktEmbedded1": roktView};
MPRoktConfig *roktConfig = [[MPRoktConfig alloc] init];
roktConfig.colorMode = MPColorModeLight;
MPRoktEventCallback *callbacks = [[MPRoktEventCallback alloc] init];
callbacks.onLoad = ^{
// Callback optionnel pour lorsque le placement Rokt se charge
};
callbacks.onUnLoad = ^{
// Callback optionnel pour lorsque le placement Rokt se décharge
};
callbacks.onShouldShowLoadingIndicator = ^{
// Callback optionnel pour afficher un indicateur de chargement
};
callbacks.onShouldHideLoadingIndicator = ^{
// Callback optionnel pour masquer un indicateur de chargement
};
callbacks.onEmbeddedSizeChange = ^(NSString *placement, CGFloat size) {
// Callback optionnel pour obtenir le selectedPlacement et la hauteur requise par le placement chaque fois que la hauteur du placement change
};
[[MParticle sharedInstance].rokt selectPlacements:@"RoktExperience" attributes:attributes embeddedViews:embeddedViews config:roktConfig callbacks:callbacks];
Pour une liste complète des attributs pris en charge, voir Data Attributes.
Votre équipe Rokt dédiée configurera vos placement layouts pour vous afin qu'ils correspondent à votre marque et ligne directrice de style UX.
API des événements globaux
Le SDK fournit le statut du SDK via l'API Rokt.globalEvents
.
import Rokt_Widget
Rokt.globalEvents() { roktEvent in
if let initEvent = roktEvent as? RoktEvent.InitComplete {
print("Initialisation de Rokt terminée avec statut : \(initEvent.success)")
}
}
API des événements
Le SDK fournit les événements et le statut de chaque vue via l'API Rokt.events
.
- Swift
- Objective-C
import mParticle_Apple_SDK
MParticle.sharedInstance().rokt.events("RoktLayout", onEvent: { roktEvent in
if let event = roktEvent as? MPRoktEvent.MPRoktShowLoadingIndicator {
} else if let event = roktEvent as? MPRoktEvent.MPRoktHideLoadingIndicator {
} else if let event = roktEvent as? MPRoktEvent.MPRoktPlacementInteractive {
} else if let event = roktEvent as? MPRoktEvent.MPRoktPlacementReady {
} else if let event = roktEvent as? MPRoktEvent.MPRoktOfferEngagement {
} else if let event = roktEvent as? MPRoktEvent.MPRoktOpenUrl {
} else if let event = roktEvent as? MPRoktEvent.MPRoktPositiveEngagement {
} else if let event = roktEvent as? MPRoktEvent.MPRoktPlacementClosed {
} else if let event = roktEvent as? MPRoktEvent.MPRoktPlacementCompleted {
} else if let event = roktEvent as? MPRoktEvent.MPRoktPlacementFailure {
} else if let event = roktEvent as? MPRoktEvent.MPRoktFirstPositiveEngagement {
} else if let event = roktEvent as? MPRoktEvent.MPRoktCartItemInstantPurchase {
}
})
#import <mParticle_Apple_SDK/mParticle.h>
[[MParticle sharedInstance].rokt events:@"RoktLayout" onEvent:^(MPRoktEvent *event) {
NSLog(@"Événement déclenché de type %@", [event class]);
if ([event isKindOfClass:[MPRoktInitComplete class]]) {
} else if ([event isKindOfClass:[MPRoktShowLoadingIndicator class]]) {
} else if ([event isKindOfClass:[MPRoktHideLoadingIndicator class]]) {
} else if ([event isKindOfClass:[MPRoktPlacementInteractive class]]) {
} else if ([event isKindOfClass:[MPRoktPlacementReady class]]) {
} else if ([event isKindOfClass:[MPRoktOfferEngagement class]]) {
} else if ([event isKindOfClass:[MPRoktOpenUrl class]]) {
} else if ([event isKindOfClass:[MPRoktPositiveEngagement class]]) {
} else if ([event isKindOfClass:[MPRoktPlacementClosed class]]) {
} else if ([event isKindOfClass:[MPRoktPlacementCompleted class]]) {
} else if ([event isKindOfClass:[MPRoktPlacementFailure class]]) {
} else if ([event isKindOfClass:[MPRoktFirstPositiveEngagement class]]) {
} else if ([event isKindOfClass:[MPRoktCartItemInstantPurchase class]]) {
}
}];
Événement | Description | Paramètres |
---|---|---|
MPRoktShowLoadingIndicator | Déclenché avant que le SDK appelle le backend Rokt | |
MPRoktHideLoadingIndicator | Déclenché lorsque le SDK reçoit un succès ou un échec du backend Rokt | |
MPRoktPlacementInteractive | Déclenché lorsqu'un emplacement a été rendu et est interactif | placementId: String |
MPRoktPlacementReady | Déclenché lorsqu'un emplacement est prêt à être affiché mais n'a pas encore rendu de contenu | placementId: String |
MPRoktOfferEngagement | Déclenché lorsque l'utilisateur interagit avec l'offre | placementId: String |
MPRoktOpenUrl | Déclenché lorsque l'utilisateur appuie sur une URL qui est configurée pour être envoyée à l'application partenaire | placementId: String, url: String |
MPRoktPositiveEngagement | Déclenché lorsque l'utilisateur s'engage positivement avec l'offre | placementId: String |
MPRoktPlacementClosed | Déclenché lorsque l'utilisateur ferme un emplacement | placementId: String |
MPRoktPlacementCompleted | Déclenché lorsque la progression de l'offre atteint la fin et qu'aucune autre offre n'est disponible à afficher. Également déclenché lorsque le cache est atteint mais que l'emplacement récupéré ne sera pas affiché car il a été précédemment rejeté | placementId: String |
MPRoktPlacementFailure | Déclenché lorsque qu'un emplacement n'a pas pu être affiché en raison d'une défaillance ou lorsqu'aucun emplacement n'est disponible à afficher | placementId: String (optionnel) |
MPRoktFirstPositiveEngagement | Déclenché lorsque l'utilisateur s'engage positivement avec l'offre pour la première fois | placementId: String, setFulfillmentAttributes: func (attributes: [String: String]) |
MPRoktCartItemInstantPurchase | Déclenché lorsqu'un achat est effectué via un emplacement | placementId: String, name: String?, cartItemId: String, catalogItemId: String, currency: String, description: String, linkedProductId: String?, providerData: String, quantity: NSDecimalNumber?, totalPrice: NSDecimalNumber?, unitPrice: NSDecimalNumber? |
Annexe
Débogage
Vous pouvez activer les journaux de débogage en configurant l'option suivante lors de l'initialisation du SDK :
Rokt.setLoggingEnabled(enable: true)
Après avoir mis en œuvre les emplacements et le suivi des vues d'écran en suivant les instructions ci-dessus, vous pourriez vouloir implémenter un suivi d'événements supplémentaire.
Utilisation des configurations d'application
Les applications peuvent maintenant envoyer les paramètres de configuration depuis leur propre environnement d'application. Cela permet au SDK iOS d'utiliser des configurations d'application personnalisées au lieu de se fier uniquement aux valeurs par défaut du système.
Objet ColorMode
Valeur | Description |
---|---|
light | L'application est en mode clair |
dark | L'application est en mode sombre |
system | L'application utilise le mode couleur système par défaut |
- Swift
- Objective-C
// si l'application ne supporte que le mode clair.
let roktConfig = MPRoktConfig()
roktConfig.colorMode = .light
MParticle.sharedInstance().rokt.selectPlacements("RoktExperience", attributes: attributes, embeddedViews: nil, callbacks: nil, config: roktConfig)
// si l'application ne supporte que le mode clair.
MPRoktConfig *roktConfig = [[MPRoktConfig alloc] init];
roktConfig.colorMode = MPColorModeLight;
[[MParticle sharedInstance].rokt selectPlacements:@"RoktExperience" attributes:attributes embeddedViews:embeddedViews config:roktConfig callbacks:callbacks];
Objet CacheConfig
Paramètre | Description |
---|---|
cacheDuration | Intervalle de temps optionnel pour lequel le SDK Rokt doit mettre en cache l'expérience. La valeur maximale autorisée est de 90 minutes et la valeur par défaut (si la valeur n'est pas fournie ou invalide) est de 90 minutes. |
cacheAttributes | Attributs optionnels à utiliser comme clé de cache. Si null, tous les attributs envoyés dans Rokt.execute seront utilisés comme clé de cache. |
- Swift
- Objective-C
// pour mettre en cache l'expérience pendant 1200 secondes, en utilisant les attributs email et orderNumber comme clé de cache.
let roktConfig = MPRoktConfig()
roktConfig.cacheDuration = TimeInterval(1200)
roktConfig.cacheAttributes = ["email": "j.smith@example.com", "orderNumber": "123"]
MParticle.sharedInstance().rokt.selectPlacements("RoktExperience", attributes: attributes, embeddedViews: nil, callbacks: nil, config: roktConfig)
// pour mettre en cache l'expérience pendant 1200 secondes, en utilisant les attributs email et orderNumber comme clé de cache.
MPRoktConfig *roktConfig = [[MPRoktConfig alloc] init];
roktConfig.cacheDuration = @(1200);
roktConfig.cacheAttributes = @{@"email": @"j.smith@example.com", @"orderNumber": @"123"};
[[MParticle sharedInstance].rokt selectPlacements:@"RoktExperience" attributes:attributes embeddedViews:embeddedViews config:roktConfig callbacks:callbacks];
Support de SwiftUI avec MPRoktLayout
Si votre application est principalement écrite en SwiftUI, nous avons fourni le composant MPRoktLayout
pour une approche déclarative plus moderne pour intégrer les placements Rokt dans votre application iOS.
La classe MPRoktLayout
offre une méthode compatible avec SwiftUI pour afficher les placements Rokt sans appeler manuellement selectPlacements
, en supportant à la fois les types de placements intégrés et superposés.
Ajouter le composant SwiftUI
import SwiftUI
import mParticle_Apple_SDK
import mParticle_Rokt_Swift
struct OrderConfirmationView: View {
let attributes = [
"email": "test@gmail.com",
"firstname": "Jenny",
"lastname": "Smith",
"billingzipcode": "07762",
"confirmationref": "54321"
]
@State private var sdkTriggered = true
var body: some View {
VStack(alignment: .leading) {
// Autres composants de l'UI
Text("Order Confirmation")
.font(.title)
// Placement Rokt utilisant SwiftUI
MPRoktLayout(
sdkTriggered: $sdkTriggered,
viewName: "RoktExperience",
locationName: "RoktEmbedded1", // Pour les placements intégrés
attributes: attributes,
config: roktConfig, // MPRoktConfig optionnel
onEvent: { roktEvent in
// Optionnel : Gérer les différents types d'événements, voir ci-dessus
}
).roktLayout
}
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
}
}
Paramètres
Paramètre | Type | Description |
---|---|---|
sdkTriggered | Bool | Contrôle quand le placement doit être déclenché |
viewName | String | Le nom de la vue/expérience Rokt (par exemple, "RoktExperience") |
locationName | String? | Nom de lieu optionnel pour les placements intégrés (par exemple, "RoktEmbedded1") |
attributes | [String: String] | Dictionnaire d'attributs à transmettre au placement |
config | MPRoktConfig? | Objet de configuration optionnel pour le mode couleur, le cache, etc. |
onEvent | ((MPRoktEvent) -> Void)? | Callback optionnel pour gérer tous les événements de placement |
Suivre des événements personnalisés
Vous pouvez définir et suivre des événements personnalisés en appelant logEvent
et en passant le nom de l'événement, le type d'événement, et un tableau optionnel contenant des attributs personnalisés pour l'événement.
- Swift
- Objective-C
if let event = MPEvent(name: "Video Watched", type: .navigation) {
event.customAttributes = ["category": "Destination Intro", "title": "Paris"]
MParticle.sharedInstance().logEvent(event)
}
MPEvent *event = [[MPEvent alloc] initWithName:@"Video Watched" type:MPEventTypeNavigation];
if (event) {
event.customAttributes = @{
@"category": @"Destination Intro",
@"title": @"Paris"
};
[[MParticle sharedInstance] logEvent:event];
}
Les types d'événements personnalisés supportés sont :
- Swift
- Objective-C
navigation
- Suivre les flux de navigation utilisateur et les transitions de page au sein de votre applicationlocation
- Enregistrer les interactions et mouvements basés sur la localisation de l'utilisateursearch
- Capturer les requêtes de recherche et les actions utilisateur liées à la recherchetransaction
- Enregistrer les transactions financières et les activités liées aux achatsuserContent
- Suivre le contenu généré par l'utilisateur comme les avis, commentaires ou publicationsuserPreference
- Enregistrer les paramètres, préférences et choix de personnalisation de l'utilisateursocial
- Capturer les interactions sur les réseaux sociaux et les activités de partage
MPEventTypeNavigation
- Suivre les flux de navigation utilisateur et les transitions de page au sein de votre applicationMPEventTypeLocation
- Enregistrer les interactions basées sur la localisation de l'utilisateur et ses mouvementsMPEventTypeSearch
- Capturer les requêtes de recherche et les actions utilisateur liées à la rechercheMPEventTypeTransaction
- Consigner les transactions financières et les activités liées aux achatsMPEventTypeUserContent
- Suivre le contenu généré par l'utilisateur comme les avis, commentaires ou publicationsMPEventTypeUserPreference
- Enregistrer les paramètres utilisateur, préférences et choix de personnalisationMPEventTypeSocial
- Capturer les interactions sur les réseaux sociaux et les activités de partage
Suivi des événements de commerce
Le suivi d'un événement de commerce nécessite trois étapes :
- Définir le ou les produits qui sont achetés dans une variable en utilisant
MPProduct.init
- Créer un objet MPTransactionAttributes pour enregistrer les détails qui résument la transaction
- Définir le type d'action et d'événement du produit, puis appeler la méthode
logEvent
, incluant votre définition de produit et le résumé de la transaction
- Swift
- Objective-C
// 1. Définir le ou les produits
let product = MPProduct.init(name: "Double Room",
sku: "econ-1",
quantity: 4,
price: 100.00)
// 2. Résumer la transaction
let attributes = MPTransactionAttributes.init()
attributes.transactionId = "foo-transaction-id"
attributes.revenue = 430.00
attributes.tax = 30.00
// 3. Enregistrer l'événement de commerce.
// Plusieurs types d'"actions" sont pris en charge, tels que AddToCart et Checkout. Cet exemple utilise l'action de produit Purchase.
let action = MPCommerceEventAction.purchase;
let event = MPCommerceEvent.init(action: action, product: product)
event.transactionAttributes = attributes
MParticle.sharedInstance().logEvent(event)
// 1. Définir le ou les produits
MPProduct *product = [[MPProduct alloc] initWithName:@"Double Room"
sku:@"econ-1"
quantity:@4
price:@100.00];
// 2. Résumer la transaction
MPTransactionAttributes *attributes = [[MPTransactionAttributes alloc] init];
attributes.transactionId = @"foo-transaction-id";
attributes.revenue = @430.00;
attributes.tax = @30.00;
// 3. Enregistrer l'événement commercial
MPCommerceEvent *event = [[MPCommerceEvent alloc] initWithAction:MPCommerceEventActionPurchase
product:product];
event.transactionAttributes = attributes;
[[MParticle sharedInstance] logEvent:event];
Lors de l'enregistrement d'une action produit, vous devez spécifier l'un des types d'action suivants :
- Swift
- Objective-C
AddToCart
RemoveFromCart
Checkout
CheckoutOption
Click
ViewDetail
Purchase
Refund
AddToWishlist
RemoveFromWishlist
Unknown
MPCommerceEventActionAddToCart
MPCommerceEventActionRemoveFromCart
MPCommerceEventActionCheckout
MPCommerceEventActionCheckoutOption
MPCommerceEventActionClick
MPCommerceEventActionViewDetail
MPCommerceEventActionPurchase
MPCommerceEventActionRefund
MPCommerceEventActionAddToWishlist
MPCommerceEventActionRemoveFromWishlist
MPCommerceEventActionUnknown