DokumentationAdobe PassAdobe Pass-Authentifizierung

Kopfzeile - x-device-info

Letzte Aktualisierung: 5. Mai 2025
  • Themen:
  • Authentifizierung
HINWEIS
Der Inhalt dieser Seite dient nur zu Informationszwecken. Die Verwendung dieser API erfordert eine aktuelle Lizenz von Adobe. Eine unbefugte Nutzung ist nicht zulässig.

Übersicht

Der X-Device-Info-Anfrage-Header enthält die Client-Informationen (Gerät, Verbindung und Anwendung), die sich auf das eigentliche Streaming-Gerät beziehen, und wird verwendet, um plattformspezifische Regeln zu bestimmen, die von MVPDs erzwungen werden können.

Syntax

X-Device-Info: <device_information>
KopfzeilentypAnfrage-Header
StandardNein

Anweisungen

<device_information>

Der Base64-encoded des JSON-Elements, das mindestens die Attribute enthält, die in der folgenden Tabelle als erforderlich markiert sind.

PräsenzSchlüsselBeschreibungeingeschränktMögliche Werte
primaryHardwareTypeDer primäre Hardwaretyp des Geräts.✓

Die Werte sind eingeschränkt:

  • Kamera
  • DataCollectionTerminal
  • Desktop
  • EmbeddedNetworkModule
  • Lesegerät
  • Spielekonsole
  • GeolocationTracker
  • Brille
  • MediaPlayer
  • Mobiltelefon
  • Zahlungsterminal
  • Plug-inModem
  • SetTopBox
  • TV
  • Tablet
  • Wireless-Hotspot
  • Armbanduhr
  • Unbekannt
requiredModellDer Modellname des Geräts.z. B. iPhone, SM-G930V, AppleTV usw.
requiredVersionDie Version des Geräts.z. B. 2.0.1 usw.
HerstellerDie Produktionsfirma/-organisation des Geräts.z. B. Samsung, LG, ZTE, Huawei, Motorola, Apple usw.
LieferantDie verkaufende Firma/Organisation des Geräts.z. B. Apple, Samsung, LG, Google usw.
requiredosNameDer Name des Betriebssystems (OS) des Geräts.✓

Die Werte sind eingeschränkt:

  • Android
  • CHROME OS
  • Linux
  • MAC OS
  • OS X
  • OpenBSD
  • Roku OS
  • Windows
  • iOS
  • tvOS
  • webOS
BetriebssystemfamilieDer Gruppenname des Betriebssystems (OS) des Geräts.✓

Die Werte sind eingeschränkt:

  • Android
  • BSD
  • Linux
  • PlayStation OS
  • Roku OS
  • Symbian
  • Tizen
  • Windows
  • iOS
  • tvOS
  • macOS
  • webOS
BetriebssystemanbieterDer Anbieter des Betriebssystems (OS) des Geräts.✓

Die Werte sind eingeschränkt:

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • Nintendo
  • Nokia
  • Roku
  • Samsung
  • Sony
  • Tizen-Projekt
requiredosVersionDie Betriebssystemversion des Geräts.z. B. 10.2, 9.0.1 usw.
browserNameDer Name des Browsers.✓

Die Werte sind eingeschränkt:

  • Android-Browser
  • Chrome
  • Edge
  • Firefox
  • Internet Explorer
  • Oper
  • Safari
  • Salinenkrebs
  • Symbian Browser
browserVendorDie Firma/Organisation, die den Browser erstellt.✓

Die Werte sind eingeschränkt:

  • Amazon
  • Apple
  • Google
  • Microsoft
  • Motorola
  • Mozilla
  • Netscape
  • Nintendo
  • Nokia
  • Samsung
  • Sony Ericsson
browserVersionDie Browser-Version des Geräts.z. B. 60.0.3112
userAgentDer Benutzeragent des Geräts.z. B. Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, wie Gecko) Version/10.0.3 Safari/602.4.8
displayWidthDie physische Bildschirmbreite des Geräts.
displayHeightDie physische Bildschirmhöhe des Geräts.
displayPpiDie physische Pixeldichte des Bildschirms des Geräts.Beispiel: 294
diagonalScreenSizeDie Bildschirmdiagonale des Geräts in Zoll.z. B. 5.5, 10.1
connectionIPDie IP des Geräts, die zum Senden von HTTP-Anfragen verwendet wird.z. B. 8.8.4.4
connectionPortDer Port des Geräts, der zum Senden von HTTP-Anfragen verwendet wird.z. B. 53124
requiredconnectionTypeDer Netzwerkverbindungstyp.z. B. WiFi, LAN, 3G, 4G, 5G
connectionSecureDer Sicherheitsstatus der Netzwerkverbindung.✓

Die Werte sind eingeschränkt:

  • true - bei einem sicheren Netzwerk
  • false : Im Fall eines öffentlichen Hotspots
applicationIdDie eindeutige Kennung der Anwendung.z. B. REF30

Beispiele

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

IMPORTANT
Die Code-Snippets und Dokumentationsressourcen werden zu Referenzierungszwecken bereitgestellt.
Die Codeausschnitte sind nicht vollständig und erfordern möglicherweise zusätzliche Änderungen, um in Ihrem Projekt zu funktionieren.
Unabhängig von Ihrer tatsächlichen Implementierung muss die X-Device-Info-Kopfzeile einen Wert enthalten, der wie im Abschnitt Anweisungen beschrieben formatiert ist.

Browser

Bei Client-Anwendungen, die in einem Browser ausgeführt werden, kann die X-Device-Info-Kopfzeile weggelassen werden, da der Browser automatisch einen minimalen Satz der erforderlichen Informationen in der User-Agent-Kopfzeile sendet.

Sie können den X-Device-Info-Header weiterhin verwenden, um zusätzliche Informationen über das Gerät, die Verbindung und das Programm bereitzustellen, falls Ihre Client-Anwendung eine Bibliothek oder einen Service integriert, die bzw. der einen Mechanismus zur Geräteerkennung bereitstellt.

Mobilgeräte

iOS und iPadOS

Um den X-Device-Info-Header für Geräte zu erstellen, auf denen iOS oder iPadOS ausgeführt wird, können Sie die folgenden Dokumente und das folgende Codefragment lesen:

  • Apple-Entwicklerdokumentation für UIDevice.
  • Apple-Entwicklerdokumentation für Erreichbarkeit.
  • Linux-Dokumentation für 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;
}

Die Geräteinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
Modell
uname.machine
iPhone
Lieferant
hartcodiert
Apple
Hersteller
hartcodiert
Apple
Version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
320
displayHeight
UIScreen.mainScreen
568
osName
UIDevice.systemName
iOS
osVersion
UIDevice.systemVersion
10,2

Die Verbindungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
connectionType
[Erreichbarkeit currentReachabilityStatus]
connectionSecure

Die Anwendungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
applicationId
hartcodiert
REF30

Android

Um den X-Device-Info-Header für Geräte zu erstellen, auf denen Android ausgeführt wird, können Sie die folgenden Dokumente und das folgende Codefragment lesen:

  • Android-Entwicklerdokumentation für Build-Klasse.
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);
}

Die Geräteinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
Modell
Build.MODEL
GT-I9505
Lieferant
Build.BRAND
Samsung
Hersteller
Build.MANUFACTURER
Samsung
Version
Build.DEVICE
Kehllappen
displayWidth
DisplayMetrics.widthPixels
600
displayHeight
DisplayMetrics.heightPixels
800
osName
hartcodiert
Android
osVersion
Build.VERSION.RELEASE
5,0,1

Die Verbindungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
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

Die Anwendungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
applicationId
hartcodiert
REF30

TV-Geräte angeschlossen

tvOS

Um den X-Device-Info-Header für Geräte zu erstellen, auf denen tvOS ausgeführt wird, lesen Sie die folgenden Dokumente und das folgende Codefragment:

  • Apple-Entwicklerdokumentation für UIDevice.
  • Apple-Entwicklerdokumentation für Erreichbarkeit.
  • Linux-Dokumentation für 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;
}

Die Geräteinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
Modell
uname.machine
AppleTV
Lieferant
hartcodiert
Apple
Hersteller
hartcodiert
Apple
Version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
1920
displayHeight
UIScreen.mainScreen
1080
osName
UIDevice.systemName
tvOS
osVersion
UIDevice.systemVersion
10,2

Die Verbindungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
connectionType
[Erreichbarkeit currentReachabilityStatus]
connectionSecure

Die Anwendungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
applicationId
hartcodiert
REF30

Betriebssystem auslösen

Informationen zum Erstellen des X-Device-Info-Headers für Geräte, auf „Fire OS ausgeführt wird, finden Sie in den folgenden Dokumenten:

  • Android-Entwicklerdokumentation für Build-Klasse.
  • Amazon-Entwicklerdokumentation für Identifizieren von Fire-TV-)

Die Geräteinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
Modell
Build.MODEL
AFTM
Lieferant
Build.BRAND
Amazon
Hersteller
Build.MANUFACTURER
Amazon
Version
Build.DEVICE
Montoya
displayWidth
DisplayMetrics.widthPixels
displayHeight
DisplayMetrics.heightPixels
osName
hartcodiert
Android
osVersion
Build.VERSION.RELEASE
5.1.1

Die Verbindungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
connectionType
connectionSecure

Die Anwendungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
applicationId
hartcodiert
REF30

Roku OS

Informationen zum Erstellen des X-Device-Info-Headers für Geräte, auf (Roku OS ausgeführt wird, finden Sie in den folgenden Dokumenten:

  • Roku-Entwicklerdokumentation für ifDeviceInfo.

Die Geräteinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
Modell
hartcodiert
„Roku“
Lieferant
ifDeviceInfo.GetModelDetails().VendorName
„Scharf“, „Roku“
Hersteller
ifDeviceInfo.GetModelDetails().VendorName
„Scharf“, „Roku“
Version
ifDeviceInfo.GetModelDetails().ModelNumber
„5303X“
displayWidth
ifDeviceInfo.GetDisplaySize().w
1920
displayHeight
ifDeviceInfo.GetDisplaySize().h
1080
osName
hartcodiert
„Roku“
osVersion
ifDeviceInfo.getVersion()

Die Verbindungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
connectionType
ifDeviceInfo.GetConnectionType()
„WifiConnection“, „WiredConnection“
connectionSecure
hartcodiert
Wahr, wenn die Verbindung verkabelt ist

Die Anwendungsinformationen können wie folgt aufgebaut werden:

Schlüssel
Source
Wert (Beispiel)
applicationId
hartcodiert
REF30

Sonstige

Für Geräteplattformen, die nicht in der Dokumentation behandelt werden, sollten die Client-Informationen (Gerät, Verbindung und Anwendung) mit allen verfügbaren Hardware- und Betriebssystemattributen verknüpft werden, die normalerweise in den Hardware- und Betriebssystemhandbüchern des Geräts angegeben sind.

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