(기존) 클라이언트 정보(장치, 연결 및 애플리케이션) 전달 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
장치 정보는 다음과 같은 방법으로 구성할 수 있습니다.
연결 정보는 다음과 같은 방법으로 구성할 수 있습니다.
애플리케이션 정보는 다음과 같은 방법으로 구성할 수 있습니다.
리소스