ドキュメントAdobe PassAdobe Pass 認証

ヘッダー – X-Device-Info

最終更新日: 2025年5月5日
  • トピック:
  • 認証
メモ
このページのコンテンツは情報提供のみを目的としています。 この API を使用するには、Adobeの最新ライセンスが必要です。 無許可の使用は許可されていません。

概要

X-Device-Info 要求ヘッダーは、実際のストリーミング デバイスに関連するクライアント情報(デバイス、接続、およびアプリケーション)を格納し、MVPD が適用する可能性のあるプラットフォーム固有のルールを決定するために使用されます。

構文

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

ディレクティブ

<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
connectionIpHTTP リクエストの送信に使用するデバイスの IP。例 8.8.4.4
connectionPortHTTP リクエストの送信に使用するデバイスのポート。例:53124
必須connectionTypeネットワーク接続タイプ。例:WiFi、LAN、3G、4G、5G
connectionSecureネットワーク接続のセキュリティの状態。✓

値は制限されています。

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

例

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

クックブック

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

ブラウザー

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

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

モバイルデバイス

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 を実行するデバイスの 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

テレビ接続デバイス

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

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

  • ビルドクラスのAndroid開発者向けドキュメント。
  • Amazon開発者向けドキュメント Fire TV デバイスの識別。

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

キー
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

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

その他

ドキュメントに記載されていないデバイスプラットフォームの場合、クライアント情報(デバイス、接続、アプリケーション)は、通常、デバイスのハードウェアおよび OS のマニュアルに記載されている利用可能なハードウェアおよび OS の属性にリンクする必要があります。

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