ヘッダー – X-Device-Info header-x-device-info

NOTE
このページのコンテンツは情報提供のみを目的としています。 この API を使用するには、Adobeから現在のライセンスが必要です。 無許可の使用は許可されていません。

概要 overview

X-Device-Info リクエストヘッダーには、実際のストリーミングデバイスに関連するクライアント情報(デバイス、接続、アプリケーション)が含まれます。

構文 syntax

X-Device-Info: <device_information>
ヘッダータイプ
リクエストヘッダー
標準
不可

ディレクティブ directives

<device_information>

次の表で必要とマークされた属性を少なくとも含む JSON 要素の Base64-encoded 値。

Presence
キー
説明
制限付き
可能な値
primary ハードウェアタイプ
デバイスの主要なハードウェアの種類。

値は制限されています。

  • カメラ
  • DataCollectionTerminal
  • デスクトップ
  • EmbeddedNetworkModule
  • eReader
  • ゲーム コンソール
  • GeolocationTracker
  • 眼鏡
  • MediaPlayer
  • MobilePhone
  • PaymentTerminal
  • PluginModem
  • SetTopBox
  • TV
  • タブレット
  • WirelessHotspot
  • 腕時計
  • 不明
必須
モデル
デバイスのモデル名。
例:iPhone、SM-G930V、AppleTV など
必須
version
デバイスのバージョン。
例:2.0.1 など
製造元
デバイスの製造会社/組織。
例:Samsung、LG、ZTE、Huawei、Motorola、Appleなど
ベンダー
デバイスの販売会社/組織。
例:Apple、Samsung、LG、Googleなど
必須
osName
デバイスのオペレーティングシステム(OS)名。

値は制限されています。

  • Android
  • CHROME OS
  • Linux
  • MAC OS
  • OS X
  • OpenBSD
  • Roku OS
  • Windows
  • iOS
  • tvOS
  • webOS
osFamily
デバイスのオペレーティングシステム(OS)グループ名。

値は制限されています。

  • Android
  • BSD
  • Linux
  • PlayStation OS
  • Roku OS
  • Symbian
  • Tizen
  • Windows
  • iOS
  • tvOS
  • macOS
  • webOS
osVendor
デバイスのオペレーティングシステム(OS)のサプライヤ。

値は制限されています。

  • Amazon
  • Apple
  • Google
  • LG
  • Microsoft
  • Mozilla
  • 任天堂
  • Nokia
  • Roku
  • Samsung
  • ソニー
  • Tizen プロジェクト
必須
osVersion
デバイスのオペレーティングシステム(OS)のバージョン。
例:10.2、9.0.1 など
browserName
ブラウザーの名前。

値は制限されています。

  • Androidブラウザー
  • Chrome
  • Edge
  • Firefox
  • Internet Explorer
  • Opera
  • Safari
  • 海猿
  • Symbian ブラウザ
browserVendor
ブラウザーの建物会社/組織。

値は制限されています。

  • Amazon
  • Apple
  • Google
  • Microsoft
  • モトローラ
  • Mozilla
  • Netscape
  • 任天堂
  • Nokia
  • Samsung
  • ソニーエリクソン
browserVersion
デバイスのブラウザーのバージョン。
例:60.0.3112
userAgent
デバイスのユーザーエージェント。
例:Mozilla/5.0 (Macintosh、Intel Mac OS X 10_12_3) AppleWebKit/602.4.8 (KHTML、Gecko など) Version/10.0.3 Safari/602.4.8
displayWidth
デバイスの物理的な画面の幅。
displayHeight
デバイスの物理的な画面の高さ。
displayPpi
デバイスの物理的な画面のピクセル密度。
例:294
diagonalScreenSize
デバイスの物理的な画面の斜めの寸法(インチ)。
例:5.5、10.1
connectionIp
HTTP リクエストの送信に使用するデバイスの IP。
例 8.8.4.4
connectionPort
HTTP リクエストの送信に使用するデバイスのポート。
例:53124
必須
connectionType
ネットワーク接続タイプ。
例:WiFi、LAN、3G、4G、5G
connectionSecure
ネットワーク接続のセキュリティの状態。

値は制限されています。

  • true – 安全なネットワークの場合
  • false – 公共のホットスポットの場合
applicationId
アプリケーションの一意の ID。
例:REF30

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

IMPORTANT
コードスニペットとドキュメントリソースは、参照用に提供されています。
コードスニペットは完全なものではないので、プロジェクトで機能させるには追加の変更が必要になる場合があります。
実際の実装に関係なく、X-Device-Info ヘッダーには、「 ディレクティブセクションで説明されている形式の値が含まれている必要があります。

ブラウザー browsers

ブラウザーで実行されているクライアントアプリケーションの場合、ブラウザーは X-Device-Info ヘッダーに必要な最小限の情報のセットを自動的に送信するので、User-Agent ヘッダーは省略できます。

引き続き X-Device-Info ヘッダーを使用して、デバイス、接続、およびアプリケーションに関する追加情報を提供できます。これは、デバイス識別メカニズムを提供するライブラリまたはサービスをクライアントアプリケーションが統合する場合に可能です。

モバイルデバイス mobile-devices

iOSと iPadOS ios-ipados

iOSまたは iPadOS を実行するデバイスの X-Device-Info ヘッダーを作成するには、次のドキュメントと以下のコードスニペットを参照してください。

  • UIDevice のApple開発者向けドキュメント。
  • Apple開発者向けドキュメント 到達可能性
  • uname に関する Linux マニュアルのドキュメント。
+ (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;
}

デバイス情報は、次のように構成できます。

キー
Source
値(例)
モデル
uname.machine
iPhone
ベンダー
ハードコード
Apple
製造元
ハードコード
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
320
displayHeight
UIScreen.mainScreen
568
osName
UIDevice.systemName
iOS
osVersion
UIDevice.systemVersion
10.2

接続情報は、次のように作成できます。

キー
Source
値(例)
connectionType
[Reachability currentReachabilityStatus]
connectionSecure

アプリケーション情報は、次の方法で作成できます。

キー
Source
値(例)
applicationId
ハードコード
REF30

Android android

Android を実行するデバイスの X-Device-Info ヘッダーを作成するには、次のドキュメントと以下のコードスニペットを参照します。

  • ビルドクラスのAndroid開発者向けドキュメント。
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);
}

デバイス情報は、次のように構成できます。

キー
Source
値(例)
モデル
Build.MODEL
GT-I9505
ベンダー
Build.BRAND
samsung
製造元
Build.MANUFACTURER
samsung
version
Build.DEVICE
jflte
displayWidth
DisplayMetrics.widthPixels
600
displayHeight
DisplayMetrics.heightPixels
800
osName
ハードコード
Android
osVersion
Build.VERSION.RELEASE
5.0.1

接続情報は、次のように作成できます。

キー
Source
値(例)
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

アプリケーション情報は、次の方法で作成できます。

キー
Source
値(例)
applicationId
ハードコード
REF30

テレビ接続デバイス tv-connected-devices

tvOS tvos

tvOS を実行するデバイスの X-Device-Info ヘッダーを作成するには、次のドキュメントと以下のコードスニペットを参照してください。

  • UIDevice のApple開発者向けドキュメント。
  • Apple開発者向けドキュメント 到達可能性
  • uname に関する Linux マニュアルのドキュメント。
+ (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;
}

デバイス情報は、次のように構成できます。

キー
Source
値(例)
モデル
uname.machine
AppleTV
ベンダー
ハードコード
Apple
製造元
ハードコード
Apple
version
uname.machine
8,1
displayWidth
UIScreen.mainScreen
1920
displayHeight
UIScreen.mainScreen
1080
osName
UIDevice.systemName
tvOS
osVersion
UIDevice.systemVersion
10.2

接続情報は、次のように作成できます。

キー
Source
値(例)
connectionType
[Reachability currentReachabilityStatus]
connectionSecure

アプリケーション情報は、次の方法で作成できます。

キー
Source
値(例)
applicationId
ハードコード
REF30

Fire OS fireos

Fire OS を実行するデバイスの X-Device-Info ヘッダーを作成するには、次のドキュメントを参照してください。

デバイス情報は、次のように構成できます。

キー
Source
値(例)
モデル
Build.MODEL
AFTM
ベンダー
Build.BRAND
Amazon
製造元
Build.MANUFACTURER
Amazon
version
Build.DEVICE
montoya
displayWidth
DisplayMetrics.widthPixels
displayHeight
DisplayMetrics.heightPixels
osName
ハードコード
Android
osVersion
Build.VERSION.RELEASE
5.1.1

接続情報は、次のように作成できます。

キー
Source
値(例)
connectionType
connectionSecure

アプリケーション情報は、次の方法で作成できます。

キー
Source
値(例)
applicationId
ハードコード
REF30

Roku OS rokuos

Roku OS を実行するデバイスの X-Device-Info ヘッダーを作成するには、次のドキュメントを参照してください。

  • ifDeviceInfo 用の Roku 開発者向けドキュメント。

デバイス情報は、次のように構成できます。

キー
Source
値(例)
モデル
ハードコード
「Roku」
ベンダー
ifDeviceInfo.GetModelDetails().VendorName
「シャープ」「Roku」
製造元
ifDeviceInfo.GetModelDetails().VendorName
「シャープ」「Roku」
version
ifDeviceInfo.GetModelDetails().ModelNumber
"5303X"
displayWidth
ifDeviceInfo.GetDisplaySize().w
1920
displayHeight
ifDeviceInfo.GetDisplaySize().h
1080
osName
ハードコード
「Roku」
osVersion
ifDeviceInfo.getVersion()

接続情報は、次のように作成できます。

キー
Source
値(例)
connectionType
ifDeviceInfo.GetConnectionType()
"WifiConnection", "WiredConnection"
connectionSecure
ハードコード
接続がワイヤリングされている場合は true

アプリケーション情報は、次の方法で作成できます。

キー
Source
値(例)
applicationId
ハードコード
REF30
recommendation-more-help
3f5e655c-af63-48cc-9769-2b6803cc5f4b