클라이언트 정보 전달(장치, 연결 및 애플리케이션) pass-client-info
범위 pass-client-info-scope
이 문서에서는 프로그래머 애플리케이션에서 Adobe Pass 인증 REST API 또는 SDK로 클라이언트 정보(장치, 연결 및 애플리케이션)를 전달하기 위한 세부 정보 및 쿠키 설명서를 집계합니다.
클라이언트 정보 제공의 이점은 다음과 같습니다.
- HBA를 지원할 수 있는 일부 디바이스 유형 및 MVPD의 경우 HBA(Home Base Authentication)를 올바르게 설정할 수 있습니다.
- 일부 디바이스 유형의 경우 TTL을 올바르게 적용하는 기능(예: TV에 연결된 디바이스의 인증 세션에 대해 더 긴 TTL을 구성).
- ESM(자격 서비스 모니터링)을 사용하여 장치 유형 간에 분류된 보고서에서 비즈니스 지표를 올바르게 집계하는 기능입니다.
- 다양한 비즈니스 규칙을 적절하게 적용하는 기능을 차단 해제합니다(예: 성능 저하).
개요 pass-client-info-overview
클라이언트 정보는 다음과 같이 구성됩니다.
- 장치 사용자가 프로그래머 콘텐츠를 사용하려는 장치의 하드웨어 및 소프트웨어 특성에 대한 정보입니다.
- 연결 사용자가 Adobe Pass 인증 서비스 및/또는 프로그래머 서비스(예: 서버 간 구현)에 연결하는 장치의 연결 특성에 대한 정보입니다.
- 응용 프로그램 사용자가 프로그래머 콘텐츠를 사용하려는 등록된 응용 프로그램에 대한 정보입니다.
클라이언트 정보는 다음 표에 표시된 키로 구축된 JSON 개체입니다.
primaryHardwareType
, osName
, osFamily
, browserName
, browserVendor
, connectionSecure
키에 restricted 값이 있습니다.API 참조 api-ref
이 섹션에서는 Adobe Pass 인증 REST API 또는 SDK를 사용할 때 클라이언트 정보를 처리하는 API에 대해 설명합니다.
나머지 API rest-api
Adobe Pass 인증 서비스는 다음과 같은 방법으로 클라이언트 정보 수신을 지원합니다.
- 헤더로서: "X-Device-Info"
- 쿼리 매개 변수: "device_info"
- post 매개 변수로: "device_info"
SDK
JAVASCRIPT SDK js-sdk
AccessEnabler JavaScript SDK는 기본적으로 클라이언트 정보 JSON 개체를 빌드하며, 이 개체는 재정의되지 않는 한 Adobe Pass 인증 서비스에 전달됩니다.
AccessEnabler JavaScript SDK는 setRequestor의 applicationId 옵션 매개 변수를 통해 클라이언트 정보 JSON 개체에서 "applicationId" 키만 재정의 할 수 있습니다.
applicationId
매개 변수 값은 일반 텍스트 문자열 값이어야 합니다.프로그래머 애플리케이션에서 applicationId를 전달하기로 결정한 경우 나머지 클라이언트 정보 키는 AccessEnabler JavaScript SDK에서 계속 계산됩니다.
iOS/tvOs SDK ios-tvos-sdk
AccessEnabler iOS/tvOS SDK는 기본적으로 클라이언트 정보 JSON 개체를 빌드하며, 이 개체는 재정의되지 않는 한 Adobe Pass 인증 서비스에 전달됩니다.
AccessEnabler iOS/tvOS SDK는 setOptions의 device_info 매개 변수를 통해 전체 클라이언트 정보 JSON 개체를 재정의할 수 있습니다.
Android/Fireos SDK and-fire-os-sdk
AccessEnabler
Android/FireOS SDK는 기본적으로 클라이언트 정보 JSON 개체를 빌드하며, 재정의되지 않는 한 Adobe Pass 인증 서비스로 전달됩니다.
AccessEnabler
Android/FireOS SDK는 setOptions의/setOptions의 device_info
매개 변수를 통해 전체 클라이언트 정보 JSON 개체를 재정의할 수 있습니다.
device_info
매개 변수 값은 Base64 인코딩 문자열 값이어야 합니다.요리책 cookbooks
이 섹션에서는 다른 장치 유형의 경우 클라이언트 정보 JSON 개체를 작성하기 위한 설명서에 대해 설명합니다.
Android android
장치 정보는 다음과 같은 방법으로 구성할 수 있습니다.
연결 정보는 다음과 같은 방법으로 구성할 수 있습니다.
<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"
애플리케이션 정보는 다음과 같은 방법으로 구성할 수 있습니다.
샘플 코드
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","CNN");
} catch (JSONException e) {
Log.e(LOGGING_TAG, e.getMessage());
}
return Base64.encodeToString(clientInformation.toString().getBytes(), Base64.NO_WRAP);
}
파이어TV fire-tv
장치 정보는 다음과 같은 방법으로 구성할 수 있습니다.
연결 정보는 다음과 같은 방법으로 구성할 수 있습니다.
애플리케이션 정보는 다음과 같은 방법으로 구성할 수 있습니다.
iOS/tvOS ios-tvos
장치 정보는 다음과 같은 방법으로 구성할 수 있습니다.
연결 정보는 다음과 같은 방법으로 구성할 수 있습니다.
애플리케이션 정보는 다음과 같은 방법으로 구성할 수 있습니다.
샘플 코드
+ (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": @"CNN"
} mutableCopy];
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:clientInformation options:NSJSONWritingPrettyPrinted error:&error];
NSString *base64Encoded = [jsonData base64EncodedStringWithOptions:0];
return base64Encoded;
}
Roku roku
장치 정보는 다음과 같은 방법으로 구성할 수 있습니다.
연결 정보는 다음과 같은 방법으로 구성할 수 있습니다.
애플리케이션 정보는 다음과 같은 방법으로 구성할 수 있습니다.
엑스박스 xbox
장치 정보는 다음과 같은 방법으로 구성할 수 있습니다.
연결 정보는 다음과 같은 방법으로 구성할 수 있습니다.
애플리케이션 정보는 다음과 같은 방법으로 구성할 수 있습니다.
리소스