Koptekst - X-Apparaat-Info header-x-device-info
Overzicht overview
De x-apparaat-Info verzoekkopbal bevat de cliëntinformatie (apparaat, verbinding en toepassing) met betrekking tot het daadwerkelijke het stromen apparaat.
Syntaxis syntax
Richtlijnen directives
<device_information>
De Base64-encoded
-waarde van het JSON-element dat ten minste de kenmerken bevat die zijn gemarkeerd als vereist door de volgende tabel.
Voorbeelden 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
X-Device-Info
kopbal een waarde bevatten die zoals in de wordt beschreven Richtlijnensectie.Browsers browsers
Voor clienttoepassingen die in een browser worden uitgevoerd, kan de header X-Device-Info
worden weggelaten omdat de browser automatisch een minimale set vereiste informatie in de header van User-Agent
verzendt.
U kunt de header van X-Device-Info
nog steeds gebruiken om aanvullende informatie over het apparaat, de verbinding en de toepassing op te geven, voor het geval dat uw clienttoepassing een bibliotheek of service integreert die een apparaat-identificatiemechanisme biedt.
Mobiele apparaten mobile-devices
iOS en iPadOS ios-ipados
Om de X-Device-Info
kopbal voor apparaten te bouwen die iOS of iPadOSin werking stellen, kunt u naar de volgende documenten en onder codefragment verwijzen:
- Apple ontwikkelaarsdocumentatie voor UIDevice.
- Apple ontwikkelaarsdocumentatie voor Reachability.
- De handdocumentatie van Linux voor 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;
}
De informatie over de voorziening kan als volgt worden samengesteld:
De verbindingsgegevens kunnen als volgt worden samengesteld:
De toepassingsinformatie kan als volgt worden samengesteld:
Android android
Om de X-Device-Info
kopbal voor apparaten te bouwen die Androidin werking stellen, kunt u naar de volgende documenten en onder codefragment verwijzen:
- De ontwikkelaarsdocumentatie van Android voor bouwtklasse.
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);
}
De informatie over de voorziening kan als volgt worden samengesteld:
De verbindingsgegevens kunnen als volgt worden samengesteld:
<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"
De toepassingsinformatie kan als volgt worden samengesteld:
Op tv aangesloten apparaten tv-connected-devices
tvOS tvos
Om de X-Device-Info
kopbal voor apparaten te bouwen die tvOSin werking stellen, kunt u naar de volgende documenten en onder codefragment verwijzen:
- Apple ontwikkelaarsdocumentatie voor UIDevice.
- Apple ontwikkelaarsdocumentatie voor Reachability.
- De handdocumentatie van Linux voor 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;
}
De informatie over de voorziening kan als volgt worden samengesteld:
De verbindingsgegevens kunnen als volgt worden samengesteld:
De toepassingsinformatie kan als volgt worden samengesteld:
Fire OS fireos
Om de X-Device-Info
kopbal voor apparaten te bouwen die Vuur OSin werking stellen, kunt u naar de volgende documenten verwijzen:
- De ontwikkelaarsdocumentatie van Android voor bouwtklasse.
- De ontwikkelaarsdocumentatie van Amazon voor het identificeren van de Apparaten van TV van het Vuur.
De informatie over de voorziening kan als volgt worden samengesteld:
De verbindingsgegevens kunnen als volgt worden samengesteld:
De toepassingsinformatie kan als volgt worden samengesteld:
Roku OS rokuos
Om de X-Device-Info
kopbal voor apparaten te bouwen die Roku OSin werking stellen, kunt u naar de volgende documenten verwijzen:
- De ontwikkelaarsdocumentatie van Roku voor ifDeviceInfo.
De informatie over de voorziening kan als volgt worden samengesteld:
De verbindingsgegevens kunnen als volgt worden samengesteld:
De toepassingsinformatie kan als volgt worden samengesteld: