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
-
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.
Copiez
deviceiOS.frameworkdepuis le package SDK vers le répertoire de votre projet iOS.-
Dans les paramètres du projet, choisissez Build Phases -> Link Binary With Libraries, puis ajoutez
deviceiOS.frameworket 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 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 champcode, 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 à
initDeviceet l'appel àgetDeviceTokenest d'au moins 3 secondes, ou appelezgetDeviceTokendans le rappel indiquant une initialisation réussie.(Recommandé) Spécifiez le paramètre
bizIdlors 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
getDeviceTokensur 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
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);
}
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.