Cabeçalho - X-Device-Info header-x-device-info

NOTE
O conteúdo desta página é fornecido apenas para fins informativos. O uso desta API requer uma licença atual do Adobe. Não é permitida nenhuma utilização não autorizada.

Visão geral overview

O cabeçalho de solicitação X-Device-Info contém as informações do cliente (dispositivo, conexão e aplicativo) relacionadas ao dispositivo de streaming real.

Sintaxe syntax

X-Device-Info: <informações_do_dispositivo>
Tipo de cabeçalho
Cabeçalho da solicitação
Padrão
Não

Diretivas directives

<informações_do_dispositivo>

O valor Base64-encoded do elemento JSON que contém pelo menos os atributos marcados como exigidos pela tabela a seguir.

Presença
Chave
Descrição
Restrito
Valores possíveis
primaryHardwareType
O tipo de hardware principal do dispositivo.
&verificar;

Os valores são restritos:

  • Câmera
  • DataCollectionTerminal
  • Computador desktop
  • EmbeddedNetworkModule
  • eReader
  • GamesConsole
  • GeolocationTracker
  • Óculos
  • MediaPlayer
  • Celular
  • TerminalDePagamento
  • PluginModem
  • DefinirCaixaSuperior
  • TV
  • Tablet
  • Ponto de acesso sem fio
  • Relógio de pulso
  • Desconhecido
obrigatório
modelo
O nome do modelo do dispositivo.
Por exemplo, iPhone, SM-G930V, Apple TV etc.
obrigatório
version
A versão do dispositivo.
Por exemplo, 2.0.1, etc.
fabricante
A empresa/organização de fabricação do dispositivo.
Por exemplo, Samsung, LG, ZTE, Huawei, Motorola, Apple, etc.
fornecedor
A empresa/organização de venda do dispositivo.
Por exemplo, Apple, Samsung, LG, Google, etc.
obrigatório
osName
O nome do sistema operacional do dispositivo.
&verificar;

Os valores são restritos:

  • Android
  • SO CHROME
  • Linux
  • Mac OS
  • OS X
  • OpenBSD
  • Roku OS
  • Windows
  • iOS
  • tvOS
  • webOS
osFamily
O nome do grupo do Sistema Operacional (SO) do dispositivo.
&verificar;

Os valores são restritos:

  • Android
  • BSD
  • Linux
  • PlayStation OS
  • Roku OS
  • Symbian
  • Tizen
  • Windows
  • iOS
  • tvOS
  • macOS
  • webOS
osVendor
O fornecedor do sistema operacional do dispositivo.
&verificar;

Os valores são restritos:

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • Nintendo
  • Nokia
  • Roku
  • Samsung
  • Sony
  • Projeto Tizen
obrigatório
osVersion
A versão do sistema operacional do dispositivo.
Por exemplo, 10.2, 9.0.1, etc.
browserName
O nome do navegador.
&verificar;

Os valores são restritos:

  • Navegador Android
  • Chrome
  • Edge
  • Firefox
  • Internet Explorer
  • Opera
  • Safari
  • SeaMonkey
  • Navegador Symbian
browserVendor
A empresa/organização de construção do navegador.
&verificar;

Os valores são restritos:

  • Amazon
  • Apple
  • Google
  • Microsoft
  • Motorola
  • Mozilla
  • Netscape
  • Nintendo
  • Nokia
  • Samsung
  • Sony Ericsson
browserVersion
A versão do navegador do dispositivo.
ex: 60.0.3112
userAgent
O agente do usuário do dispositivo.
por exemplo, Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, como Gecko) Versão/10.0.3 Safari/602.4.8
displayWidth
A largura da tela física do dispositivo.
displayHeight
A altura da tela física do dispositivo.
displayPpi
A densidade de pixels da tela física do dispositivo.
por exemplo, 294
diagonalScreenSize
A dimensão diagonal da tela física do dispositivo em polegadas.
Por exemplo, 5.5, 10.1
connectionIp
O IP do dispositivo usado para enviar solicitações HTTP.
Por exemplo, 8.8.4.4
connectionPort
A porta do dispositivo usada para enviar solicitações HTTP.
por exemplo, 53124
obrigatório
connectionType
O tipo de conexão de rede.
por exemplo, WiFi, LAN, 3G, 4G, 5G
connectionSecure
O status de segurança da conexão de rede.
&verificar;

Os valores são restritos:

  • true - no caso de uma rede segura
  • false - no caso de um ponto de acesso público
applicationId
O identificador exclusivo do aplicativo.
ex: REF30

Exemplos 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=

Cookbooks cookbooks

IMPORTANT
Os snippets de código e os recursos de documentação são fornecidos para fins de referência.
Os trechos de código não são exaustivos e podem exigir modificações adicionais para funcionar em seu projeto.
Independentemente da implementação real, o cabeçalho X-Device-Info deve conter um valor formatado conforme descrito na seção Diretivas.

Para aplicativos cliente em execução em um navegador, o cabeçalho X-Device-Info pode ser omitido, pois o navegador enviará automaticamente um conjunto mínimo de informações necessárias no cabeçalho User-Agent.

Você ainda poderá usar o cabeçalho X-Device-Info para fornecer informações adicionais sobre o dispositivo, a conexão e o aplicativo, caso o aplicativo cliente integre uma biblioteca ou um serviço que forneça um mecanismo de identificação de dispositivo.

Dispositivos móveis mobile-devices

iOS e iPadOS ios-ipados

Para criar o cabeçalho X-Device-Info para dispositivos que executam o iOS ou o iPadOS, consulte os seguintes documentos e o trecho de código abaixo:

  • Documentação do desenvolvedor do Apple para UIDevice.
  • Documentação do desenvolvedor do Apple para Acessibilidade.
  • Documentação de manual do 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;
}

As informações do dispositivo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
modelo
uname.machine
iPhone
fornecedor
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

As informações de conexão podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
connectionType
[CurrentReachabilityStatus de acessibilidade]
connectionSecure

As informações do aplicativo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
applicationId
codificado
REF30

Android android

Para criar o cabeçalho X-Device-Info para dispositivos que executam o Android, consulte os seguintes documentos e o trecho de código abaixo:

  • Documentação do desenvolvedor do Android para a classe 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);
}

As informações do dispositivo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
modelo
Build.MODEL
GT-I9505
fornecedor
Build.BRAND
samsung
fabricante
Build.MANUFACTURER
samsung
version
Build.DEVICE
jflet
displayWidth
DisplayMetrics.widthPixels
600
displayHeight
DisplayMetrics.heightPixels
800
osName
codificado
Android
osVersion
Build.VERSION.RELEASE
5.0.1

As informações de conexão podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
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

As informações do aplicativo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
applicationId
codificado
REF30

Dispositivos conectados à TV tv-connected-devices

tvOS tvos

Para compilar o cabeçalho X-Device-Info para dispositivos que executam o tvOS, consulte os seguintes documentos e o trecho de código abaixo:

  • Documentação do desenvolvedor do Apple para UIDevice.
  • Documentação do desenvolvedor do Apple para Acessibilidade.
  • Documentação de manual do 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;
}

As informações do dispositivo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
modelo
uname.machine
AppleTV
fornecedor
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

As informações de conexão podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
connectionType
[CurrentReachabilityStatus de acessibilidade]
connectionSecure

As informações do aplicativo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
applicationId
codificado
REF30

Acionar SO fireos

Para criar o cabeçalho X-Device-Info para dispositivos que executam o Fire OS, consulte os seguintes documentos:

As informações do dispositivo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
modelo
Build.MODEL
AFTM
fornecedor
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

As informações de conexão podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
connectionType
connectionSecure

As informações do aplicativo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
applicationId
codificado
REF30

Roku OS rokuos

Para criar o cabeçalho X-Device-Info para dispositivos que executam o Roku OS, consulte os seguintes documentos:

  • Documentação do desenvolvedor do Roku para ifDeviceInfo.

As informações do dispositivo podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
modelo
codificado
"Roku"
fornecedor
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()

As informações de conexão podem ser construídas da seguinte maneira:

Chave
Source
Valor (exemplo)
connectionType
ifDeviceInfo.GetConnectionType()
"WifiConnection", "WiredConnection"
connectionSecure
codificado
true se a conexão for com fio

As informações do aplicativo podem ser construídas da seguinte maneira:

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