Google에서는 사용자의 앱을 카테고리별로 정리하고 맞춤형 앱 콘텐츠 소비와 검색을 위한 새로운 몰입형 환경을 제공하는 기기 내 표시 경로를 구축하고 있습니다. 이 전체 화면 환경은 개발자 파트너에게 외부 전용 채널에 최고의 리치 콘텐츠를 선보일 수 있는 기회를 이 가이드에는 개발자 파트너가 Engage SDK를 사용하여 데이트 콘텐츠를 통합하고 표면적이 될 수 있습니다.
통합 세부정보
용어
이 통합에는 맞춤 콘텐츠, 추천, 연속입니다.
맞춤 콘텐츠 클러스터에는 맞춤형 데이트 추천이 표시됩니다. 개발자에게 문의하세요 이러한 추천은 맞춤설정됩니다.
- 맞춤 콘텐츠 클러스터는
ArticleEntity
,PersonEntity
, 또는EventEntity
일 수 있지만 서로 다른 항목 유형이 혼합되어 있으면 안 됩니다.
맞춤 콘텐츠의 구조는 다음과 같습니다.
맞춤 콘텐츠 클러스터: 동일한 개발자 파트너의 맞춤 콘텐츠 그룹이 포함된 UI 뷰입니다.
항목: 클러스터에 있는 단일 항목을 나타내는 객체입니다. 이 통합은 맞춤 콘텐츠 클러스터:
ArticleEntity: ArticleEntity는 다음에 관한 권장사항을 나타냅니다. 텍스트 기반 콘텐츠를 말합니다. ArticleEntity 항목 개발자는 다양한 텍스트 및 이미지 콘텐츠를 더 많은 메타데이터를 추가하여 사용자에게 정보를 명확히 전달할 수 있습니다.
<ph type="x-smartling-placeholder">PersonEntity: PersonEntity를 의미합니다. 이 예를 들어 데이트 상대를 강조하는 것이 알게 되었습니다.
<ph type="x-smartling-placeholder">EventEntity: EventEntity는 있습니다. 이벤트 시작 시간은 사용자에게 전달되어야 합니다
<ph type="x-smartling-placeholder">
- 맞춤 콘텐츠 클러스터는
연속 클러스터에는 다음에서 최근 사용자가 참여한 콘텐츠가 표시됩니다. 여러 개발자 파트너를 하나의 UI 그룹으로 구성할 수 있습니다. 각 개발자 파트너 는 지속 기간 중에 최대 10개의 항목을 브로드캐스트할 수 있습니다. kube-APIserver입니다
연속 콘텐츠의 구조는 다음과 같습니다.
ArticleEntity: ArticleEntity는 다음에 관한 권장사항을 나타냅니다. 텍스트 기반 콘텐츠를 말합니다. 이 항목을 사용하여 사용자가 볼 만한 미완성 뉴스 기사 또는 기타 콘텐츠 계속 소비하고 싶어하는 사람들입니다
EventreservationEntity: EventBookingEntity는 다음을 나타냅니다. 사용자가 예정되어 있거나 진행 중인 이벤트를 추적할 수 있게 해 줍니다 즉석 만남 및 모임 이벤트 예약이 있습니다.
추천 클러스터는 선택한 히어로를 보여주는 UI 뷰입니다. 여러 개발자 파트너의
GenericFeaturedEntity
가 하나의 UI 그룹으로 묶여 있습니다. 1개의 추천 클러스터가 모든 맞춤 콘텐츠 클러스터보다 높은 우선순위로 배치되는 UI 각 개발자 파트너는 지원되는 여러 항목 (다양한 유형일 수 있음)과 함께 추천 클러스터에 있는 여러 앱 개발자를 만나볼 수 있습니다.GenericFeaturedEntity: GenericFeaturedEntity의 차이점 해당 추천 항목의 추천 항목은 단일 가장 높은 수익을 올릴 수 있는 사용자에게 흥미롭고 관련성 있는 중요한 콘텐츠를 제공하세요.
<ph type="x-smartling-placeholder">
사전 작업
최소 API 수준: 19
다음과 같이 com.google.android.engage:engage-core
라이브러리를 앱에 추가합니다.
dependencies {
// Make sure you also include that repository in your project's build.gradle file.
implementation 'com.google.android.engage:engage-core:1.5.2'
}
요약
이 설계는 바인드된 서비스.
클라이언트가 게시할 수 있는 데이터에는 다음과 같은 다양한 클러스터 유형의 제한이 적용됩니다.
클러스터 유형 | 클러스터 제한 | 클러스터의 최소 항목 제한 | 클러스터의 최대 항목 제한 |
---|---|---|---|
맞춤 콘텐츠 클러스터 | 최대 5개 | 5개 이상 | 최대 25개(ArticleEntity , PersonEntity 또는 EventEntity ) |
연속 클러스터 | 최대 1개 | 1개 이상 | 최대 10개 (ArticleEntity 또는
EventReservationEntity ) |
추천 클러스터 | 최대 1개 | 1개 이상 | 최대 10개 (GenericFeaturedEntity ) |
1단계: 항목 데이터 제공
SDK는 각 항목 유형을 나타내는 여러 항목을 정의했습니다. Google에서는 다음 항목이 데이트 카테고리에 해당합니다.
GenericFeaturedEntity
ArticleEntity
PersonEntity
EventEntity
EventReservationEntity
아래 차트에는 각 유형에 사용 가능한 속성과 요구사항이 나와 있습니다.
GenericFeaturedEntity
속성 | 요구사항 | 설명 | 형식 |
---|---|---|---|
작업 URI | 필수 항목 |
제공업체 앱의 항목으로 연결되는 딥 링크입니다. 참고: 기여 분석에 딥 링크를 사용할 수 있습니다. <ph type="x-smartling-placeholder"></ph> 이 FAQ 참조 를 통해 개인정보처리방침을 정의할 수 있습니다. |
URI |
포스터 이미지 | 필수 항목 | 여러 이미지가 제공된 경우 1개의 이미지만 표시됩니다. 권장 가로세로 비율은 16:9입니다. 참고: 배지가 제공되는 경우 24의 여백을 확보해야 합니다. 이미지 상단 및 하단 모두의 dps |
자세한 내용은 이미지 사양을 참고하세요. |
제목 | 선택사항 | 항목의 제목입니다. | 자유 텍스트 권장 텍스트 크기: 50자(영문 기준) |
설명 | 선택사항 | 항목을 설명하는 단일 텍스트 단락입니다. 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 권장 텍스트 크기: 180자(영문 기준) |
자막 목록 | 선택사항 | 최대 3개의 자막(각 자막에 한 줄의 텍스트 포함) 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 각 부제목에 대한 권장 텍스트 크기: 최대 50자(영문 기준) |
배지 | 선택사항 | 각 배지는 무료 텍스트 (영문 기준 최대 15자) 또는 작은 이미지입니다. 이미지/동영상 상단의 특별한 UX 처리(예: 배지) 이미지 오버레이
|
|
배지 - 텍스트 | 선택사항 | 배지 제목 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자유 텍스트 권장 텍스트 크기: 최대 15자(영문 기준) |
배지 - 이미지 | 선택사항 | Small image 특수한 UX 처리(예: 이미지/동영상의 배지 오버레이) 썸네일을 선택합니다. 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
컨텐츠 카테고리 | 선택사항 | 항목의 콘텐츠 카테고리를 설명하세요. | enum 목록 콘텐츠 카테고리 섹션을 참조하세요. 참고하세요. |
ArticleEntity
속성 | 요구사항 | 설명 | 형식 |
---|---|---|---|
작업 URI | 필수 항목 |
제공업체 앱의 항목으로 연결되는 딥 링크입니다. 참고: 기여 분석에 딥 링크를 사용할 수 있습니다. <ph type="x-smartling-placeholder"></ph> 이 FAQ 참조 를 통해 개인정보처리방침을 정의할 수 있습니다. |
URI |
제목 | 필수 항목 | 항목의 제목입니다. | 자유 텍스트 권장 텍스트 크기: 최대 50자(영문 기준) |
포스터 이미지 | 선택사항 | 여러 이미지가 제공된 경우 1개의 이미지만 표시됩니다. 권장 가로세로 비율은 16:9입니다. 참고: 이미지를 사용하는 것이 좋습니다. 배지가 광고의 상단과 하단 모두 24dps의 이미지 |
자세한 내용은 이미지 사양을 참고하세요. |
출처 - 제목 | 선택사항 | 작성자, 조직 또는 기자의 이름 | 자유 텍스트 권장 텍스트 크기: 25자(영문 기준) 미만 |
출처 - 이미지 | 선택사항 | 저자, 조직, 기자 등 출처의 이미지 | 자세한 내용은 이미지 사양을 참고하세요. |
설명 | 선택사항 | 항목을 설명하는 단일 텍스트 단락입니다. 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 권장 텍스트 크기: 180자(영문 기준) |
자막 목록 | 선택사항 | 최대 3개의 자막(각 자막에 한 줄의 텍스트 포함) 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 각 부제목에 대한 권장 텍스트 크기: 최대 50자(영문 기준) |
배지 | 선택사항 | 각 배지는 무료 텍스트 (영문 기준 최대 15자) 또는 작은 이미지입니다. 이미지/동영상 상단의 특별한 UX 처리(예: 배지) 이미지 오버레이
|
|
배지 - 텍스트 | 선택사항 | 배지 제목 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자유 텍스트 권장 텍스트 크기: 최대 15자(영문 기준) |
배지 - 이미지 | 선택사항 | Small image 특수한 UX 처리(예: 이미지/동영상의 배지 오버레이) 썸네일을 선택합니다. 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
콘텐츠 게시 시간 | 선택사항 | 콘텐츠가 재생되기 전의 에포크 타임스탬프(밀리초)입니다. 앱에 게시 / 업데이트됩니다. | 에포크 타임스탬프(밀리초) |
최근 참여 시간 | 조건부 필수 | 사용자가 상호작용한 에포크 타임스탬프(밀리초) 확인할 수 있습니다. 참고: 이 필드는 이 항목이 빌드됩니다 |
에포크 타임스탬프(밀리초) |
진행률 | 조건부 필수 | 현재까지 사용자가 소비한 전체 콘텐츠의 비율입니다. 참고: 이 필드는 이 항목이 빌드됩니다 |
0 이상 100 이하의 int 값입니다. |
컨텐츠 카테고리 | 선택사항 | 항목의 콘텐츠 카테고리를 설명하세요. | enum 목록 콘텐츠 카테고리 섹션을 참조하세요. 참고하세요. |
PersonEntity
속성 | 요구사항 | 설명 | 형식 |
---|---|---|---|
작업 URI | 필수 항목 |
제공업체 앱의 항목으로 연결되는 딥 링크입니다. 참고: 기여 분석에 딥 링크를 사용할 수 있습니다. <ph type="x-smartling-placeholder"></ph> 이 FAQ 참조 를 통해 개인정보처리방침을 정의할 수 있습니다. |
URI |
프로필 - 이름 | 필수 항목 | 프로필 이름 또는 ID 또는 핸들(예: 'John Doe', '@TeamPixel' 등) | 문자열 권장 텍스트 크기: 최대 50자(영문 기준) |
프로필 - 아바타 | 필수 항목 |
사용자의 프로필 사진 또는 아바타 이미지입니다. 참고: 정사각형 1:1 이미지여야 합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
프로필 - 추가 텍스트 | 선택사항 | 프로필 핸들과 같은 자��� 텍스트입니다. | 자유 텍스트 권장 텍스트 크기: 최대 15자(영문 기준) |
프로필 - 추가 이미지 | 선택사항 | 인증 배지와 같은 작은 이미지입니다. | 자세한 내용은 이미지 사양을 참고하세요. |
헤더 이미지 | 선택사항 |
헤더 이미지를 나타냅니다. 프로필 이미지와 달라야 합니다. 이 옵션은 이미지를 강조 표시하는 데 도움이 되는 추가 이미지가 있는 경우 사용할 수 있습니다. 잘 할 수 있습니다. 참고: 16:9 이미지여야 합니다. 배지가 제공되는 경우 이미지 상단과 하단에 24dp의 안전 공간을 확보해야 합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
인기도 - 횟수 | 선택사항 |
팔로어 수나 인기도 값을 나타낼 수 있습니다. "3.7 M.". 참고: 개수 및 개수 값이 모두 제공되는 경우 개수가 사용됩니다. |
문자열 권장 텍스트 크기: 개수 + 라벨 최대 20자(영문 기준) 통합 |
인기도 - 횟수 값 | 선택사항 | 팔로어 수 또는 인기도 값입니다. 참고: 앱이 데이터를 표시하지 않으려는 경우 개수 값을 제공하세요. 많은 숫자를 최적화해야 하는 방법에 대한 논리를 사용할 수 있습니다. 개수 및 개수 값을 모두 입력하는 경우 개수가 사용자에게 표시됩니다. |
Long |
인기도 - 라벨 | 선택사항 | 인기도 라벨이 무엇인지 나타냅니다. 예: '좋아요' | 문자열 권장 텍스트 크기: 개수 + 라벨 최대 20자(영문 기준) 통합 |
인기도 - 시각적 | 선택사항 |
상호작용의 목적을 나타냅니다. 예: 다음 이미지 표시 중 좋아요 아이콘, 이모티콘입니다. 2개 이상의 이미지를 제공할 수 있지만 모든 이미지가 표시되는 것은 아닙니다. 폼 팩터를 선택할 수도 있습니다. 참고: 정사각형 1:1 이미지여야 합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
평점 - 최댓값 | 필수 | 평가 척도의 최댓값입니다. 현재 평점 값도 제공되는 경우 제공해야 합니다. |
0.0보다 크거나 같은 숫자 |
평점 - 현재 값 | 필수 | 평가 척도의 현재 값입니다. 평점 최댓값도 제공되는 경우 제공해야 합니다. |
0.0보다 크거나 같은 숫자 |
평점 - 개수 | 선택사항 | 항목의 평점 수입니다. 참고: 앱에서 사용자에게 표시되는 방식을 제어합니다. 간결한 문자열 제공 여러 개의 컨테이너가 있습니다. 예를 들어 개수가 1,000,000인 경우 1M과 같은 약어를 사용하는 것이 좋습니다. 작은 디스플레이 크기에서는 잘립니다. |
문자열 |
등급 - 개수 값 | 선택사항 | 항목의 평점 수입니다. 참고: 직접 수정할 수도 있습니다 개수 값과 개수 값 모두 Count를 사용하여 |
Long |
위치 - 국가 | 선택사항 | 개인이 거주하거나 서비스를 제공하는 국가입니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 도시 | 선택사항 | 개인이 거주하거나 서비스를 제공하는 도시입니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 표시 주소 | 선택사항 | 그 사람이 위치하거나 서비스를 제공하는 주소가 다음에 표시됩니다. 있습니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 상세 주소 | 선택사항 | 개인이 거주하는 상세 주소 (해당하는 경우) 있습니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 주 | 선택사항 | 개인이 거주하거나 서비스를 제공하는 주입니다 (해당하는 경우). | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 우편번호 | 선택사항 | 개인이 거주하거나 서비스를 제공하는 지역의 우편번호입니다 (해당하는 경우). | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 동네 | 선택사항 | 개인이 거주하거나 서비스를 제공하는 동네입니다 (해당하는 경우). | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
배지 | 선택사항 |
각 배지는 무료 텍스트 (영문 기준 최대 15자) 또는 작은 이미지입니다. |
|
배지 - 텍스트 | 선택사항 | 배지 제목 참고: 배지���는 텍스트 또는 이미지가 필요합니다. |
자유 텍스트 권장 텍스트 크기: 최대 15자(영문 기준) |
배지 - 이미지 | 선택사항 | Small image 특수한 UX 처리(예: 이미지/동영상의 배지 오버레이) 썸네일을 선택합니다. 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
설명 | 선택사항 | 항목을 설명하는 단일 텍스트 단락입니다. 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 권장 텍스트 크기: 180자(영문 기준) |
자막 목록 | 선택사항 | 최대 3개의 자막(각 자막에 한 줄의 텍스트 포함) 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 각 부제목에 대한 권장 텍스트 크기: 최대 50자(영문 기준) |
컨텐츠 카테고리 | 선택사항 | 항목의 콘텐츠 카테고리를 설명하세요. | 사용 가능한 enum 목록
콘텐츠 카테고리 섹션을 참조하세요. 참고하세요. |
EventEntity
속성 | 요구사항 | 설명 | 형식 |
---|---|---|---|
작업 URI | 필수 항목 |
제공업체 앱의 항목으로 연결되는 딥 링크입니다. 참고: 기여 분석에 딥 링크를 사용할 수 있습니다. <ph type="x-smartling-placeholder"></ph> 이 FAQ 참조 를 통해 개인정보처리방침을 정의할 수 있습니다. |
URI |
제목 | 필수 항목 | 항목의 제목입니다. | 문자열 권장 텍스트 크기: 최대 50자(영문 기준) |
시작 시간 | 필수 항목 |
이벤트가 시작될 것으로 예상되는 에포크 타임스탬프입니다. 참고: 밀리초 단위로 표시됩니다. |
에포크 타임스탬프(밀리초) |
활동 모드 | 필수 항목 | 이벤트가 온라인인지, 오프라인인지, 아니면 오프라인인지를 나타내는 필드 있습니다 |
열거형: VIRTUAL, IN_PERSON 또는 HYBRID |
포스터 이미지 | 필수 항목 | 여러 이미지가 제공된 경우 1개의 이미지만 표시됩니다. 권장 가로세로 비율은 16:9입니다. 참고: 이미지를 사용하는 것이 좋습니다. 배지가 광고의 상단과 하단 모두 24dps의 이미지 |
자세한 내용은 이미지 사양을 참고하세요. |
위치 - 국가 | 조건부 필수 | 이벤트가 열리는 국가입니다. 참고: IN_PERSON 이벤트 또는 하이브리드 |
자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 도시 | 조건부 필수 | 이벤트가 열리는 도시입니다. 참고: IN_PERSON 이벤트 또는 하이브리드 |
자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 표시 주소 | 조건부 필수 | 이벤트가 열릴 주소 또는 장소 이름 사용자에게 표시됩니다. 참고: IN_PERSON 이벤트 또는 하이브리드 |
자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 상세 주소 | 선택사항 | 이벤트가 열리는 위치의 상세 주소 (해당하는 경우) 있습니다 | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 주 | 선택사항 | 이벤트가 진행되는 주/도 (해당하는 경우) 있습니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 우편번호 | 선택사항 | 이벤트가 열리는 위치의 우편번호 (해당하는 경우) 있습니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 동네 | 선택사항 | 이벤트가 개최되는 인근 지역입니다 (해당하는 경우). | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
종료 시간 | 선택사항 |
이벤트가 종료될 것으로 예상되는 에포크 타임스탬프입니다. 참고: 밀리초 단위로 표시됩니다. |
에포크 타임스탬프(밀리초) |
설명 | 선택사항 | 항목을 설명하는 단일 텍스트 단락입니다. 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 권장 텍스트 크기: 180자(영문 기준) |
자막 목록 | 선택사항 | 최대 3개의 자막(각 자막에 한 줄의 텍스트 포함) 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 각 부제목에 대한 권장 텍스트 크기: 최대 50자(영문 기준) |
배지 | 선택사항 |
각 배지는 무료 텍스트 (영문 기준 최대 15자) 또는 작은 이미지입니다. |
|
배지 - 텍스트 | 선택사항 | 배지 제목 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자유 텍스트 권장 텍스트 크기: 최대 15자(영문 기준) |
배지 - 이미지 | 선택사항 | Small image 특수한 UX 처리(예: 이미지/동영상의 배지 오버레이) 썸네일을 선택합니다. 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
가격 - 현재 가격 | 조건부 필수 |
이벤트 티켓/패스의 현재 가격입니다. <ph type="x-smartling-placeholder"></ph> 취소선 가격이 제공된 경우 제공해야 합니다. |
자유 텍스트 |
가격 - STP(StrikethroughPrice) | 선택사항 | 이벤트 티켓/패스의 원래 가격입니다. | 자유 텍스트 |
가격 콜아웃 | 선택사항 | 프로모션, 이벤트, 회원 할인을 표시하는 가격 콜아웃이 있는 경우 이를 표시합니다. | 자유 텍스트 권장 텍스트 크기: 45자(영문 기준) 미만(텍스트가 너무 김 생략 부호가 표시될 수 있음). |
컨텐츠 카테고리 | 선택사항 | 항목의 콘텐츠 카테고리를 설명하세요. | 사용 가능한 enum 목록
콘텐츠 카테고리 섹션을 참조하세요. 참고하세요. |
EventReservationEntity
속성 | 요구사항 | 설명 | 형식 |
---|---|---|---|
작업 URI | 필수 항목 |
제공업체 앱의 항목으로 연결되는 딥 링크입니다. 참고: 기여 분석에 딥 링크를 사용할 수 있습니다. <ph type="x-smartling-placeholder"></ph> 이 FAQ 참조 를 통해 개인정보처리방침을 정의할 수 있습니다. |
URI |
제목 | 필수 항목 | 항목의 제목입니다. | 문자열 권장 텍스트 크기: 최대 50자(영문 기준) |
시작 시간 | 필수 항목 |
이벤트가 시작될 것으로 예상되는 에포크 타임스탬프입니다. 참고: 밀리초 단위로 표시됩니다. |
에포크 타임스탬프(밀리초) |
활동 모드 | 필수 항목 | 이벤트가 온라인인지, 오프라인인지, 아니면 오프라인인지를 나타내는 필드 있습니다 |
열거형: VIRTUAL, IN_PERSON 또는 HYBRID |
위치 - 국가 | 조건부 필수 | 이벤트가 열리는 국가입니다. 참고: IN_PERSON 이벤트 또는 하이브리드 |
자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 도시 | 조건부 필수 | 이벤트가 열리는 도시입니다. 참고: IN_PERSON 이벤트 또는 하이브리드 |
자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 표시 주소 | 조건부 필수 | 이벤트가 열릴 주소 또는 장소 이름 사용자에게 표시됩니다. 참고: IN_PERSON 이벤트 또는 하이브리드 |
자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 상세 주소 | 선택사항 | 이벤트가 열리는 위치의 상세 주소 (해당하는 경우) 있습니다 | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
���치 - 주 | 선택사항 | 이벤트가 진행되는 주/도 (해당하는 경우) 있습니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 우편번호 | 선택사항 | 이벤트가 열리는 위치의 우편번호 (해당하는 경우) 있습니다. | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
위치 - 동네 | 선택사항 | 이벤트가 개최되는 인근 지역입니다 (해당하는 경우). | 자유 텍스트 권장 텍스트 크기: 최대 20자(영문 기준) |
포스터 이미지 | 선택사항 | 여러 이미지가 제공된 경우 1개의 이미지만 표시됩니다. 권장 가로세로 비율은 16:9입니다. 참고: 이미지를 사용하는 것이 좋습니다. 배지가 광고의 상단과 하단 모두 24dps의 이미지 |
자세한 내용은 이미지 사양을 참고하세요. |
종료 시간 | 선택사항 |
이벤트가 종료될 것으로 예상되는 에포크 타임스탬프입니다. 참고: 밀리초 단위로 표시됩니다. |
에포크 타임스탬프(밀리초) |
서비스 제공업체 - 이름 | 선택사항 |
서비스 제공업체의 이름입니다. 참고: 서비스에는 텍스트 또는 이미지가 필요합니다. 제공업체 |
자유 텍스트입니다. 예: 이벤트 주최자/투어 이름 |
서비스 제공업체 - 이미지 | 선택사항 |
서비스 제공업체의 로고/이미지입니다. 참고: 서비스에는 텍스트 또는 이미지가 필요합니다. 제공업체 |
자세한 내용은 이미지 사양을 참고하세요. |
설명 | 선택사항 | 항목을 설명하는 단일 텍스트 단락입니다. 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 권장 텍스트 크기: 180자(영문 기준) |
자막 목록 | 선택사항 | 최대 3개의 자막(각 자막에 한 줄의 텍스트 포함) 참고: 설명 또는 부제목 목록이 둘 다 표시되지는 않습니다. |
자유 텍스트 각 부제목에 대한 권장 텍스트 크기: 최대 50자(영문 기준) |
배지 | 선택사항 |
각 배지는 무료 텍스트 (영문 기준 최대 15자) 또는 작은 이미지입니다. |
|
배지 - 텍스트 | 선택사항 | 배지 제목 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자유 텍스트 권장 텍스트 크기: 최대 15자(영문 기준) |
배지 - 이미지 | 선택사항 | Small image 특수한 UX 처리(예: 이미지/동영상의 배지 오버레이) 썸네일을 선택합니다. 참고: 배지에는 텍스트 또는 이미지가 필요합니다. |
자세한 내용은 이미지 사양을 참고하세요. |
예약 ID | 선택사항 | 이벤트 예약의 예약 ID입니다. | 자유 텍스트 |
가격 - 현재 가격 | 조건부 필수 |
이벤트 티켓/패스의 현재 가격입니다. <ph type="x-smartling-placeholder"></ph> 취소선 가격이 제공된 경우 제공해야 합니다. |
자유 텍스트 |
가격 - STP(StrikethroughPrice) | 선택사항 | 이벤트 티켓/패스의 원래 가격입니다. | 자유 텍스트 |
가격 콜아웃 | 선택사항 | 프로모션, 이벤트, 회원 할인을 표시하는 가격 콜아웃이 있는 경우 이를 표시합니다. | 자유 텍스트 권장 텍스트 크기: 45자(영문 기준) 미만(텍스트가 너무 김 생략 부호가 표시될 수 있음). |
평점 - 최댓값 | 선택사항 | 평가 척도의 최댓값입니다. 현재 평점 값도 제공되는 경우 제공해야 합니다. |
0.0보다 크거나 같은 숫자 |
평점 - 현재 값 | 선택사항 | 평가 척도의 현재 값입니다. 평점 최댓값도 제공되는 경우 제공해야 합니다. |
0.0보다 크거나 같은 숫자 |
평점 - 개수 | 선택사항 | 이벤트 평점 수입니다. 참고: 앱에서 사용자에게 표시되는 방식을 제어합니다. 간결한 문자열 제공 여러 개의 컨테이너가 있습니다. 예를 들어 개수가 1,000,000인 경우 1M과 같은 약어를 사용하는 것이 좋습니다. 작은 디스플레이 크기에서는 잘립니다. |
문자열 |
등급 - 개수 값 | 선택사항 | 이벤트 평점 수입니다. 참고: 직접 수정할 수도 있습니다 개수 값과 개수 값 모두 Count를 사용하여 |
Long |
컨텐츠 카테고리 | 선택사항 | 항목의 콘텐츠 카테고리를 설명하세요. | 사용 가능한 enum 목록
콘텐츠 카테고리 섹션을 참조하세요. 참고하세요. |
이미지 사양
이미지 확장 소재의 필수 사양은 다음 표에 나와 있습니다.
가로세로 비율 | 최소 픽셀 | 권장 픽셀 |
---|---|---|
정사각형(1x1) 기본 |
300x300 | 1200x1200 |
가로 모드(1.91x1) | 600x314 | 1200x628 |
세로 모드(4x5) | 480x600 | 960x1200 |
Google이 액세스할 수 있도록 공개 CDN에 이미지를 호스팅해야 합니다.
파일 형식
PNG, JPG, 정적 GIF, WebP
최대 파일 크기
5120KB
추가 권장사항
- 이미지 안전 영역: 중요한 콘텐츠를 이미지의 중앙 80%에 배치합니다.
- 이미지가 어두운 테마 설정과 밝은 테마 설정에서 제대로 표시될 수 있도록 투명한 배경을 사용합니다.
콘텐츠 카테고리
콘텐츠 카테고리를 사용하면 앱이 여러 개인 카테고리 이렇게 하면 콘텐츠가 다음과 같이 사전 정의된 카테고리 중 일부와 매핑됩니다.
TYPE_EDUCATION
TYPE_SPORTS
TYPE_MOVIES_AND_TV_SHOWS
TYPE_BOOKS
TYPE_AUDIOBOOKS
TYPE_MUSIC
TYPE_DIGITAL_GAMES
TYPE_TRAVEL_AND_LOCAL
TYPE_HOME_AND_AUTO
TYPE_BUSINESS
TYPE_NEWS
TYPE_FOOD_AND_DRINK
TYPE_SHOPPING
TYPE_HEALTH_AND_FITENESS
TYPE_MEDICAL
TYPE_PARENTING
TYPE_DATING
Google이 액세스할 수 있도록 공개 CDN에 이미지를 호스팅해야 합니다.
콘텐츠 카테고리 사용 가이드라인
- ArticleEntity 및 GenericFeaturedEntity와 같은 항목은 모든 콘텐츠 카테고리를 사용할 수 있습니다. 다음과 같은 기타 항목의 경우 EventEntity, EventSchedulingEntity, PersonEntity, 하위 집합만 개 카테고리 중에서 사용할 수 있습니다. 광고를 게재할 수 있는 카테고리 목록 확인 항목 유형을 먼저 채워야 합니다
조합 대신 일부 콘텐츠 카테고리에 특정 항목 유형 사용 두 가지 유형이 있습니다.
- TYPE_MovieS_AND_TV_SHOWS - 다음에서 항목 확인 사용하기 전에 통합 가이드를 시청하세요. 일반 항목이 포함됩니다.
- TYPE_BOOKS - EbookEntity를 일반 항목이 포함됩니다.
- TYPE_AUDIOBOOKS - 체크아웃 AudiobookEntity의 이전 버전 사용할 수 있습니다.
- TYPE_SHOPPING - 결제 ShoppingEntity 사용할 수 있습니다.
- TYPE_FOOD_AND_DRINK - 다음에서 항목 체크아웃 음식 통합 가이���를 일반 항목을 가져야 합니다.
ContentCategory 입력란은 선택사항이며 콘텐츠가 앞서 언급한 어느 카테고리에도 속하지 않는 것으로 확인되었습니다.
여러 콘텐츠 카테고리가 제공된 경우 순서대로 입력하세요. 콘텐츠와의 관련성이 높은 콘텐츠 카테고리를 배치 표시됩니다
2단계: 클러스터 데이터 제공
콘텐츠 게시 작업을 백그라운드에서 실행하고(예: WorkManager 사용) 정기적으로 또는 이벤트를 기반으로 예약하는 것이 좋습니다(예: 사용자가 앱을 열 때마다 또는 사용자가 장바구니에 상품을 추가했을 때).
AppEngagePublishClient
는 클러스터 게시를 담당합니다.
클라이언트에서 클러스터를 게시하는 API는 다음과 같습니다.
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
deleteUserManagementCluster
deleteClusters
isServiceAvailable
이 API는 서비스를 통합에 사용할 수 있는지, 콘텐츠를 기기에 표시할 수 있는지 확인하는 데 사용됩니다.
Kotlin
client.isServiceAvailable.addOnCompleteListener { task -> if (task.isSuccessful) { // Handle IPC call success if(task.result) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } }
Java
client.isServiceAvailable().addOnCompleteListener(task - > { if (task.isSuccessful()) { // Handle success if(task.getResult()) { // Service is available on the device, proceed with content publish // calls. } else { // Service is not available, no further action is needed. } } else { // The IPC call itself fails, proceed with error handling logic here, // such as retry. } });
publishRecommendationClusters
이 API는 RecommendationCluster
객체 목록을 게시하는 데 사용됩니다.
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build() ) .build() )
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster( new RecommendationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .setTitle("Top Picks For You") .build()) .build());
서비스가 요청을 수신하면 다음 작업이 한 트랜잭션 내에서 발생합니다.
- 개발자 파트너의 기존
RecommendationCluster
데이터가 삭제됩니다. - 요청 데이터가 파싱되어, 업데이트된 맞춤 콘텐츠 클러스터에 저장됩니다.
오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다.
publishFeaturedCluster
이 API는 FeaturedCluster
객체 목록을 게시하는 데 사용됩니다.
Kotlin
client.publishFeaturedCluster( PublishFeaturedClusterRequest.Builder() .setFeaturedCluster( FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Java
client.publishFeaturedCluster( new PublishFeaturedClustersRequest.Builder() .addFeaturedCluster( new FeaturedCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
서비스가 요청을 수신하면 다음 작업이 한 트랜잭션 내에서 발생합니다.
- 개발자 파트너의 기존
FeaturedCluster
데이터가 삭제됩니다. - 요청 데이터가 파싱되어, 업데이트된 추천 클러스터에 저장됩니다.
오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다.
publishContinuationCluster
이 API는 ContinuationCluster
객체를 게시하는 데 사용됩니다.
Kotlin
client.publishContinuationCluster( PublishContinuationClusterRequest.Builder() .setContinuationCluster( ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build())
Java
client.publishContinuationCluster( new PublishContinuationClusterRequest.Builder() .setContinuationCluster( new ContinuationCluster.Builder() .addEntity(entity1) .addEntity(entity2) .build()) .build());
서비스가 요청을 수신하면 다음 작업이 한 트랜잭션 내에서 발생합니다.
- 개발자 파트너의 기존
ContinuationCluster
데이터가 삭제됩니다. - 요청 데이터가 파싱되어, 업데이트된 연속 클러스터에 저장됩니다.
오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다.
publishUserAccountManagementRequest
이 API는 로그인 카드를 게시하는 데 사용됩니다. 로그인 작업은 앱이 콘텐츠를 게시하거나 더 맞춤설정된 콘텐츠를 제공할 수 있도록 사용자를 앱의 로그인 페이지로 안내합니다.
다음 메타데이터는 로그인 카드의 일부입니다.
속성 | 요구사항 | 설명 |
---|---|---|
작업 URI | 필수 | 작업으로 연결되는 딥 링크(앱 로그인 페이지로 이동) |
이미지 | 선택사항 - 제공되지 않은 경우 제목을 입력해야 합니다. |
카드에 표시된 이미지 해상도 1264x712의 16x9 가로세로 비율 이미지 |
제목 | 선택사항 - 제공되지 않은 경우 이미지를 제공해야 합니다. | 카드상의 제목 |
작업 텍스트 | 선택사항 | CTA에 표시된 텍스트(로그인) |
부제 | 선택사항 | 카드의 부제목(선택사항) |
Kotlin
var SIGN_IN_CARD_ENTITY = SignInCardEntity.Builder() .addPosterImage( Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build() client.publishUserAccountManagementRequest( PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
Java
SignInCardEntity SIGN_IN_CARD_ENTITY = new SignInCardEntity.Builder() .addPosterImage( new Image.Builder() .setImageUri(Uri.parse("http://www.x.com/image.png")) .setImageHeightInPixel(500) .setImageWidthInPixel(500) .build()) .setActionText("Sign In") .setActionUri(Uri.parse("http://xx.com/signin")) .build(); client.publishUserAccountManagementRequest( new PublishUserAccountManagementRequest.Builder() .setSignInCardEntity(SIGN_IN_CARD_ENTITY) .build());
서비스가 요청을 수신하면 다음 작업이 한 트랜잭션 내에서 발생합니다.
- 개발자 파트너의 기존
UserAccountManagementCluster
데이터가 삭제됩니다. - 요청 데이터가 파싱되어, 업데이트된 UserAccountManagementCluster 클러스터에 저장됩니다.
오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다.
updatePublishStatus
내부적인 이유로 어떠한 클러스터도 게시되지 않는 경우 권장: updatePublishStatus API의 여러 Cloud UI API에서 사용할 수 있습니다. 이는 다음과 같은 이유로 중요합니다.
- 콘텐츠가 게시되는 경우에도(STATUS == PUBLISHED) 모든 시나리오에서 상태를 제공하는 것은 이 명시적 상태를 사용하여 통합의 상태 및 기타 측정항목을 전달하는 대시보드를 채우는 데 중요합니다.
- 게시된 콘텐츠는 없지만 통합 상태가 손상되지 않은 경우(STATUS == NOT_PUBLISHED) Google은 앱 상태 대시보드에서 알림을 트리거하지 않을 수 있습니다. 이는 제공업체의 관점에서 예상되는 상황으로 인해 콘텐츠가 게시되지 않음을 확인합니다.
- 이를 통해 개발자는 데이터가 게시되는 시점과 게시 시점이 아닙니다.
- Google은 상태 코드를 사용하여 사용자가 다음에서 특정 작업을 하도록 유도할 수 있습니다. 앱 콘텐츠를 보거나 극복할 수 있습니다.
적합한 게시 상태 코드 목록은 다음과 같습니다.
// Content is published
AppEngagePublishStatusCode.PUBLISHED,
// Content is not published as user is not signed in
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN,
// Content is not published as user is not subscribed
AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SUBSCRIPTION,
// Content is not published as user location is ineligible
AppEngagePublishStatusCode.NOT_PUBLISHED_INELIGIBLE_LOCATION,
// Content is not published as there is no eligible content
AppEngagePublishStatusCode.NOT_PUBLISHED_NO_ELIGIBLE_CONTENT,
// Content is not published as the feature is disabled by the client
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_FEATURE_DISABLED_BY_CLIENT,
// Content is not published as the feature due to a client error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_CLIENT_ERROR,
// Content is not published as the feature due to a service error
// Available in v1.3.1
AppEngagePublishStatusCode.NOT_PUBLISHED_SERVICE_ERROR,
// Content is not published due to some other reason
// Reach out to engage-developers@ before using this enum.
AppEngagePublishStatusCode.NOT_PUBLISHED_OTHER
로그인하지 않은 사용자로 인해 콘텐츠가 게시되지 않은 경우 Google은 로그인 카드를 게시하는 것이 좋습니다. 어떤 이유로든 제공업체가 먼저 updatePublishStatus API에 상태 코드 포함 NOT_PUBLISHED_REQUIRES_SIGN_IN
Kotlin
client.updatePublishStatus( PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build())
Java
client.updatePublishStatus( new PublishStatusRequest.Builder() .setStatusCode(AppEngagePublishStatusCode.NOT_PUBLISHED_REQUIRES_SIGN_IN) .build());
deleteRecommendationClusters
이 API는 맞춤 콘텐츠 클러스터의 콘텐츠를 삭제하는 데 사용됩니다.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
서비스가 요청을 수신하면 맞춤 콘텐츠 클러스터에서 기존 데이터를 삭제합니다. 오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다
deleteFeaturedCluster
이 API는 추천 클러스터의 콘텐츠를 삭제하는 데 사용됩니다.
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
서비스가 요청을 수신하면 추천 클러스터에서 기존 데이터를 삭제합니다. 오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다.
deleteContinuationCluster
이 API는 연속 클러스터의 콘텐츠를 삭제하는 데 사용됩니다.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
서비스가 요청을 수신하면 연속 클러스터에서 기존 데이터를 삭제합니다. 오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다
deleteUserManagementCluster
이 API는 UserAccountManagement 클러스터의 콘텐츠를 삭제하는 데 사용됩니다.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
서비스가 요청을 수신하면 UserAccountManagement 클러스터에서 기존 데이터를 삭제합니다. 오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다.
deleteClusters
이 API는 특정 클러스터 유형의 콘텐츠를 삭제하는 데 사용됩니다.
Kotlin
client.deleteClusters( DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build())
Java
client.deleteClusters( new DeleteClustersRequest.Builder() .addClusterType(ClusterType.TYPE_CONTINUATION) .addClusterType(ClusterType.TYPE_FEATURED) .addClusterType(ClusterType.TYPE_RECOMMENDATION) .build());
서비스가 요청을 수신하면 지정된 클러스터 유형과 일치하는 모든 클러스터에서 기존 데이터가 삭제됩니다. 클라이언트는 하나 이상의 클러스터 유형을 전달하도록 선택할 수 있습니다. 오류가 발생하면 전체 요청이 거부되고 기존 상태가 유지됩니다.
오류 처리
후속 작업을 실행하여 성공적인 작업을 복구하고 다시 제출할 수 있도록 게시 API의 작업 결과를 수신 대기하는 것이 좋습니다.
Kotlin
client.publishRecommendationClusters( PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(..) .build()) .addOnCompleteListener { task -> if (task.isSuccessful) { // do something } else { val exception = task.exception if (exception is AppEngageException) { @AppEngageErrorCode val errorCode = exception.errorCode if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } }
Java
client.publishRecommendationClusters( new PublishRecommendationClustersRequest.Builder() .addRecommendationCluster(...) .build()) .addOnCompleteListener( task -> { if (task.isSuccessful()) { // do something } else { Exception exception = task.getException(); if (exception instanceof AppEngageException) { @AppEngageErrorCode int errorCode = ((AppEngageException) exception).getErrorCode(); if (errorCode == AppEngageErrorCode.SERVICE_NOT_FOUND) { // do something } } } });
오류는 AppEngageException
으로 반환��며 원인은 오류 코드로 포함됩니다.
오류 코드 | 참고 |
---|---|
SERVICE_NOT_FOUND |
지정된 기기에서 서비스를 사용할 수 없습니다. |
SERVICE_NOT_AVAILABLE |
서비스는 특정 기기에서 사용할 수 있지만 호출 시점에는 사용할 수 없습니다(예: 명시적으로 사용 중지됨). |
SERVICE_CALL_EXECUTION_FAILURE |
스레딩 문제로 인해 작업을 실행할 수 없습니다. 이 경우 재시도할 수 있습니다. |
SERVICE_CALL_PERMISSION_DENIED |
호출자가 서비스를 호출할 수 없습니다. |
SERVICE_CALL_INVALID_ARGUMENT |
요청에 잘못된 데이터가 포함되어 있습니다(예: 허용된 클러스터 수를 초과함). |
SERVICE_CALL_INTERNAL |
서비스 측에 오류가 있습니다. |
SERVICE_CALL_RESOURCE_EXHAUSTED |
서비스 호출이 너무 자주 이루어집니다. |
3단계: 브로드캐스트 인텐트 처리
작업을 통해 게시 콘텐츠 API를 호출하는 것 외에도 콘텐츠 게시 요청을 수신하도록 BroadcastReceiver
를 설정해야 합니다.
브로드캐스트 인텐트의 목표는 주로 앱 재활성화 및 데이터 동기화 강제입니다. 브로드캐스트 인텐트는 자주 전송되지 않도록 설계되었습니다. 이는 참여 서비스에서 콘텐츠가 오래되었을 수 있다고 판단할 때만(예: 1주일) 트리거됩니다. 이렇게 하면 애플리케이션이 장기간 실행되지 않은 경우에도 사용자에게 새로운 콘텐츠 환경을 제공할 수 있습니다.
BroadcastReceiver
는 다음 두 가지 방법으로 설정해야 합니다.
Context.registerReceiver()
를 사용하여BroadcastReceiver
클래스의 인스턴스를 동적으로 등록합니다. 이렇게 하면 여전히 메모리에 있는 애플리케이션의 통신이 가능해집니다.
Kotlin
class AppEngageBroadcastReceiver : BroadcastReceiver(){ // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } fun registerBroadcastReceivers(context: Context){ var context = context context = context.applicationContext // Register Recommendation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_RECOMMENDATION)) // Register Featured Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_FEATURED)) // Register Continuation Cluster Publish Intent context.registerReceiver(AppEngageBroadcastReceiver(), IntentFilter(Intents.ACTION_PUBLISH_CONTINUATION)) }
Java
class AppEngageBroadcastReceiver extends BroadcastReceiver { // Trigger recommendation cluster publish when PUBLISH_RECOMMENDATION broadcast // is received // Trigger featured cluster publish when PUBLISH_FEATURED broadcast is received // Trigger continuation cluster publish when PUBLISH_CONTINUATION broadcast is // received } public static void registerBroadcastReceivers(Context context) { context = context.getApplicationContext(); // Register Recommendation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_RECOMMENDATION)); // Register Featured Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_FEATURED)); // Register Continuation Cluster Publish Intent context.registerReceiver(new AppEngageBroadcastReceiver(), new IntentFilter(com.google.android.engage.service.Intents.ACTION_PUBLISH_CONTINUATION)); }
AndroidManifest.xml
파일에서<receiver>
태그를 사용하여 구현을 정적으로 선언���니다. 이를 통해 애플리케이션이 실행 중이 아닐 때 브로드캐스트 인텐트를 수신할 수 있고, 애플리케이션이 콘텐츠를 게시할 수 있습니다.
<application>
<receiver
android:name=".AppEngageBroadcastReceiver"
android:exported="true"
android:enabled="true">
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_RECOMMENDATION" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_FEATURED" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.engage.action.PUBLISH_CONTINUATION" />
</intent-filter>
</receiver>
</application>
다음 인텐트가 서비스에서 전송됩니다.
com.google.android.engage.action.PUBLISH_RECOMMENDATION
권장 이 인텐트를 수신할 때publishRecommendationClusters
호출을 시작합니다.com.google.android.engage.action.PUBLISH_FEATURED
이 인텐트를 수신할 때publishFeaturedCluster
호출을 시작합니다.com.google.android.engage.action.PUBLISH_CONTINUATION
이 인텐트를 수신할 때publishContinuationCluster
호출을 시작합니다.
통합 워크플로
통합 완료 후 통합 확인에 관한 단계별 안내는 Engage 개발자 통합 워크플로를 참고하세요.
FAQ
FAQ에 관해서는 Engage SDK 관련 자주 묻는 질문(FAQ)을 참고하세요.
문의
연락처 engage-developers@google.com 질문이 있다면 언제든지 문의해 주세요
다음 단계
이 통합을 완료한 후 단계는 다음과 같습니다.
- 다음 주소로 이메일 보내기: engage-developers@google.com Google에서 테스트할 준비가 된 통합 APK를 첨부합니다.
- Google은 내부적으로 인증 및 검토를 실행하여 통합이 예상대로 작동하는지 확인합니다. 변경이 필요한 경우 Google에서는 필요한 세부정보와 함께 연락을 드립니다.
- 테스트가 완료되고 변경할 필요가 없으면 Google에서 업데이트된 통합 APK를 게시하여 Play 스토어로 이동합니다.
- 업데이트된 APK가 Play 스토어에 게시되었음을 Google에서 확인한 후에는 맞춤 콘텐츠, 추천, 연속 클러스터가 게시되고 사용자에게 표시될 수 있습니다.