Google 모바일 데이터 요금제 공유 API

동기

Google 모바일 데이터 요금제 공유 API를 사용하면 운영자가 사용자 키로 식별되는 사용자의 데이터 요금제에 관한 정보를 GTAF에 전송할 수 있습니다. 이 페이지에서는 이러한 업데이트가 GTAF로 푸시되어 Google 애플리케이션에 적용될 수 있는 메커니즘을 설명합니다. 현재 API를 사용하면 DPA가 Google 클라이언트에서 사용할 데이터 요금제 상태를 GTAF로 전송할 수 있습니다.

인증

GTAF에 대한 모든 데이터 요금제 공유 API 요청은 Google Cloud OAuth2 서버를 사용하여 인증해야 합니다. 요청은 DPA가 나타내는 ASN에 대해 ISP 포털에서 허용 목록에 추가된 서비스 계정으로 인증되어야 합니다. Google Cloud 서비스 계정으로 OAuth를 사용하는 방법에 관한 문서는 Google Cloud 서비스 계정용 OAuth 2.0을 참고하세요.

데이터 요금제 업데이트

현재 Google 모바일 데이터 요금제 공유 API를 사용하면 운영자가 사용자의 데이터 요금제에 관한 업데이트를 공유할 수 있습니다.

  • 데이터 요금제 상태: 사용자의 데이터 요금제의 현재 상태를 캡처합니다. 예를 들어 사용자의 데이터가 부족한 경우 운영자는 데이터 요금제 상태 업데이트를 GTAF에 푸시할 수 있으며, GTAF는 이를 사용하여 사용자에게 요금제 상태 알림을 보낼 수 있습니다.

API 설명

그림 3. DPA가 GTAF와 데이터 요금제 상태를 공유할 때 GTAF-DPA 상호작용

애플리케이션은 다음 두 가지 방법 중 하나로 GTAF와 공유된 데이터 요금제 상태 정보를 수신할 수 있습니다.

  1. UE는 데이터 요금제 상태 정보를 위해 GTAF를 호출합니다.
    1. 운영자의 DPA는 데이터 요금제 공유 API를 사용하여 사용자의 데이터 요금제 상태를 GTAF로 푸시합니다. GTAF는 운영자가 지정한 만료 시간까지 요금제 상태와 연결된 사용자 키를 저장합니다.
    2. UE에서 실행되는 Google 애플리케이션이 Google 내부 API를 사용하여 데이터 요금제 상태 정보를 요청합니다. 애플리케이션은 요청에 사용자 키를 포함합니다.
    3. 애플리케이션이 캐시된 데이터 요금제 상태를 사용할 수 있는 경우 GTAF는 사용자 키를 사용하여 사용자의 데이터 요금제 상태를 조회합니다. 그러면 GTAF가 이 상태를 애플리케이션에 반환합니다.
  2. GTAF는 데이터 요금제 상태 정보를 UE에 푸시합니다.
    1. 관련된 경우, 이동통신자로부터 수신한 데이터 요금제 상태가 UE에 직접 푸시됩니다. 특히 푸시된 요금제 상태는 Google Play 서비스의 모바일 데이터 요금제 모듈의 기기 내 캐시를 업데이트하는 데 사용됩니다.

데이터 요금제 상태 공유

DPA는 HTTPS POST를 사용하여 클라이언트가 사용할 사용자의 기존 계획 상태 항목을 만들고 업데이트합니다. 현재 GTAF는 mobiledataplanyoutube를 유효한 클라이언트 식별자로 지원합니다. 다음은 asn 12345 및 사용자 키 abcdefyoutube 클라이언트를 위해 GTAF와 요금제 정보를 공유하는 연산자의 요청 예입니다.

POST https://mobiledataplansharing.googleapis.com/v1/operators/12345/clients/youtube/users/abcdef/planStatus

요청 본문은 PlanStatus의 인스턴스입니다.

{
  "plans": [{
    "planName": "ACME1",
    "planId": "1",
    "planCategory": "PREPAID",
    "expirationTime": "2017-01-29T01:00:03.14159Z", // req.
    "planModules": [{
      "moduleName": "Giga Plan", // req.
      "trafficCategories": ["GENERIC"],
      "expirationTime": "2017-01-29T01:00:03.14159Z", // req.
      "overUsagePolicy": "BLOCKED",
      "maxRateKbps": "1500",
      "description": "1GB for a month", // req.
      "coarseBalanceLevel": "HIGH_QUOTA"
    }]
  }],
  "planInfoPerClient": {
    "youtube": {
      "rateLimitedStreaming": {
        "maxMediaRateKbps": 569
      }
    }
  },
  "languageCode": "en-US", // req.
  "expireTime": "2018-06-14T08:41:27-07:00", // req.
  "updateTime": "2018-06-07T07:41:22-07:00", // req.
  "title": "Prepaid Plan"
}

요청이 성공하면 GTAF는 HTTP 응답 코드 200과 푸시된 planStatus 항목을 반환합니다. 사용자에게 알림이 전송된 경우 알림 항목도 반환됩니다. GTAF에서 요청에 문제가 있음을 식별하면 400~499 범위의 HTTP 상태 코드를 반환합니다. GTAF 오류로 인해 GTAF가 요청을 완료할 수 없는 경우 GTAF는 500~599 범위의 HTTP 코드를 반환합니다. 500~599 범위의 응답을 수신하는 요청은 재시도할 수 있는 것으로 간주되며 400~499 범위의 응답을 수신하는 요청은 일반적으로 재시도할 수 없습니다. 오류 사례에서는 GTAF의 오류 응답을 자세히 설명합니다.

기본 클라이언트의 계획 상태 푸시

GTAF는 사용할 수 있는 클라이언트를 지정하지 않고 계획 상태가 사업자에 의해 푸시되는 다음 호출을 지원합니다. 이 경우 계획 상태가 mobiledataplan 클라이언트를 위한 것이고 운영자가 사용자에게 알림을 전송하려고 하는 것으로 가정합니다. 요청 본문은 PlanStatus의 인스턴스입니다.

POST https://mobiledataplansharing.googleapis.com/v1/operators/12345/planStatuses?userKey=abcdef

다국어 지원

국제화를 지원하기 위해 DPA는 GTAF의 직접 요청이 없더라도 사용자가 선호하는 언어를 알아야 합니다. 이 문제를 해결하기 위해 CPID 엔드포인트에 대한 요청은 클라이언트의 사용자 언어 환경설정 액세스에 따라 Accept-Language 헤더를 포함할 수 있습니다(MAY). 헤더가 포함된 경우 MDP API를 사용하여 DPA가 전송하는 업데이트의 사람이 읽을 수 있는 문자열은 CPID 요청에 제공된 설정을 사용해야 합니다.

DPA는 Accept-Language 헤더가 포함된 GTAF의 요청을 수신할 때 사용자 언어 환경설정을 업데이트하고 업데이트된 사용자 환경설정을 사용하여 향후 GTAF 요청의 언어 코드를 결정할 수 있습니다(MAY).

DPA는 languageCode를 사용하여 사용자에게 표시되는 문자열에 사용되는 언어를 지정해야 합니다(MUST). GTAF는 이를 사용하여 사용자에게 표시되는 알림의 제목과 본문을 구성합니다.