Tous les produits
Search
Centre de documentation

Fraud Detection:Device Risk SDK iOS Integration

Dernière mise à jour :Aug 26, 2026

Cette rubrique décrit la procédure d'intégration du SDK Device Risk pour iOS.

Remarques sur l'utilisation

Le SDK iOS présente les limitations suivantes :

  • iOS 9.0 ou version ultérieure est requis.

Prérequis

  • Pour respecter les obligations de conformité en matière de confidentialité applicables lors de l'intégration d'un SDK tiers et réduire les risques de violation de la vie privée, utilisez la dernière version publiée sur le centre de documentation Alibaba Cloud. Avant d'utiliser Device Fraud Detection, consultez les règles de traitement des informations personnelles ainsi que la Politique de confidentialité du SDK Fraud Detection, et intégrez le SDK conformément aux Directives de conformité du SDK.

Autorisations

Afin d'améliorer la précision de la détection des risques, ajoutez les champs suivants et leurs descriptions d'utilisation au fichier Info.plist de votre application avant sa publication sur l'App Store. L'omission de la déclaration des champs requis peut entraîner le rejet de votre application lors de la révision par l'App Store.

Autorisation

Requis

Description

NSLocalNetworkUsageDescription

Non (recommandé)

Obtient la connectivité de l'appareil au sein du réseau local pour détecter des risques tels que les fermes d'appareils et le contrôle groupé.

NSLocationWhenInUseUsageDescription

Non (recommandé)

Obtient les informations de localisation de l'appareil pour détecter des risques tels que la falsification de la position géographique.

NSUserTrackingUsageDescription

Non (recommandé)

Obtient les informations IDFA pour améliorer la stabilité de l'empreinte numérique de l'appareil.

Configuration des dépendances

  1. Téléchargez le SDK iOS. Le SDK est un framework statique standard pour Xcode. Générez une AppKey dans la console depuis laquelle vous téléchargez le SDK.

    • Le fichier framework à architecture unique pèse environ 2,5 Mo.

    • Pour garantir les capacités anti-rétro-ingénierie et la sécurité des données lors de la transmission réseau, le SDK inclut d'importantes opérations d'obscurcissement du code, de chiffrement et de déchiffrement. Par conséquent, la taille du SDK est relativement importante.

  2. Copiez deviceiOS.framework depuis le package SDK vers le répertoire de votre projet iOS.

  3. Dans les paramètres du projet, choisissez Build Phases -> Link Binary With Libraries, puis ajoutez deviceiOS.framework et ses dépendances :

    deviceiOS.framework
    CoreTelephony.framework
    CoreLocation.framework
    Security.framework
    libresolv.tbd
    libz.tbd
    libc++.tbd
    // Add the following frameworks if you use the IDFA version
    AppTrackingTransparency.framework
    AdSupport.framework
  4. Selon vos besoins métier, décidez si vous souhaitez utiliser une version du SDK qui collecte des données sensibles telles que IDFA. Pour plus d'informations, consultez la description figurant dans la liste de téléchargement du SDK.

Appel du SDK

Une fois la configuration ci-dessus terminée, suivez ces trois étapes pour finaliser l'intégration côté client :

  • Initialisation (initDevice)

  • Obtention du jeton client (getDeviceToken)

  • Envoi du jeton à votre serveur métier

1. Initialisation (initDevice)

Cette fonction initialise le SDK et collecte les informations. Appelez cette fonction aussi tôt que possible dans les scénarios de détection des risques, à condition de respecter les exigences de conformité. Vous n'avez besoin d'appeler cette fonction qu'une seule fois par lancement de l'application.

  • Prototype de la fonction

@interface SecurityDevice : NSObject
/**
 * Initialize the device fingerprint SDK.
 */
- (void)initDevice:(NSString *)userAppKey :(void (^)(int))initCallback;

/**
 * Initialize the SDK with options.
 */
- (void)initDevice:(NSString *)userAppKey withOptions:(NSMutableDictionary *)options callback:(void (^)(int))initCallback;

@end

Paramètres

  • userAppKey : identifie votre application. Vous pouvez demander l'AppKey dans la section Gestion des applications Device de la console Alibaba Cloud Management Console.

  • initCallback : écouteur de rappel d'initialisation. Utilisez ce rappel pour vérifier si l'initialisation a réussi. Valeur par défaut : nil. Pour connaître les valeurs valides du champ code, consultez les Valeurs de retour d'état.

  • options : paramètres optionnels de collecte d'informations. Valeur par défaut : nil. Le tableau suivant décrit les options disponibles.

Paramètre

Description

Exemple

IPv6

Indique s'il faut utiliser un nom de domaine IPv6 pour signaler les informations de l'appareil. 0 (par défaut) : utilise un nom de domaine IPv4. 1 : utilise un nom de domaine IPv6.

"0"

CustomUrl

Nom de domaine du serveur auquel les données sont signalées. Spécifiez ce paramètre uniquement lorsque vous signalez des données à un site spécifique. Par défaut, il n'est pas nécessaire de configurer ce paramètre.

"https://cloudauth-device.aliyuncs.com"

CustomHost

Hôte du serveur auquel les données sont signalées. Ce paramètre doit être utilisé conjointement avec CustomUrl. Par défaut, il n'est pas nécessaire de configurer l'un ou l'autre de ces paramètres.

"cloudauth-device.aliyuncs.com"

DataType

Type de données d'appareil non collectées. Ce paramètre est vide par défaut (recommandé), ce qui indique que toutes les données sont collectées. Le tableau suivant décrit les types de données configurables.

COLLECT_NO_EXTRA_DEVICE_DATA

Paramètre DataType

Type de données

Description

Champs d'informations sur l'appareil

COLLECT_NO_EXTRA_DEVICE_DATA

Informations étendues sur l'appareil

Inclut la liste des applications utilisées pour des activités frauduleuses, l'adresse IP du réseau local, l'adresse IP DNS, les informations sur le réseau Wi-Fi connecté (SSID et BSSID) et les informations de localisation.

Paramètres CustomUrl et CustomHost

Pour signaler des données à un site spécifique, définissez CustomUrl et CustomHost sur une région spécifique. Par défaut, il n'est pas nécessaire de configurer ces paramètres.

Région

Endpoint

Singapour (par défaut)

CustomUrl : https://cloudauth-device.ap-southeast-1.aliyuncs.com

CustomHost : cloudauth-device.ap-southeast-1.aliyuncs.com

Chine (Hong Kong)

CustomUrl : https://cloudauth-device.cn-hongkong.aliyuncs.com

CustomHost : cloudauth-device.cn-hongkong.aliyuncs.com

Allemagne (Francfort)

CustomUrl : https://cloudauth-device.eu-central-1.aliyuncs.com

CustomHost : cloudauth-device.eu-central-1.aliyuncs.com

États-Unis (Silicon Valley)

CustomUrl : https://cloudauth-device.us-west-1.aliyuncs.com

CustomHost : cloudauth-device.us-west-1.aliyuncs.com

  • Exemple

NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
[options setValue:@"0" forKey:@"IPv6"];       // Use IPv4
// Specify a custom region to which data is reported
// [options setValue:@"xxx" forKey:@"CustomUrl"];  Set the reporting URL
// [options setValue:@"xxx" forKey:@"CustomHost"]; Set the reporting host

// Standard call (recommended)
[[SecurityDevice sharedInstance] initDevice:@"<your AppKey>" withOptions:options callback:nil];

// Call with a callback
[[SecurityDevice sharedInstance] initDevice:@"<your AppKey>" withOptions:options callback:^(int code) {
    NSString * initResult = [NSString stringWithFormat: @"Initialization result: %d", code];
    NSLog(@"%@", initResult);

    if (SC_SUCCESS != code) {
        NSLog(@"Initialization failed");
    } else {
        NSLog(@"Initialization succeeded");
    }
}];

2. Obtention du jeton client (getDeviceToken)

Obtenez le jeton client et signalez-le à votre serveur métier. Le serveur appelle ensuite l'API de détection de fraude pour interroger les informations sur les risques liés à l'appareil.

  • Assurez-vous que l'intervalle entre l'appel à initDevice et l'appel à getDeviceToken est d'au moins 3 secondes, ou appelez getDeviceToken dans le rappel indiquant une initialisation réussie.

  • (Recommandé) Spécifiez le paramètre bizId lors de l'appel à getDeviceToken. Cela lie le jeton à un ID métier unique. Transmettez le même ID lors de l'interrogation du résultat sur le serveur pour vérifier que le jeton n'a pas été altéré.

  • (Recommandé) Appelez getDeviceToken sur un thread secondaire de l'application afin d'éviter les plantages qu'un appel de longue durée pourrait provoquer.

  • Prototype de la fonction

@interface SecurityDevice : NSObject
- (SecurityToken *)getDeviceToken;
- (SecurityToken *)getDeviceToken:(NSString *)bizId;
@end
Important

La longueur de la chaîne du jeton dépend des conditions réseau. Dans de bonnes conditions réseau, la chaîne du jeton fait environ 600 octets. Dans de mauvaises conditions réseau, elle fait environ 2,5 Ko.

Si un grand nombre de jetons longs apparaissent dans votre activité métier :

Tout d'abord, assurez-vous que le réseau client est stable.

Ensuite, vérifiez que l'intervalle entre l'appel à initDevice et l'appel à getDeviceToken est d'au moins 3 secondes, ou appelez getDeviceToken dans le rappel indiquant une initialisation réussie.

  • Exemple

// Specify bizId to prevent deviceToken from being tampered with. Replace the example value with your business ID.
NSString *bizId = @"1234567890abcdef******";
SecurityToken *deviceToken = [[SecurityDevice sharedInstance] getDeviceToken:bizId];

if (deviceToken == nil || SC_SUCCESS != deviceToken.code) {
    NSLog(@"Failed to obtain the token. Code: %d", deviceToken.code);
} else {
    NSLog(@"The token is obtained. You can query risk tags. Token: %@", deviceToken.token);
}
Important

Si vous utilisez les informations IDFA ou de localisation, la politique de confidentialité d'Apple exige que, outre la déclaration des autorisations correspondantes dans le fichier Info.plist de votre application, vous demandiez l'autorisation de l'utilisateur via une boîte de dialogue. L'environnement de développement doit utiliser Xcode 12 ou version ultérieure.

Obtenez le jeton client dans les scénarios métier nécessitant une détection des risques, tels que l'inscription et les campagnes promotionnelles, et signalez le jeton à votre serveur métier pour les interrogations de risque.

Transmettez deviceToken conjointement avec d'autres paramètres à l'API de détection de fraude, comme décrit dans les Paramètres d'événement Device Fraud Detection.

3. Envoi du jeton à votre serveur métier

Une fois que vous avez obtenu le deviceToken, transmettez-le en tant que paramètre à votre serveur métier. Le serveur appelle l'API Alibaba Cloud Device Fraud Detection avec le deviceToken pour interroger et vérifier les informations sur les risques liés à l'appareil.

Valeurs de retour d'état

SecurityCode

Code

Description

SC_SUCCESS

10000

Le SDK est initialisé.

SC_NOT_INIT

10001

Le SDK n'est pas initialisé.

SC_NOT_PERMISSION

10002

Les autorisations de base requises par le SDK ne sont pas entièrement accordées.

SC_UNKNOWN_ERROR

10003

Une erreur système inconnue s'est produite.

SC_NETWORK_ERROR

10004

Une erreur réseau s'est produite.

SC_NETWORK_ERROR_EMPTY

10005

Une erreur réseau s'est produite. Le contenu renvoyé est une chaîne vide.

SC_NETWORK_ERROR_INVALID

10006

Le format de la réponse réseau n'est pas valide.

SC_PARSE_SRV_CFG_ERROR

10007

Échec de l'analyse de la configuration du serveur.

SC_NETWORK_RET_CODE_ERROR

10008

La passerelle a renvoyé une réponse d'échec.

SC_APPKEY_EMPTY

10009

L'AppKey est vide.

SC_PARAMS_ERROR

10010

Une autre erreur de paramètre s'est produite.

SC_FGKEY_ERROR

10011

Une erreur de calcul de clé s'est produite.

SC_APPKEY_ERROR

10012

L'AppKey n'est pas valide.

Exemple de code complet

static NSString *USER_APP_KEY = @"<Obtain the AppKey in the console>";

- (void)viewDidLoad {
    [super viewDidLoad];

    // Integration example
    [self doStandard];
}

- (void)doStandard {
    // Initialize the SDK
    // You need to call this method only once in the app lifecycle
    [self doInit];

    dispatch_async(dispatch_get_global_queue(NULL, NULL), ^{
        // This delay is for demonstration only. No sleep is needed in production.
        [NSThread sleepForTimeInterval:2.0];

        // Obtain the token
        [self doGetToken];
    });
}

- (void)doInit {
    NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
    [options setValue:@"0" forKey:@"IPv6"];         // Use IPv4
    // Specify a custom region to which data is reported
    // [options setValue:@"https://cloudauth-device.aliyuncs.com" forKey:@"CustomUrl"];
    // [options setValue:@"cloudauth-device.aliyuncs.com" forKey:@"CustomHost"];
    [[SecurityDevice sharedInstance] initDevice:USER_APP_KEY withOptions:options callback:nil];
}

- (void)doGetToken {
    // Specify bizId to prevent deviceToken from being tampered with. Replace the example value with your business ID.
    NSString *bizId = @"1234567890abcdef******";
    SecurityToken *deviceToken = [[SecurityDevice sharedInstance] getDeviceToken:bizId];

    if (deviceToken == nil || SC_SUCCESS != deviceToken.code) {
        NSLog(@"Failed to obtain the token. The result cannot be used to query risk tags.");
    } else {
        NSLog(@"The token is obtained. You can query risk tags. Token: %@", deviceToken.token);
    }
}

FAQ

Pour les questions fréquemment posées concernant l'intégration du SDK Device Fraud Detection, consultez la FAQ sur l'intégration du SDK Device Fraud Detection.