Todos los productos
Search
Centro de documentos

Web Application Firewall:Integrar el Anti-Bot SDK en aplicaciones de iOS

Última actualización: Sep 23, 2026

El Anti-Bot SDK firma cada solicitud que envía su aplicación de iOS. WAF verifica la firma para detectar y bloquear el tráfico de bots antes de que llegue a su servidor.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

  • iOS 9.0 o posterior en los dispositivos de destino.

  • App Protection comprado y habilitado. Consulte Procedure to enable App Protection.

  • El paquete del SDK de iOS (AliTigerTally_IDFA.framework o AliTigerTally_NOIDFA.framework). Envíe un ticket para obtener el SDK.

  • Su app key. Para obtenerla, inicie sesión en la consola de WAF, vaya a Protection Configurations > Website Protection, abra la pestaña Bot Management, active App Protection y haga clic en Obtain and Copy Appkey.

Cada cuenta de Alibaba Cloud tiene una app key que se comparte entre todos los nombres de dominio de su instancia de WAF. La misma app key funciona tanto para aplicaciones de Android como de iOS.

App Protection

Ejemplo de app key:

****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****

Elegir una versión del SDK

El SDK está disponible en dos versiones, según si su aplicación usa el Identifier for Advertisers (IDFA):

Versión

Archivo de framework

Cuándo usarla

IDFA

AliTigerTally_IDFA.framework

Su aplicación usa IDFA.

Non-IDFA

AliTigerTally_NOIDFA.framework

Su aplicación no usa IDFA.

Cómo funciona

  1. El SDK firma el cuerpo de la solicitud mediante vmpSign y devuelve un token de firma (wToken).

  2. Su aplicación adjunta wToken al encabezado de la solicitud HTTP y la envía.

  3. WAF analiza sintácticamente wToken en cada solicitud entrante, bloquea el tráfico malicioso y reenvía las solicitudes legítimas a su servidor.

Firme las solicitudes en eventos críticos para el negocio, como el inicio de sesión, el envío de pagos o cualquier acción que requiera protección.

Integrar el SDK

Paso 1: Configurar el proyecto de Xcode

Abra su proyecto de iOS en Xcode y copie el framework del SDK en el directorio del proyecto.

Paso 2: Agregar bibliotecas de dependencias

Agregue a continuación las bibliotecas a su destino:

Biblioteca

Versión sin IDFA

Versión con IDFA

libc++.tbd

Obligatorio

Obligatorio

CoreTelephony.framework

Obligatorio

Obligatorio

libresolv.9.tbd

Obligatorio

Obligatorio

AdSupport.framework

No obligatorio

Obligatorio

Paso 3: Agregar la marca del vinculador -ObjC

En Build Settings, agregue -ObjC a Other Linker Flags.

Paso 4: Importar el encabezado del SDK

Objective-C: agregue la importación a cualquier archivo de origen que llame al SDK:

// Non-IDFA version
#import <AliTigerTally_NOIDFA/AliTigerTally.h>

// IDFA version
#import <AliTigerTally_IDFA/AliTigerTally.h>

Swift: cree un archivo de encabezado puente y agregue la importación:

#ifndef TigerTally_sdk_Swift_h
#define TigerTally_sdk_Swift_h

// Non-IDFA version
#import <AliTigerTally_NOIDFA/AliTigerTally.h>
// IDFA version
#import <AliTigerTally_IDFA/AliTigerTally.h>

#endif /* TigerTally_sdk_Swift_h */

Después, establezca la ruta del encabezado puente en Build Settings > Objective-C Bridging Header.

Paso 5: Establecer un identificador de usuario (opcional)

Llame a setAccount para asociar un identificador de usuario con las solicitudes del SDK. Esto le permite construir políticas de protección de WAF más detalladas. Si se trata de usuarios invitados, omita esta llamada y pase directamente a initialize.

Sintaxis:

-(void)setAccount:(NSString*)account

Parámetro

Tipo

Descripción

account

NSString*

Identificador de usuario. Use un valor ofuscado en lugar de un identificador sin procesar.

Objective-C:

// Use a masked user ID
[[AliTigerTally sharedInstance] setAccount:@"testAccount"];

Swift:

AliTigerTally.sharedInstance().setAccount("testAccount")

Paso 6: Inicializar el SDK

Llame a initialize con su app key para iniciar el SDK y recopilar información del dispositivo. Vuelva a llamarlo cuando necesite actualizar la información del dispositivo.

Sintaxis:

-(bool)initialize:(NSString*)appKey

Parámetro

Tipo

Descripción

appKey

NSString*

Su clave de autenticación del SDK.

Devuelve true si la operación es exitosa y false si falla.

Objective-C:

NSString *appKey = @"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****";
if ([[AliTigerTally sharedInstance] initialize:appKey]) {
    NSLog(@"Initialization successful.");
} else {
    NSLog(@"Initialization failed.");
}

Swift:

let binit = AliTigerTally.sharedInstance().initialize("****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****")
if binit {
    NSLog("Initialization successful.")
} else {
    NSLog("Initialization failed.")
}

Paso 7: Firmar solicitudes

Llame a vmpSign para generar un token de firma correspondiente al cuerpo de la solicitud.

Sintaxis:

-(NSString*)vmpSign:(NSData*)inputBody

Parámetro

Tipo

Descripción

inputBody

NSData*

El cuerpo de la solicitud que se va a firmar.

Si la operación es exitosa, devuelve una cadena de firma (NSString*). A esta firma se le conoce como wToken.

Valores de retorno de error:

Valor de retorno

Causa

Solución

you must call initialize

No se llamó a initialize

Llame a initialize antes de vmpSign

you must input body

No se proporcionó inputBody

Pase el cuerpo de la solicitud al llamar a vmpSign

NULL

La inicialización no ha terminado

Vuelva a llamar a vmpSign

Objective-C:

if (![[AliTigerTally sharedInstance] initialize:@"****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****"]) {
    NSLog(@"Initialization failed.");
    return;
}
NSString *signBody = @"hello";
NSString *wToken = [[AliTigerTally sharedInstance] vmpSign:[signBody dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"wToken: %@", wToken);

Swift:

if !AliTigerTally.sharedInstance().initialize("****OpKLvM6zliu6KopyHIhmneb_****u4ekci2W8i6F9vrgpEezqAzEzj2ANrVUhvAXMwYzgY_****vc51aEQlRovkRoUhRlVsf4IzO9dZp6nN_****Wz8pk2TDLuMo4pVIQvGaxH3vrsnSQiK****") {
    NSLog("Initialization failed.")
    return
}
let signBody = "hello"
let token = AliTigerTally.sharedInstance().vmpSign(signData)
NSLog(token)

Paso 8: Enviar la solicitud firmada

Agregue wToken al encabezado de la solicitud HTTP y envíela.

Objective-C:

NSURL *url = [NSURL URLWithString:@"https://xxxxxx/test?id=123"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url
                                                       cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                   timeoutInterval:10];
[request setValue:wToken forHTTPHeaderField:@"wToken"];
request.HTTPMethod = @"post";
request.HTTPBody = [signBody dataUsingEncoding:NSUTF8StringEncoding];

NSURLSessionDataTask *dataTask = [[NSURLSession sharedSession]
    dataTaskWithRequest:request
      completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
          if (error) {
              NSLog(@"Request failed: %@", error);
          } else {
              NSLog(@"Request sent.");
          }
      }];
[dataTask resume];

Swift:

guard let url = URL(string: "https://xxxxxx/test?id=123") else { return }
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue(token, forHTTPHeaderField: "wToken")

URLSession.shared.dataTask(with: request) { data, response, error in
    if let error = error {
        print("Request failed: \(error)")
    } else {
        print("Request sent.")
    }
}.resume()

(Opcional) Probar con un proyecto de ejemplo

Antes de integrarlo en su aplicación de producción, cree un proyecto de prueba de iOS en Xcode para comprobar los pasos de integración.

A continuación se muestra el código de un archivo ViewController.m de ejemplo, dentro de un proyecto de prueba llamado TigerTally_sdk_test:

//
//  ViewController.m
//  TigerTally_sdk_test
//
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup a...
}

@end