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

NOTE
Innehållet på den här sidan tillhandahålls endast i informationssyfte. Användning av denna API kräver en aktuell licens från Adobe. Ingen obehörig användning är tillåten.

Ökning overview

Huvudet X-Device-Info innehåller klientinformationen (enhet, anslutning och program) som är relaterad till den faktiska direktuppspelningsenheten och används för att fastställa plattformsspecifika regler som MVPD-program kan tillämpa.

Syntax syntax

X-Device-Info: <enhetsinformation>
Huvudtyp
Huvud för begäran
Standard
Nej

Direktiv directives

<device_information>

Värdet Base64-encoded för JSON-elementet som innehåller minst de attribut som markerats enligt följande tabell.

Närvaro
Nyckel
Beskrivning
Begränsad
Möjliga värden
primärHardwareType
Enhetens primära maskinvarutyp.

Värdena är begränsade:

  • Kamera
  • DataCollectionTerminal
  • Skrivbord
  • EmbeddedNetworkModule
  • eReader
  • GamesConsole
  • GeolocationTracker
  • Glasögon
  • MediaPlayer
  • MobilePhone
  • PaymentTerminal
  • PluginModem
  • SetTopBox
  • TV
  • Tablet
  • WirelessHotspot
  • Armur
  • Okänd
obligatoriskt
modell
Enhetens modellnamn.
t.ex. iPhone, SM-G930V, AppleTV osv.
obligatoriskt
version
Enhetens version.
t.ex. 2.0.1 osv.
tillverkare
Tillverkningsföretaget/tillverkningsorganisationen för enheten.
t.ex. Samsung, LG, ZTE, Huawei, Motorola, Apple osv.
leverantör
Enhetens säljande företag/organisation.
t.ex. Apple, Samsung, LG, Google osv.
obligatoriskt
osName
Enhetens operativsystemnamn.

Värdena är begränsade:

  • Android
  • CHROME OS
  • Linux
  • MAC OS
  • OS X
  • OpenBSD
  • Roku OS
  • Windows
  • iOS
  • tvOS
  • webOS
osFamily
Enhetens operativsystemsgruppnamn.

Värdena är begränsade:

  • Android
  • BSD
  • Linux
  • PlayStation OS
  • Roku OS
  • Symbian
  • Tizen
  • Windows
  • iOS
  • tvOS
  • macOS
  • webOS
osVendor
Enhetens operativsystemsleverantör.

Värdena är begränsade:

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • Nintendo
  • Nokia
  • Roku
  • Samsung
  • Sony
  • Tizen Project
obligatoriskt
osVersion
Enhetens operativsystemversion.
t.ex. 10.2, 9.0.1 osv.
browserName
Webbläsarens namn.

Värdena är begränsade:

  • Android Browser
  • Chrome
  • Edge
  • Firefox
  • Internet Explorer
  • Opera
  • Safari
  • SeaMonkey
  • Symbian Browser
browserVendor
Webbläsarens byggföretag/organisation.

Värdena är begränsade:

  • Amazon
  • Apple
  • Google
  • Microsoft
  • Motorola
  • Mozilla
  • Netscape
  • Nintendo
  • Nokia
  • Samsung
  • Sony Ericsson
browserVersion
Enhetens webbläsarversion.
Exempel: 60.0.3112
userAgent
Enhetens användaragent.
Exempel: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML, t.ex. Gecko) Version/10.0.3 Safari/602.4.8
displayWidth
Enhetens fysiska skärmbredd.
displayHeight
Enhetens fysiska skärmhöjd.
displayPpi
Enhetens pixeldensitet på den fysiska skärmen.
Exempel: 294
diagonalScreenSize
Enhetens diagonala mått för fysisk skärm i tum.
t.ex. 5.5, 10.1
connectionIp
Enhetens IP-adress som används för att skicka HTTP-begäranden.
t.ex. 8.8.4.4
connectionPort
Enhetens port som används för att skicka HTTP-begäranden.
till exempel 53124
obligatoriskt
connectionType
Nätverksanslutningstypen.
t.ex. WiFi, LAN, 3G, 4G, 5G
connectionSecure
Säkerhetsstatus för nätverksanslutning.

Värdena är begränsade:

  • true - om det är ett säkert nätverk
  • false - om det är en offentlig aktiv punkt
applicationId
Programmets unika identifierare.
t.ex. REF30

Exempel 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
Kodfragmenten och dokumentationsresurserna tillhandahålls i referenssyfte.
Kodfragmenten är inte fullständiga och kan kräva ytterligare ändringar för att fungera i ditt projekt.
Oavsett vilken implementering du har måste rubriken X-Device-Info innehålla ett värde som är formaterat enligt beskrivningen i avsnittet ​ Direktiv ​ .

Webbläsare browsers

För klientprogram som körs i en webbläsare kan rubriken X-Device-Info utelämnas eftersom webbläsaren automatiskt skickar en minimiuppsättning obligatorisk information i rubriken User-Agent.

Du kan fortfarande använda rubriken X-Device-Info för att ge ytterligare information om enheten, anslutningen och programmet om klientprogrammet integrerar ett bibliotek eller en tjänst som tillhandahåller en enhetsidentifieringsmekanism.

Mobila enheter mobile-devices

iOS & iPadOS ios-ipados

Om du vill skapa X-Device-Info-rubriken för enheter som kör iOS eller iPadOS kan du läsa följande dokument och under kodfragmentet:

  • Apple utvecklardokumentation för UIDevice.
  • Apple utvecklardokumentation för nåbarhet.
  • Handbok för Linux 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;
}

Enhetsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
modell
uname.machine
iPhone
leverantör
hårdkodad
Apple
tillverkare
hårdkodad
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
320
displayHeight
UIScreen.mainScreen
568
osName
UIDevice.systemName
iOS
osVersion
UIDevice.systemVersion
10,2

Anslutningsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
connectionType
[Nyttjbarhet currentReachabilityStatus]
connectionSecure

Programinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
applicationId
hårdkodad
REF30

Android android

Om du vill skapa X-Device-Info-rubriken för enheter som kör Android kan du läsa följande dokument och under kodfragment:

  • Android utvecklardokumentation för klassen 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);
}

Enhetsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
modell
Build.MODEL
GT-I9505
leverantör
Build.BRAND
samsung
tillverkare
Build.MANUFACTURER
samsung
version
Build.DEVICE
jflte
displayWidth
DisplayMetrics.widthPixels
600
displayHeight
DisplayMetrics.heightPixels
800
osName
hårdkodad
Android
osVersion
Build.VERSION.RELEASE
5.0.1

Anslutningsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
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

Programinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
applicationId
hårdkodad
REF30

TV-anslutna enheter tv-connected-devices

tvOS tvos

Om du vill skapa X-Device-Info-rubriken för enheter som kör tvOS kan du läsa följande dokument och kodfragment nedan:

  • Apple utvecklardokumentation för UIDevice.
  • Apple utvecklardokumentation för nåbarhet.
  • Handbok för Linux 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;
}

Enhetsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
modell
uname.machine
AppleTV
leverantör
hårdkodad
Apple
tillverkare
hårdkodad
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
1920
displayHeight
UIScreen.mainScreen
1080
osName
UIDevice.systemName
tvOS
osVersion
UIDevice.systemVersion
10,2

Anslutningsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
connectionType
[Nyttjbarhet currentReachabilityStatus]
connectionSecure

Programinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
applicationId
hårdkodad
REF30

Fire OS fireos

Om du vill skapa X-Device-Info-rubriken för enheter som kör Fire OS kan du läsa följande dokument:

Enhetsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
modell
Build.MODEL
AFTM
leverantör
Build.BRAND
Amazon
tillverkare
Build.MANUFACTURER
Amazon
version
Build.DEVICE
montoya
displayWidth
DisplayMetrics.widthPixels
displayHeight
DisplayMetrics.heightPixels
osName
hårdkodad
Android
osVersion
Build.VERSION.RELEASE
5.1.1

Anslutningsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
connectionType
connectionSecure

Programinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
applicationId
hårdkodad
REF30

Roku OS rokuos

Om du vill skapa X-Device-Info-rubriken för enheter som kör Roku OS kan du läsa följande dokument:

Enhetsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
modell
hårdkodad
"Roku"
leverantör
ifDeviceInfo.GetModelDetails().VendorName
"Sharp", "Roku"
tillverkare
ifDeviceInfo.GetModelDetails().VendorName
"Sharp", "Roku"
version
ifDeviceInfo.GetModelDetails().ModelNumber
"5303X"
displayWidth
ifDeviceInfo.GetDisplaySize().w
1920
displayHeight
ifDeviceInfo.GetDisplaySize().h
1080
osName
hårdkodad
"Roku"
osVersion
ifDeviceInfo.getVersion()

Anslutningsinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
connectionType
ifDeviceInfo.GetConnectionType()
"WifiConnection", "WiredConnection"
connectionSecure
hårdkodad
true om anslutningen är kopplad

Programinformationen kan utformas på följande sätt:

Nyckel
Source
Värde (exempel)
applicationId
hårdkodad
REF30

Övriga others

För enhetsplattformar som inte omfattas av dokumentationen bör klientinformationen (enhet, anslutning och program) länkas till alla tillgängliga maskinvaru- och operativsystemattribut (OS), som vanligtvis anges i enhetens maskinvaru- och OS-handböcker.

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