DocumentazioneAdobe PassAutenticazione Adobe Pass

Intestazione - X-Device-Info

Ultimo aggiornamento: 5 maggio 2025
  • Argomenti:
  • Autenticazione
NOTE
Il contenuto di questa pagina viene fornito solo a scopo informativo. L’utilizzo di questa API richiede una licenza corrente da Adobe. Non è consentito alcun uso non autorizzato.

Panoramica

L'intestazione della richiesta X-Device-Info contiene le informazioni client (dispositivo, connessione e applicazione) relative al dispositivo di streaming effettivo e viene utilizzata per determinare le regole specifiche della piattaforma che gli MVPD possono applicare.

Sintassi

X-Device-Info: <informazioni_dispositivo>
Tipo di intestazioneIntestazione richiesta
StandardNo

Direttive

<informazioni_dispositivo>

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

PresenzaChiaveDescrizioneLimitatoValori possibili
primaryHardwareTypeIl 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
obbligatoriomodelloIl nome del modello del dispositivo.ad es. iPhone, SM-G930V, AppleTV, ecc.
obbligatorioversionVersione del dispositivo.ad esempio 2.0.1, ecc.
produttoreLa società/organizzazione di produzione del dispositivo.ad es. Samsung, LG, ZTE, Huawei, Motorola, Apple, ecc.
fornitoreLa società/organizzazione di vendita del dispositivo.ad es. Apple, Samsung, LG, Google, ecc.
obbligatorioosNameIl 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
osFamilyIl 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
osVendorIl fornitore del sistema operativo del dispositivo.✓

I valori sono limitati:

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • Nintendo
  • Nokia
  • Roku
  • Samsung
  • Sony
  • Progetto Tizen
obbligatorioosVersionVersione del sistema operativo del dispositivo.ad esempio 10.2, 9.0.1, ecc.
browserNameNome del browser.✓

I valori sono limitati:

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

I valori sono limitati:

  • Amazon
  • Apple
  • Google
  • Microsoft
  • Motorola
  • Mozilla
  • Netscape
  • Nintendo
  • Nokia
  • Samsung
  • Sony Ericsson
browserVersionVersione del browser del dispositivo.esempio: 60.0.3112
userAgentL’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
displayWidthLarghezza fisica dello schermo del dispositivo.
displayHeightL’altezza fisica dello schermo del dispositivo.
displayPpiDensità fisica dei pixel dello schermo del dispositivo.Esempio: 294
diagonalScreenSizeLa dimensione diagonale dello schermo fisico del dispositivo, espressa in pollici.ad es. 5.5, 10.1
connectionIpL’IP del dispositivo utilizzato per inviare richieste HTTP.es. 8.8.4.4
connectionPortPorta del dispositivo utilizzata per l’invio di richieste HTTP.ad es. 53124
obbligatorioconnectionTypeTipo di connessione di rete.ad esempio WiFi, LAN, 3G, 4G, 5G
connectionSecureStato di protezione della connessione di rete.✓

I valori sono limitati:

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

Esempi

// 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

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

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

iOS e 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

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

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

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

  • Documentazione per gli sviluppatori di Android per la classe Build.
  • Documentazione per gli sviluppatori di Amazon per Identificazione dei dispositivi Fire TV.

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

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

Altri

Per le piattaforme per dispositivi non incluse nella documentazione, le informazioni sul client (dispositivo, connessione e applicazione) devono essere collegate a qualsiasi attributo hardware e sistema operativo disponibile, in genere specificato nei manuali hardware e del sistema operativo del dispositivo.

recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b