Intestazione - X-Device-Info header-x-device-info

NOTE
Il contenuto di questa pagina viene fornito solo a scopo informativo. L’utilizzo di questa API richiede una licenza corrente di Adobe. Non è consentito alcun uso non autorizzato.

Panoramica overview

L'intestazione della richiesta X-Device-Info contiene le informazioni client (dispositivo, connessione e applicazione) relative al dispositivo di streaming effettivo.

Sintassi syntax

X-Device-Info: <informazioni_dispositivo>
Tipo di intestazione
Intestazione richiesta
Standard
No

Direttive directives

<informazioni_dispositivo>

Il valore Base64-encoded dell'elemento JSON contenente almeno gli attributi contrassegnati come richiesto dalla tabella seguente.

Presenza
Chiave
Descrizione
Limitato
Valori possibili
primaryHardwareType
Il tipo di hardware principale del dispositivo.

I valori sono limitati:

  • Fotocamera
  • DataCollectionTerminal
  • Desktop
  • EmbeddedNetworkModule
  • eReader
  • Console giochi
  • GeolocationTracker
  • Occhiali
  • MediaPlayer
  • Cellulare
  • PaymentTerminal
  • PluginModem
  • SetTopBox
  • TV
  • Tablet
  • Punto attivo wireless
  • Orologio
  • Sconosciuto
obbligatorio
modello
Il nome del modello del dispositivo.
ad es. iPhone, SM-G930V, AppleTV, ecc.
obbligatorio
version
Versione del dispositivo.
ad esempio 2.0.1, ecc.
produttore
La società/organizzazione di produzione del dispositivo.
ad es. Samsung, LG, ZTE, Huawei, Motorola, Apple, ecc.
fornitore
La società/organizzazione di vendita del dispositivo.
ad es. Apple, Samsung, LG, Google, ecc.
obbligatorio
osName
Il nome del sistema operativo del dispositivo.

I valori sono limitati:

  • Android
  • CHROME OS
  • Linux
  • MAC OS
  • OS X
  • OpenBSD
  • Sistema operativo Roku
  • Windows
  • iOS
  • tvOS
  • webOS
osFamily
Il nome del gruppo del sistema operativo del dispositivo.

I valori sono limitati:

  • Android
  • BSD
  • Linux
  • Sistema operativo PlayStation
  • Sistema operativo Roku
  • Symbian
  • Tizen
  • Windows
  • iOS
  • tvOS
  • macOS
  • webOS
osVendor
Il fornitore del sistema operativo del dispositivo.

I valori sono limitati:

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • Nintendo
  • Nokia
  • Roku
  • Samsung
  • Sony
  • Progetto Tizen
obbligatorio
osVersion
Versione del sistema operativo del dispositivo.
ad esempio 10.2, 9.0.1, ecc.
browserName
Nome del browser.

I valori sono limitati:

  • Browser Android
  • Chrome
  • Edge
  • Firefox
  • Internet Explorer
  • Opera
  • Safari
  • SeaMonkey
  • Browser Symbian
browserVendor
La società/organizzazione di costruzione del browser.

I valori sono limitati:

  • Amazon
  • Apple
  • Google
  • Microsoft
  • Motorola
  • Mozilla
  • Netscape
  • Nintendo
  • Nokia
  • Samsung
  • Sony Ericsson
browserVersion
Versione del browser del dispositivo.
esempio: 60.0.3112
userAgent
L’agente utente del dispositivo.
ad esempio Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, like Gecko) versione/10.0.3 Safari/602.4.8
displayWidth
Larghezza fisica dello schermo del dispositivo.
displayHeight
L’altezza fisica dello schermo del dispositivo.
displayPpi
Densità fisica dei pixel dello schermo del dispositivo.
Esempio: 294
diagonalScreenSize
La dimensione diagonale dello schermo fisico del dispositivo, espressa in pollici.
ad es. 5.5, 10.1
connectionIp
L’IP del dispositivo utilizzato per inviare richieste HTTP.
es. 8.8.4.4
connectionPort
Porta del dispositivo utilizzata per l’invio di richieste HTTP.
ad es. 53124
obbligatorio
connectionType
Tipo di connessione di rete.
ad esempio WiFi, LAN, 3G, 4G, 5G
connectionSecure
Stato di protezione della connessione di rete.

I valori sono limitati:

  • true - nel caso di una rete sicura
  • false - nel caso di un hotspot pubblico
applicationId
L’identificatore univoco dell’applicazione.
es. REF30

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

Cookbook cookbooks

IMPORTANT
I frammenti di codice e le risorse della documentazione sono forniti a scopo di riferimento.
I frammenti di codice non sono esaustivi e potrebbero richiedere ulteriori modifiche per lavorare al progetto.
Indipendentemente dall'implementazione effettiva, l'intestazione X-Device-Info deve contenere un valore formattato come descritto nella sezione Direttive.

Browser browsers

Per le applicazioni client in esecuzione in un browser, è possibile omettere l'intestazione X-Device-Info in quanto il browser invierà automaticamente un set minimo di informazioni richieste nell'intestazione User-Agent.

È comunque possibile utilizzare l'intestazione X-Device-Info per fornire informazioni aggiuntive sul dispositivo, sulla connessione e sull'applicazione, nel caso in cui l'applicazione client integri una libreria o un servizio che fornisce un meccanismo di identificazione del dispositivo.

Dispositivi mobili mobile-devices

iOS e iPadOS ios-ipados

Per generare l'intestazione X-Device-Info per i dispositivi che eseguono iOS o iPadOS, è possibile fare riferimento ai seguenti documenti e frammenti di codice:

  • Documentazione per gli sviluppatori di Apple per UIDevice.
  • Documentazione per gli sviluppatori di Apple per Raggiungibilità.
  • Documentazione manuale Linux per 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;
}

Le informazioni sul dispositivo possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
modello
uname.machine
iPhone
fornitore
hardcoded
Apple
produttore
hardcoded
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
320
displayHeight
UIScreen.mainScreen
568
osName
UIDevice.systemName
iOS
osVersion
UIDevice.systemVersion
10,2

Le informazioni di connessione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
connectionType
[Raggiungibilità currentReachabilityStatus]
connectionSecure

Le informazioni sull'applicazione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
applicationId
hardcoded
REF30

Android android

Per generare l'intestazione X-Device-Info per i dispositivi che eseguono Android, è possibile fare riferimento ai seguenti documenti e frammenti di codice:

  • Documentazione per gli sviluppatori di Android per la 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);
}

Le informazioni sul dispositivo possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
modello
Build.MODEL
GT-I9505
fornitore
Build.BRAND
samsung
produttore
Build.MANUFACTURER
samsung
version
Build.DEVICE
jflte
displayWidth
DisplayMetrics.widthPixels
600
displayHeight
DisplayMetrics.heightPixels
800
osName
hardcoded
Android
osVersion
Build.VERSION.RELEASE
5.0.1.

Le informazioni di connessione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
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

Le informazioni sull'applicazione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
applicationId
hardcoded
REF30

Dispositivi collegati al televisore tv-connected-devices

tvOS tvos

Per generare l'intestazione X-Device-Info per i dispositivi che eseguono tvOS, è possibile fare riferimento ai seguenti documenti e frammenti di codice:

  • Documentazione per gli sviluppatori di Apple per UIDevice.
  • Documentazione per gli sviluppatori di Apple per Raggiungibilità.
  • Documentazione manuale Linux per 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;
}

Le informazioni sul dispositivo possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
modello
uname.machine
AppleTV
fornitore
hardcoded
Apple
produttore
hardcoded
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
1920
displayHeight
UIScreen.mainScreen
1080
osName
UIDevice.systemName
tvOS
osVersion
UIDevice.systemVersion
10,2

Le informazioni di connessione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
connectionType
[Raggiungibilità currentReachabilityStatus]
connectionSecure

Le informazioni sull'applicazione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
applicationId
hardcoded
REF30

Fire OS fireos

Per generare l'intestazione X-Device-Info per i dispositivi che eseguono Fire OS, è possibile fare riferimento ai seguenti documenti:

Le informazioni sul dispositivo possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
modello
Build.MODEL
AFTM
fornitore
Build.BRAND
Amazon
produttore
Build.MANUFACTURER
Amazon
version
Build.DEVICE
montoya
displayWidth
DisplayMetrics.widthPixels
displayHeight
DisplayMetrics.heightPixels
osName
hardcoded
Android
osVersion
Build.VERSION.RELEASE
5.1.1.

Le informazioni di connessione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
connectionType
connectionSecure

Le informazioni sull'applicazione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
applicationId
hardcoded
REF30

Sistema operativo Roku rokuos

Per generare l'intestazione X-Device-Info per i dispositivi che eseguono Roku OS, è possibile fare riferimento ai seguenti documenti:

  • Documentazione per gli sviluppatori Roku per ifDeviceInfo.

Le informazioni sul dispositivo possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
modello
hardcoded
"Roku"
fornitore
ifDeviceInfo.GetModelDetails().VendorName
"Sharp", "Roku"
produttore
ifDeviceInfo.GetModelDetails().VendorName
"Sharp", "Roku"
version
ifDeviceInfo.GetModelDetails().ModelNumber
5303X
displayWidth
ifDeviceInfo.GetDisplaySize().w
1920
displayHeight
ifDeviceInfo.GetDisplaySize().h
1080
osName
hardcoded
"Roku"
osVersion
ifDeviceInfo.getVersion()

Le informazioni di connessione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
connectionType
ifDeviceInfo.GetConnectionType()
"WifiConnection", "WiredConnection"
connectionSecure
hardcoded
true se la connessione è cablata

Le informazioni sull'applicazione possono essere costruite nel modo seguente:

Chiave
Source
Valore (esempio)
applicationId
hardcoded
REF30
recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b