En-Tête - X-Device-Info header-x-device-info

NOTE
Le contenu de cette page est fourni à titre d’information uniquement. L’utilisation de cette API nécessite une licence Adobe actuelle. Aucune utilisation non autorisée n’est autorisée.

Vue d’ensemble overview

L’en-tête de requête X-Device-Info contient les informations client (appareil, connexion et application) liées à l’appareil de diffusion en continu actuel et est utilisé pour déterminer les règles spécifiques à la plateforme que les MVPD peuvent appliquer.

Syntaxe syntax

X-Device-Info : <device_information>
Type d’en-tête
En-tête de requête
Standard
Non

Directives directives

<device_information>

Valeur Base64-encoded de l’élément JSON contenant au moins les attributs marqués comme requis par le tableau suivant.

Présence
Clé
Description
Restricted
Valeurs possibles
primaryHardwareType
Type de matériel principal de l’appareil.

Les valeurs sont limitées :

  • Appareil Photo
  • DataCollectionTerminal
  • Bureau
  • EmbeddedNetworkModule
  • Reader
  • Console Jeux
  • GeolocationTracker
  • Lunettes
  • MediaPlayer
  • Téléphone portable
  • PaymentTerminal
  • PluginModem
  • SetTopBox
  • TV
  • Tablette
  • Zone réactive sans fil
  • Montre-bracelet
  • Inconnu
obligatoire
modèle
Nom du modèle de l’appareil.
par ex. iPhone, SM-G930V, AppleTV, etc.
obligatoire
version
Version de l’appareil.
par ex. 2.0.1, etc.
fabricant
Entreprise/organisation de fabrication de l’appareil.
par ex. Samsung, LG, ZTE, Huawei, Motorola, Apple, etc.
marchand
Société/organisation de vente de l’appareil.
par ex. Apple, Samsung, LG, Google, etc.
obligatoire
osName
Nom du système d’exploitation (SE) de l’appareil.

Les valeurs sont limitées :

  • Android
  • SE CHROME
  • Linux
  • Mac OS
  • OS X
  • OpenBSD
  • Roku OS
  • Windows
  • iOS
  • tvOS
  • webOS
osFamily
Nom du groupe du système d’exploitation (SE) de l’appareil.

Les valeurs sont limitées :

  • Android
  • BSD
  • Linux
  • Système d’exploitation PlayStation
  • Roku OS
  • Symbien
  • Tizen
  • Windows
  • iOS
  • tvOS
  • macOS
  • webOS
osVendor
Fournisseur du système d’exploitation de l’appareil.

Les valeurs sont limitées :

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • Nintendo
  • Nokia
  • Roku
  • Samsung
  • Sony
  • Projet Tizen
obligatoire
osVersion
Version du système d’exploitation (SE) de l’appareil.
par ex. 10.2, 9.0.1, etc.
browserName
Nom du navigateur.

Les valeurs sont limitées :

  • Navigateur Android
  • Chrome
  • Edge
  • Firefox
  • Internet Explorer
  • Opéra
  • Safari
  • SeaMonkey
  • Navigateur Symbian
browserVendor
Société/organisation de création du navigateur.

Les valeurs sont limitées :

  • Amazon
  • Apple
  • Google
  • Microsoft
  • Motorola
  • Mozilla
  • Netscape
  • Nintendo
  • Nokia
  • Samsung
  • Sony Ericsson
browserVersion
Version du navigateur de l’appareil.
par ex. 60.0.3112
userAgent
User agent de l’appareil.
par ex. Mozilla/5.0 (Macintosh ; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, comme Gecko) Version/10.0.3 Safari/602.4.8
displayWidth
Largeur de l’écran physique de l’appareil.
displayHeight
Hauteur d’écran physique de l’appareil.
displayPpi
Densité en pixels de l’écran physique de l’appareil.
par ex. 294
diagonalScreenSize
Dimension diagonale de l’écran physique de l’appareil en pouces.
par ex. 5.5, 10.1
connectionIp
Adresse IP de l’appareil utilisée pour envoyer les requêtes HTTP.
par ex. 8.8.4.4
connectionPort
Port de l’appareil utilisé pour l’envoi de requêtes HTTP.
par ex. 53124
obligatoire
connectionType
Type de connexion réseau.
par ex. WiFi, LAN, 3G, 4G, 5G
connectionSecure
Statut de sécurité de la connexion réseau.

Les valeurs sont limitées :

  • true - dans le cas d’un réseau sécurisé
  • false - dans le cas d’un point chaud public
applicationId
Identifiant unique de l’application.
par ex. REF30

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

Livres de cuisine cookbooks

IMPORTANT
Les fragments de code et les ressources de documentation sont fournis à des fins de référence.
Les fragments de code ne sont pas exhaustifs et peuvent nécessiter des modifications supplémentaires pour fonctionner dans votre projet.
Quelle que soit votre implémentation actuelle, l’en-tête de X-Device-Info doit contenir une valeur formatée comme décrit dans la section Directives.

Pour les applications clientes s’exécutant dans un navigateur, l’en-tête X-Device-Info peut être omis, car le navigateur envoie automatiquement un ensemble minimal d’informations requises dans l’en-tête User-Agent.

Vous pouvez toujours utiliser l’en-tête X-Device-Info pour fournir des informations supplémentaires sur l’appareil, la connexion et l’application, au cas où votre application cliente intègre une bibliothèque ou un service qui fournit un mécanisme d’identification de l’appareil.

Appareils mobiles mobile-devices

iOS et iPadOS ios-ipados

Pour créer l’en-tête X-Device-Info pour les appareils exécutant iOS ou iPadOS, vous pouvez vous reporter aux documents suivants et au fragment de code ci-dessous :

  • Documentation Apple destinée aux développeurs pour UIDevice.
  • Documentation Apple destinée aux développeurs pour accessibilité.
  • Documentation manuelle Linux pour 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;
}

Les informations sur le périphérique peuvent être structurées de la manière suivante :

Clé
Source
Valeur (exemple)
modèle
uname.machine
iPhone
marchand
codé en dur
Apple
fabricant
codé en dur
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
320
displayHeight
UIScreen.mainScreen
568
osName
UIDevice.systemName
iOS
osVersion
UIDevice.systemVersion
10,2

Les informations de connexion peuvent être construites comme suit :

Clé
Source
Valeur (exemple)
connectionType
[Reachability currentReachabilityStatus]
connectionSecure

Les informations d’application peuvent être structurées comme suit :

Clé
Source
Valeur (exemple)
applicationId
codé en dur
REF30

Android android

Pour créer l’en-tête X-Device-Info pour les appareils exécutant Android, vous pouvez vous reporter aux documents suivants et au fragment de code ci-dessous :

  • Documentation Android destinée aux développeurs pour 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);
}

Les informations sur le périphérique peuvent être structurées de la manière suivante :

Clé
Source
Valeur (exemple)
modèle
Build.MODEL
GT-I9505
marchand
Build.BRAND
samsung
fabricant
Build.MANUFACTURER
samsung
version
Build.DEVICE
fusiller
displayWidth
DisplayMetrics.widthPixels
600
displayHeight
DisplayMetrics.heightPixels
800
osName
codé en dur
Android
osVersion
Build.VERSION.RELEASE
5.0.1

Les informations de connexion peuvent être construites comme suit :

Clé
Source
Valeur (exemple)
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

Les informations d’application peuvent être structurées comme suit :

Clé
Source
Valeur (exemple)
applicationId
codé en dur
REF30

Appareils connectés au téléviseur tv-connected-devices

tvOS tvos

Pour créer l’en-tête X-Device-Info pour les appareils exécutant tvOS, vous pouvez vous reporter aux documents suivants et au fragment de code ci-dessous :

  • Documentation Apple destinée aux développeurs pour UIDevice.
  • Documentation Apple destinée aux développeurs pour accessibilité.
  • Documentation manuelle Linux pour 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;
}

Les informations sur le périphérique peuvent être structurées de la manière suivante :

Clé
Source
Valeur (exemple)
modèle
uname.machine
AppleTV
marchand
codé en dur
Apple
fabricant
codé en dur
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
1920
displayHeight
UIScreen.mainScreen
1080
osName
UIDevice.systemName
tvOS
osVersion
UIDevice.systemVersion
10,2

Les informations de connexion peuvent être construites comme suit :

Clé
Source
Valeur (exemple)
connectionType
[Reachability currentReachabilityStatus]
connectionSecure

Les informations d’application peuvent être structurées comme suit :

Clé
Source
Valeur (exemple)
applicationId
codé en dur
REF30

Système d’exploitation Fire fireos

Pour créer l’en-tête X-Device-Info pour les appareils exécutant Fire OS, vous pouvez vous reporter aux documents suivants :

Les informations sur le périphérique peuvent être structurées de la manière suivante :

Clé
Source
Valeur (exemple)
modèle
Build.MODEL
AFTM
marchand
Build.BRAND
Amazon
fabricant
Build.MANUFACTURER
Amazon
version
Build.DEVICE
montoya
displayWidth
DisplayMetrics.widthPixels
displayHeight
DisplayMetrics.heightPixels
osName
codé en dur
Android
osVersion
Build.VERSION.RELEASE
5.1.1

Les informations de connexion peuvent être construites comme suit :

Clé
Source
Valeur (exemple)
connectionType
connectionSecure

Les informations d’application peuvent être structurées comme suit :

Clé
Source
Valeur (exemple)
applicationId
codé en dur
REF30

Roku OS rokuos

Pour créer l’en-tête X-Device-Info pour les appareils exécutant Roku OS, vous pouvez vous reporter aux documents suivants :

  • Documentation Roku destinée aux développeurs pour ifDeviceInfo.

Les informations sur le périphérique peuvent être structurées de la manière suivante :

Clé
Source
Valeur (exemple)
modèle
codé en dur
« Roku »
marchand
ifDeviceInfo.GetModelDetails().VendorName
« Sharp », « Roku »
fabricant
ifDeviceInfo.GetModelDetails().VendorName
« Sharp », « Roku »
version
ifDeviceInfo.GetModelDetails().ModelNumber
»5303X »
displayWidth
ifDeviceInfo.GetDisplaySize().w
1920
displayHeight
ifDeviceInfo.GetDisplaySize().h
1080
osName
codé en dur
« Roku »
osVersion
ifDeviceInfo.getVersion()

Les informations de connexion peuvent être construites comme suit :

Clé
Source
Valeur (exemple)
connectionType
ifDeviceInfo.GetConnectionType()
« WifiConnection », « WiredConnection »
connectionSecure
codé en dur
true si la connexion est câblée

Les informations d’application peuvent être structurées comme suit :

Clé
Source
Valeur (exemple)
applicationId
codé en dur
REF30

Autres others

Pour les plateformes d’appareils non couvertes dans la documentation, les informations client (appareil, connexion et application) doivent être liées à tous les attributs matériels et de système d’exploitation disponibles, généralement spécifiés dans les manuels relatifs au matériel et au système d’exploitation de l’appareil.

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