Encabezado: X-Device-Info header-x-device-info

NOTE
El contenido de esta página se proporciona únicamente con fines informativos. El uso de esta API requiere una licencia actual de Adobe. No se permite el uso no autorizado.

Información general overview

El encabezado de la solicitud X-Device-Info contiene la información del cliente (dispositivo, conexión y aplicación) relacionada con el dispositivo de flujo continuo real.

Sintaxis syntax

X-Device-Info: <device_information>
Tipo de encabezado
Encabezado de solicitud
Standard
No

Directivas directives

<device_information>

El valor Base64-encoded del elemento JSON que contiene al menos los atributos marcados como requeridos por la siguiente tabla.

Presencia
Clave
Descripción
Restringido
Valores posibles
primaryHardwareType
El tipo de hardware principal del dispositivo.

Los valores están restringidos:

  • Cámara
  • DataCollectionTerminal
  • Escritorio
  • EmbeddedNetworkModule
  • eReader
  • GamesConsole
  • GeolocationTracker
  • Gafas
  • MediaPlayer
  • MobilePhone
  • PaymentTerminal
  • PluginModem
  • SetTopBox
  • TV
  • Tableta
  • WirelessHotspot
  • Reloj de pulsera
  • Desconocido
obligatorio
model
El nombre del modelo del dispositivo.
por ejemplo, iPhone, SM-G930V, AppleTV, etc.
obligatorio
version
La versión del dispositivo.
p. ej., 2.0.1, etc.
fabricante
La empresa u organización de fabricación del dispositivo.
Por ejemplo: Samsung, LG, ZTE, Huawei, Motorola, Apple, etc.
vendedor
La empresa u organización vendedora del dispositivo.
por ejemplo, Apple, Samsung, LG, Google, etc.
obligatorio
osName
El nombre del sistema operativo (SO) del dispositivo.

Los valores están restringidos:

  • Android
  • SO CHROME
  • Linux
  • SO MAC
  • OS X
  • OpenBSD
  • Roku OS
  • Windows
  • iOS
  • tvOS
  • webOS
osFamily
El nombre del grupo del sistema operativo (SO) del dispositivo.

Los valores están restringidos:

  • Android
  • BSD
  • Linux
  • PlayStation OS
  • Roku OS
  • Symbian
  • Tizen
  • Windows
  • iOS
  • tvOS
  • macOS
  • webOS
osVendor
El proveedor del sistema operativo (SO) del dispositivo.

Los valores están restringidos:

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • Nintendo
  • Nokia
  • Roku
  • Samsung
  • Sony
  • Proyecto Tizen
obligatorio
osVersion
Versión del sistema operativo (SO) del dispositivo.
p. ej. 10.2, 9.0.1, etc.
browserName
El nombre del explorador.

Los valores están restringidos:

  • Navegador Android
  • Chrome
  • Edge
  • Firefox
  • Internet Explorer
  • Opera
  • Safari
  • SeaMonkey
  • Navegador Symbian
browserVendor
La empresa u organización que crea el explorador.

Los valores están restringidos:

  • Amazon
  • Apple
  • Google
  • Microsoft
  • Motorola
  • Mozilla
  • Netscape
  • Nintendo
  • Nokia
  • Samsung
  • Sony Ericsson
browserVersion
La versión del explorador del dispositivo.
p. ej. 60.0.3112
userAgent
El agente de usuario del dispositivo.
Por ejemplo, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, como Gecko) Versión/10.0.3 Safari/602.4.8
displayWidth
Ancho de pantalla físico del dispositivo.
displayHeight
Altura física de la pantalla del dispositivo.
displayPpi
La densidad de píxeles de la pantalla física del dispositivo.
p.ej. 294
diagonalScreenSize
Dimensión diagonal de la pantalla física del dispositivo en pulgadas.
p. ej. 5.5, 10.1
connectionIp
IP del dispositivo utilizada para enviar solicitudes HTTP.
p. ej., 8.8.4.4
connectionPort
Puerto del dispositivo utilizado para enviar solicitudes HTTP.
p. ej. 53124
obligatorio
connectionType
Tipo de conexión de red.
por ejemplo, WiFi, LAN, 3G, 4G, 5G
connectionSecure
Estado de seguridad de la conexión de red.

Los valores están restringidos:

  • true: en el caso de una red segura
  • false: en el caso de un punto interactivo público
applicationId
El identificador único de la aplicación.
p. ej. REF30

Ejemplos examples

// Device information
// {
//  "primaryHardwareType" : "MobilePhone",
//  "model":"SM-S901U",
//  "vendor":"samsung",
//  "version":"r0q",
//  "manufacturer":"samsung",
//  "osName":"Android",
//  "osVersion":"14"
// }

// BASE64-encoded
// ewogICJwcmltYXJ5SGFyZHdhcmVUeXBlIiA6ICJNb2JpbGVQaG9uZSIsCiAgIm1vZGVsIjoiU00tUzkwMVUiLAogICJ2ZW5kb3I
// iOiJzYW1zdW5nIiwKICAidmVyc2lvbiI6InIwcSIsCiAgIm1hbnVmYWN0dXJlciI6InNhbXN1bmciLAogICJvc05hbWUiOiJBbmRyb
// 2lkIiwKICAib3NWZXJzaW9uIjoiMTQiCn0=

X-Device-Info: ewogICJwcmltYXJ5SGFyZHdhcmVUeXBlIiA6ICJNb2JpbGVQaG9uZSIsCiAgIm1vZGVsIjoiU00tUzkwMVUiLAogICJ2ZW5kb3IiOiJzYW1zdW5nIiwKICAidmVyc2lvbiI6InIwcSIsCiAgIm1hbnVmYWN0dXJlciI6InNhbXN1bmciLAogICJvc05hbWUiOiJBbmRyb2lkIiwKICAib3NWZXJzaW9uIjoiMTQiCn0=

Libros cookbooks

IMPORTANT
Los fragmentos de código y los recursos de documentación se proporcionan con fines de referencia.
Los fragmentos de código no son exhaustivos y pueden requerir modificaciones adicionales para funcionar en el proyecto.
Independientemente de su implementación real, el encabezado X-Device-Info debe contener un valor con el formato descrito en la sección Directivas.

Para las aplicaciones cliente que se ejecutan en un explorador, se puede omitir el encabezado X-Device-Info, ya que el explorador enviará automáticamente un conjunto mínimo de información necesaria en el encabezado User-Agent.

Puede seguir utilizando el encabezado X-Device-Info para proporcionar información adicional sobre el dispositivo, la conexión y la aplicación, en caso de que la aplicación cliente integre una biblioteca o servicio que proporcione un mecanismo de identificación del dispositivo.

Dispositivos móviles mobile-devices

iOS y iPadOS ios-ipados

Para generar el encabezado X-Device-Info para los dispositivos que ejecutan iOS o iPadOS, puede consultar los siguientes documentos y el siguiente fragmento de código:

  • Documentación para desarrolladores de Apple para UIDevice.
  • Documentación para desarrolladores de Apple para Reachability.
  • Documentación manual de Linux para uname.
+ (NSString *)computeClientInformation {
        struct utsname u;
        uname(&u);

        NSString *hardware = [NSString stringWithCString:u.machine encoding:NSUTF8StringEncoding];

        UIDevice *device = [UIDevice currentDevice];

        NSString *deviceType;

        switch (UI_USER_INTERFACE_IDIOM()) {
            case UIUserInterfaceIdiomPhone:
                deviceType = @"MobilePhone";
                break;
            case UIUserInterfaceIdiomPad:
                deviceType = @"Tablet";
                break;
            case UIUserInterfaceIdiomTV:
                deviceType = @"TV";
                break;
            default:
                deviceType = @"Unknown";
        }

        CGRect screenRect = [[UIScreen mainScreen] bounds];
        NSNumber *screenWidth = @((float) screenRect.size.width);
        NSNumber *screenHeight = @((float) screenRect.size.height);

        Reachability *reachability = [Reachability reachabilityForInternetConnection];
        [reachability startNotifier];

        NetworkStatus status = [reachability currentReachabilityStatus];

        NSString *connectionType;

        if (status == NotReachable) {
            connectionType = @"notConnected";
        } else if (status == ReachableViaWiFi) {
            connectionType = @"WiFi";
        } else if (status == ReachableViaWWAN) {
            connectionType = @"cellular";
        }

        NSMutableDictionary *clientInformation = [@{
                @"type": deviceType,
                @"model": device.model,
                @"vendor": @"Apple",
                @"manufacturer": @"Apple",
                @"version": [hardware stringByReplacingOccurrencesOfString:device.model withString:@""],
                @"osName": device.systemName,
                @"osVersion": device.systemVersion,
                @"displayWidth": screenWidth,
                @"displayHeight": screenHeight,
                @"connectionType": connectionType,
                @"applicationId": @"REF30"
        } mutableCopy];

        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:clientInformation options:NSJSONWritingPrettyPrinted error:&error];
        NSString *base64Encoded = [jsonData base64EncodedStringWithOptions:0];

        return base64Encoded;
}

La información del dispositivo se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
model
uname.machine
iPhone
vendedor
codificado
Apple
fabricante
codificado
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
320
displayHeight
UIScreen.mainScreen
568
osName
UIDevice.systemName
iOS
osVersion
UIDevice.systemVersion
10,2

La información de conexión se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
connectionType
[Reachability currentReachabilityStatus]
connectionSecure

La información de la aplicación se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
applicationId
codificado
REF30

Android android

Para generar el encabezado X-Device-Info para los dispositivos que ejecutan Android, puede consultar los siguientes documentos y el siguiente fragmento de código:

  • Documentación para desarrolladores de Android para la clase Build.
private JSONObject computeClientInformation() {
     String LOGGING_TAG = "DefineClass.class";

     JSONObject clientInformation = new JSONObject();

     String connectionType;

     try {
          ConnectivityManager cm = (ConnectivityManager) getContext().getSystemService(CONNECTIVITY_SERVICE);
          NetworkInfo activeNetwork = cm.getActiveNetworkInfo();

          if (activeNetwork != null && activeNetwork.isConnectedOrConnecting()) {
              switch (activeNetwork.getType()) {
                    case ConnectivityManager.TYPE_WIFI: {
                        connectionType = "WIFI";
                        break;
                    }
                    case ConnectivityManager.TYPE_BLUETOOTH: {
                        connectionType = "BLUETOOTH";
                        break;
                    }
                    case ConnectivityManager.TYPE_MOBILE: {
                        connectionType = "MOBILE";
                        break;
                    }
                    case ConnectivityManager.TYPE_ETHERNET: {
                        connectionType = "ETHERNET";
                        break;
                    }
                    case ConnectivityManager.TYPE_VPN: {
                        connectionType = "VPN";
                        break;
                    }
                    case ConnectivityManager.TYPE_DUMMY: {
                        connectionType = "DUMMY";
                        break;
                    }
                    case ConnectivityManager.TYPE_MOBILE_DUN: {
                        connectionType = "MOBILE_DUN";
                        break;
                    }
                    case ConnectivityManager.TYPE_WIMAX: {
                        connectionType = "WIMAX";
                        break;
                    }
                    default:
                       connectionType = ConnectivityManager.EXTRA_OTHER_NETWORK_INFO;
              }
          } else {
                connectionType = ConnectivityManager.EXTRA_NO_CONNECTIVITY;
          }
     } catch (Exception e) {
          connectionType = "notAccessible";
     }

     try {
          clientInformation.put("model", Build.MODEL);
          clientInformation.put("vendor", Build.BRAND);
          clientInformation.put("manufacturer", Build.MANUFACTURER);
          clientInformation.put("version", Build.DEVICE);
          clientInformation.put("osName", "Android");
          clientInformation.put("osVersion", Build.VERSION.RELEASE);
          clientInformation.put("connectionType", connectionType);
          clientInformation.put("applicationId", "REF30");
     } catch (JSONException e) {
          Log.e(LOGGING_TAG, e.getMessage());
     }

     return Base64.encodeToString(clientInformation.toString().getBytes(), Base64.NO_WRAP);
}

La información del dispositivo se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
model
Build.MODEL
GT-I9505
vendedor
Build.BRAND
samsung
fabricante
Build.MANUFACTURER
samsung
version
Build.DEVICE
jflte
displayWidth
DisplayMetrics.widthPixels
600
displayHeight
DisplayMetrics.heightPixels
800
osName
codificado
Android
osVersion
Build.VERSION.RELEASE
5.0.1

La información de conexión se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
connectionType
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> getSystemService(Context.CONNECTIVITY_SERVICE).getActiveNetworkInfo().getType()
"WIFI","BLUETOOTH","MOBILE","ETHERNET","VPN","DUMMY","MOBILE_DUN","WIMAX","notAccessible"
connectionSecure

La información de la aplicación se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
applicationId
codificado
REF30

Dispositivos conectados a TV tv-connected-devices

tvOS tvos

Para generar el encabezado X-Device-Info para los dispositivos que ejecutan tvOS, puede consultar los siguientes documentos y el siguiente fragmento de código:

  • Documentación para desarrolladores de Apple para UIDevice.
  • Documentación para desarrolladores de Apple para Reachability.
  • Documentación manual de Linux para uname.
+ (NSString *)computeClientInformation {
        struct utsname u;
        uname(&u);

        NSString *hardware = [NSString stringWithCString:u.machine encoding:NSUTF8StringEncoding];

        UIDevice *device = [UIDevice currentDevice];

        NSString *deviceType;

        switch (UI_USER_INTERFACE_IDIOM()) {
            case UIUserInterfaceIdiomPhone:
                deviceType = @"MobilePhone";
                break;
            case UIUserInterfaceIdiomPad:
                deviceType = @"Tablet";
                break;
            case UIUserInterfaceIdiomTV:
                deviceType = @"TV";
                break;
            default:
                deviceType = @"Unknown";
        }

        CGRect screenRect = [[UIScreen mainScreen] bounds];
        NSNumber *screenWidth = @((float) screenRect.size.width);
        NSNumber *screenHeight = @((float) screenRect.size.height);

        Reachability *reachability = [Reachability reachabilityForInternetConnection];
        [reachability startNotifier];

        NetworkStatus status = [reachability currentReachabilityStatus];

        NSString *connectionType;

        if (status == NotReachable) {
            connectionType = @"notConnected";
        } else if (status == ReachableViaWiFi) {
            connectionType = @"WiFi";
        } else if (status == ReachableViaWWAN) {
            connectionType = @"cellular";
        }

        NSMutableDictionary *clientInformation = [@{
                @"type": deviceType,
                @"model": device.model,
                @"vendor": @"Apple",
                @"manufacturer": @"Apple",
                @"version": [hardware stringByReplacingOccurrencesOfString:device.model withString:@""],
                @"osName": device.systemName,
                @"osVersion": device.systemVersion,
                @"displayWidth": screenWidth,
                @"displayHeight": screenHeight,
                @"connectionType": connectionType,
                @"applicationId": @"REF30"
        } mutableCopy];

        NSError *error;
        NSData *jsonData = [NSJSONSerialization dataWithJSONObject:clientInformation options:NSJSONWritingPrettyPrinted error:&error];
        NSString *base64Encoded = [jsonData base64EncodedStringWithOptions:0];

        return base64Encoded;
}

La información del dispositivo se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
model
uname.machine
AppleTV
vendedor
codificado
Apple
fabricante
codificado
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
1920
displayHeight
UIScreen.mainScreen
1080
osName
UIDevice.systemName
tvOS
osVersion
UIDevice.systemVersion
10,2

La información de conexión se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
connectionType
[Reachability currentReachabilityStatus]
connectionSecure

La información de la aplicación se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
applicationId
codificado
REF30

Fire OS fireos

Para generar el encabezado X-Device-Info para los dispositivos que ejecutan Fire OS, puede consultar los siguientes documentos:

La información del dispositivo se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
model
Build.MODEL
AFTM
vendedor
Build.BRAND
Amazon
fabricante
Build.MANUFACTURER
Amazon
version
Build.DEVICE
montoya
displayWidth
DisplayMetrics.widthPixels
displayHeight
DisplayMetrics.heightPixels
osName
codificado
Android
osVersion
Build.VERSION.RELEASE
5.1.1

La información de conexión se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
connectionType
connectionSecure

La información de la aplicación se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
applicationId
codificado
REF30

Roku OS rokuos

Para generar el encabezado X-Device-Info para los dispositivos que ejecutan Roku OS, puede consultar los siguientes documentos:

  • Documentación para desarrolladores de Roku para ifDeviceInfo.

La información del dispositivo se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
model
codificado
"Roku"
vendedor
ifDeviceInfo.GetModelDetails().VendorName
"Sharp", "Roku"
fabricante
ifDeviceInfo.GetModelDetails().VendorName
"Sharp", "Roku"
version
ifDeviceInfo.GetModelDetails().ModelNumber
"5303X"
displayWidth
ifDeviceInfo.GetDisplaySize().w
1920
displayHeight
ifDeviceInfo.GetDisplaySize().h
1080
osName
codificado
"Roku"
osVersion
ifDeviceInfo.getVersion()

La información de conexión se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
connectionType
ifDeviceInfo.GetConnectionType()
"WifiConnection", "WiredConnection"
connectionSecure
codificado
true si la conexión está cableada

La información de la aplicación se puede construir de la siguiente manera:

Clave
Source
Valor (ejemplo)
applicationId
codificado
REF30
recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b