Utilisez les API du SDK iOS ARMS Real User Monitoring (RUM) pour configurer la surveillance, signaler des données personnalisées et suivre les ressources réseau dans vos applications iOS.
Configuration au démarrage
Définir l'endpoint
Définit l'endpoint de votre application. Appelez cette méthode avant start.
@objc
public static func setEndpoint(_ endpoint: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| endpoint | Adresse de l'endpoint | La longueur de la chaîne doit être supérieure à 0 et inférieure à 256 | L'appel API échoue, le SDK s'arrête |
Définir le workspace
Définit le workspace de votre application. Appelez cette méthode avant start.
@objc
public static func setWorkspace(_ workspace: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| workspace | Adresse du workspace | La longueur de la chaîne doit être supérieure à 0 et inférieure à 256 | L'appel API échoue, l'initialisation du SDK échoue |
Démarrer le SDK
Initialise le SDK avec l'ID de service spécifié.
@objc(start:)
public static func start(_ serviceId: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| serviceId | ServiceId | ID d'application unique généré par la plateforme Real User Monitoring | L'appel API échoue, le SDK s'arrête |
Définir un ID d'appareil personnalisé
Définit un ID d'appareil personnalisé qui remplace celui obtenu automatiquement.
@objc
public static func setDeviceID(_ deviceID: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| deviceID | ID d'appareil personnalisé | La longueur de la chaîne doit être supérieure à 0 et inférieure à 256, sans caractères spéciaux (seules les lettres, chiffres, deux-points, espaces, tirets bas _, tirets -, points et @ sont pris en charge) | L'appel API échoue, ce paramètre est invalide |
Définir une version d'application personnalisée
Définit une version d'application personnalisée que le SDK signale au lieu de celle détectée automatiquement.
@objc
public static func setAppVersion(_ appVersion: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| appVersion | Version d'application personnalisée | La longueur de la chaîne doit être supérieure à 0 et inférieure à 64 | L'appel API échoue, ce paramètre est invalide |
Définir le canal de l'application
Définit un ID de canal pour identifier le canal de distribution de votre application.
@objc
public static func setChannelID(_ channelID: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| channelID | ID de canal personnalisé | La longueur de la chaîne doit être supérieure à 0 et inférieure à 256 | L'appel API échoue, ce paramètre est invalide |
Exclure des classes spécifiques
Ajoute un nom de classe à l'ensemble d'exclusion du swizzle afin que les classes correspondantes ignorent l'instrumentation automatique. Utilisez cette méthode pour exclure les classes que vous ne souhaitez pas surveiller ou qui causent des problèmes de compatibilité. Vous pouvez appeler cette méthode plusieurs fois. Le SDK utilise la correspondance de sous-chaîne pour l'exclusion des noms de classe.
Cette méthode doit être appelée avant l'initialisation du SDK. Définissez les mots-clés d'exclusion avec soin pour éviter d'exclure involontairement des classes en raison de la correspondance de sous-chaîne.
// Exclude all classes containing StoreKit2ViewController
[AlibabaCloudRUM excludeClassFromTracking:@"StoreKit2ViewController"];
// Exclude all classes containing BTDemoStoreKit2MixedBridge
[AlibabaCloudRUM excludeClassFromTracking:@"BTDemoStoreKit2MixedBridge"];
Activer ou désactiver des modules
Active ou désactive des modules de collecte de données spécifiques. Les configurations locales ont priorité sur les configurations distantes. Les appels multiples s'accumulent.
Cette méthode doit être appelée avant l'initialisation du SDK. Les configurations locales ont priorité sur les configurations distantes. À utiliser avec précaution.
@objc(disableModule:)
public static func disableModule(_ module: AlibabaCloudModule)
@objc(enableModule:)
public static func enableModule(_ module: AlibabaCloudModule)
@objc(AlibabaCloudModule)
public enum AlibabaCloudModule: Int {
case crash = 0
case network = 1
case view = 2
case action = 3
case webView = 4
case longTask = 5
case appLaunch = 6
case appState = 7
case netState = 8
case customEvent = 9
case customLog = 10
case customMetric = 11
}
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| module | Module de collecte à activer ou désactiver | Doit être de type AlibabaCloudModule | Ce paramètre est invalide |
Exemple :
// Disable the network data collection module
[AlibabaCloudRUM disableModule:AlibabaCloudModuleNetwork];
Définir l'environnement de l'application
Spécifie l'environnement de l'application, tel que LOCAL, DAILY ou PROD.
@objc
public static func setEnvironment(_ env: Env)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| env | Valeur enum de l'environnement. Doit être appelé avant la méthode start | Enum Env, la valeur par défaut est PROD : LOCAL, DAILY, PRE, GRAY, PROD, NONE | L'appel API échoue, ce paramètre est invalide |
Collecte d'instantanés de ressources
Collecte les en-têtes et les informations de payload des requêtes et réponses HTTP. Par défaut, la collecte d'instantanés de ressources est désactivée. Vous devez l'activer explicitement.
Active la collecte d'instantanés de ressources pour la bibliothèque HttpClient en définissant un ResourceSnapshotProvider.
void setResourceSnapshotProvider(ResourceSnapshotProvider? provider)
Le SDK ne collecte aucun en-tête ni donnée de payload par défaut. Vous devez activer explicitement la collecte.
Vous êtes responsable de l'anonymisation des données. Le SDK ne filtre automatiquement aucune information sensible, y compris, mais sans s'y limiter, les mots de passe et les informations personnelles des utilisateurs.
Informations personnalisées
Définir le nom d'utilisateur
Définit un nom d'utilisateur pour associer les données de surveillance aux utilisateurs réels.
@objc
public static func setUserName(_ userID: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| userID | Identifiant du nom d'utilisateur | La chaîne peut être nulle ou vide. La longueur doit être inférieure ou égale à 256 caractères, sans caractères spéciaux (seuls les chiffres, lettres, deux-points, espaces, barres obliques, tirets bas, tirets, points et @ sont pris en charge) | L'appel API échoue, ce paramètre est invalide |
Définir des informations supplémentaires utilisateur personnalisées
Définit des informations utilisateur supplémentaires pour enrichir l'analyse des données au niveau utilisateur.
@objc(setUserExtraInfo:)
public static func setUserExtraInfo(_ extraInfo: [String: AnyObject])
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| extraInfo | Informations supplémentaires utilisateur | La mappe peut être nulle ou vide. La représentation JSON doit contenir 7 000 caractères ou moins | L'appel API échoue, ce paramètre est invalide |
Définir des propriétés globales
Définit des propriétés métier globales personnalisées. Une fois définies, toutes les nouvelles données héritent automatiquement de ces propriétés, permettant une corrélation entre les données de surveillance et les attributs métier.
@objc(setExtraInfo:)
public static func setExtraInfo(_ extraInfo: [String: AnyObject])
@objc(addExtraInfo:)
public static func addExtraInfo(_ extraInfo: [String: AnyObject])
L'appel de setExtraInfo efface les propriétés précédemment définies. Pour ajouter de nouvelles propriétés, utilisez plutôt addExtraInfo.
Signaler des exceptions personnalisées
Signale des données d'exception personnalisées pour l'analyse statistique.
@objc(setCustomException:causeBy:errorDump:)
public static func setCustomException(_ exceptionType: String, causeBy: String, errorDump: String)
| Paramètre | Description | Contraintes | Résultat en cas d'échec |
|---|---|---|---|
| exceptionType | Type d'exception (obligatoire) | La longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 256 caractères | L'appel API échoue, ce paramètre est invalide |
| causeBy | Cause de l'exception | La chaîne peut être nulle ou vide. La longueur doit être inférieure ou égale à 512 caractères ; le surplus est tronqué | - |
| errorDump | Détails de l'exception | La chaîne peut être nulle ou vide. La longueur doit être inférieure ou égale à 10 000 caractères ; le surplus est tronqué | - |
Signaler des événements personnalisés
Signale des données d'événements personnalisés pour l'analyse statistique.
Plusieurs versions surchargées sont disponibles pour différents besoins de rapport :
| Signature de méthode | Paramètres supplémentaires | Contraintes |
|---|---|---|
setCustomEvent(_ name: String) |
Aucun | name : la longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 256 caractères |
setCustomEvent(_ name: String, group: String?) |
group : groupe d'événements | group : la chaîne doit contenir 256 caractères ou moins ; le surplus est tronqué |
setCustomEvent(_ name: String, group: String?, snapshots: String?) |
group, snapshots : instantané d'événement | snapshots : la chaîne doit contenir 7 000 caractères ou moins ; le surplus est tronqué |
setCustomEvent(_ name: String, group: String?, value: Double) |
group, value : valeur d'événement | value : type Double |
setCustomEvent(_ name: String, group: String?, info: [String: String]?) |
group, info : informations supplémentaires sur l'événement | info : la représentation JSON doit contenir 7 000 caractères ou moins |
setCustomEvent(_ name: String, group: String?, snapshots: String?, value: Double) |
group, snapshots, value | Contraintes telles que décrites ci-dessus |
setCustomEvent(_ name: String, group: String?, snapshots: String?, info: [String: String]?) |
group, snapshots, info | Contraintes telles que décrites ci-dessus |
setCustomEvent(_ name: String, group: String?, value: Double, info: [String: String]?) |
group, value, info | Contraintes telles que décrites ci-dessus |
setCustomEvent(_ name: String, group: String?, snapshots: String?, value: Double, info: [String: String]?) |
group, snapshots, value, info (version avec tous les paramètres) | Contraintes telles que décrites ci-dessus |
Signaler des journaux personnalisés
Signale des informations de journal personnalisées pour l'analyse statistique.
| Signature de méthode | Paramètres supplémentaires | Contraintes |
|---|---|---|
setCustomLog(_ logInfo: String) |
Aucun | logInfo : la longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 10 000 caractères ; le surplus est tronqué |
setCustomLog(_ logInfo: String, name: String?) |
name : nom du journal | name : la longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 256 caractères |
setCustomLog(_ logInfo: String, name: String?, snapshots: String?) |
name, snapshots : instantané du journal | snapshots : la chaîne doit contenir 7 000 caractères ou moins ; le surplus est tronqué |
setCustomLog(_ logInfo: String, name: String?, snapshots: String?, level: String?, info: [String: String]?) |
name, snapshots, level : niveau du journal (par défaut : INFO), info : informations supplémentaires du journal | info : la représentation JSON partage la limite de longueur avec logInfo ; sinon, l'appel API échoue |
Signaler des ressources personnalisées
Signale des données de requête de ressource réseau personnalisées, y compris l'état de la requête, les métriques de performance et les informations de suivi de trace. Deux versions surchargées sont disponibles pour les scénarios de base et avancés.
Scénario de base
@objc(setCustomResource:success:url:method:statusCode:errorMessage:)
public static func setCustomResource(_ type: String, success: Bool, url: String, method: String, statusCode: Int, errorMessage: String?) -> Bool
| Paramètre | Type | Description | Contraintes |
|---|---|---|---|
| type | String | Type de ressource, tel que « js », « media », « api » | La longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 64 caractères ; le surplus est tronqué |
| success | Bool | Indique si la requête a réussi | true pour succès, false pour échec |
| url | String | URL complète de la requête | La longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 1 024 caractères ; le surplus est tronqué |
| method | String | Méthode de requête HTTP, telle que « GET », « POST », « PUT », « DELETE » | La longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 24 caractères ; le surplus est tronqué |
| statusCode | Int | Code d'état de la réponse HTTP | Code d'état HTTP, tel que 200, 404, 500 |
| errorMessage | String? | Message d'erreur, rempli uniquement lorsque la requête échoue | La longueur de la chaîne doit être supérieure à 0 et inférieure ou égale à 256 caractères ; le surplus est tronqué. Peut être nul |
Exemple :
// Swift - Successful GET request
let result = AlibabaCloudRUM.setCustomResource(
"API",
success: true,
url: "https://api.example.com/users",
method: "GET",
statusCode: 200,
errorMessage: nil
)
// Swift - Failed POST request
let result2 = AlibabaCloudRUM.setCustomResource(
"API",
success: false,
url: "https://api.example.com/login",
method: "POST",
statusCode: 401,
errorMessage: "Unauthorized access"
)
// Objective-C - Successful GET request
BOOL result = [AlibabaCloudRUM setCustomResource:@"API"
success:YES
url:@"https://api.example.com/users"
method:@"GET"
statusCode:200
errorMessage:nil];
// Objective-C - Failed POST request
BOOL result2 = [AlibabaCloudRUM setCustomResource:@"API"
success:NO
url:@"https://api.example.com/login"
method:@"POST"
statusCode:401
errorMessage:@"Unauthorized access"];
Scénario avancé
Étend la version de base avec des métriques de performance et des configurations de suivi de trace.
@objc(setCustomResource:success:url:method:statusCode:errorMessage:provider:tracing:measure:)
public static func setCustomResource(_ type: String, success: Bool, url: String, method: String, statusCode: Int, errorMessage: String?, provider: String?, tracing: AlibabaCloudTracingContext?, measure: AlibabaCloudResourceMeasure?) -> Bool
En plus des paramètres de base, la version avancée prend en charge :
provider: identifiant du fournisseur de services, tel que « CDN »tracing: informations de contexte de suivi de trace (AlibabaCloudTracingContext)measure: métriques de performance des ressources (AlibabaCloudResourceMeasure)
Types auxiliaires
AlibabaCloudTracingContext
Fournit un contexte pour le suivi distribué. Prend en charge les protocoles W3C Trace Context et SkyWalking V3.
W3C: protocole standard W3C Trace ContextSkywalkingV3: protocole Apache SkyWalking V3
AlibabaCloudResourceMeasure
Enregistre les métriques de performance des requêtes réseau.
| Propriété | Type | Description |
|---|---|---|
| duration | NSUInteger | Temps total consommé (ms) |
| size | NSUInteger | Taille des données de réponse (octets) |
| connectDuration | NSUInteger | Temps de connexion TCP (ms) |
| sslDuration | NSUInteger | Temps de handshake SSL/TLS (ms) |
| dnsDuration | NSUInteger | Temps de résolution DNS (ms) |
| redirectDuration | NSUInteger | Temps de redirection (ms) |
| firstByteDuration | NSUInteger | Temps jusqu'au premier octet (ms) |
| downloadDuration | NSUInteger | Temps de téléchargement (ms) |
Notes
Vérifiez la valeur de retour : Nous vous recommandons de vérifier la valeur de retour. Si false est renvoyé, l'appel API a échoué.
Rapport asynchrone : Un appel API réussi (renvoyant true) indique seulement que le SDK a accepté les données. Le rapport réel des données est asynchrone.