Google tworzy platformę na urządzeniu, która porządkuje aplikacje użytkowników według branż i zapewnia nowe, immersyjne środowisko do przeglądania i odkrywania treści z aplikacji. Ten tryb pełnoekranowy daje partnerom deweloperom możliwość zaprezentowania swoich najlepszych treści w bogatym formacie na dedykowanym kanale poza aplikacją. Ten przewodnik zawiera instrukcje dotyczące integracji treści dotyczących zdrowia i kondycji fizycznej za pomocą pakietu Engage SDK, aby wypełnić tę nową powierzchnię.
Szczegóły integracji
Terminologia
Ta integracja obejmuje 3 typy klastrów: Recommendation (Rekomendacje), Featured (Polecane) i Continuation (Kontynuacja).
Klastry rekomendacji wyświetlają spersonalizowane sugestie dotyczące zdrowia i aktywności fizycznej od pojedynczego partnera zajmującego się deweloperami. Te rekomendacje mogą być spersonalizowane pod kątem użytkownika lub ogólne (np. dotyczące popularnych tematów związanych ze zdrowiem i fitnessem). Dzięki nim możesz wyświetlać artykuły lub osoby dotyczące zdrowia i fitnessu.
- Klaster rekomendacji może składać się z elementów typu
ArticleEntity
,PersonEntity
lubEventEntity
, ale nie z różnych typów elementów.
Rekomendacje mają następującą strukturę:
Klaster rekomendacji: widok interfejsu zawierający grupę rekomendacji tego samego partnera dewelopera.
Jednostka: obiekt reprezentujący pojedynczy element w klastrze. W ramach tej integracji dostępne są encje, które pojawiałyby się w klastrze rekomendacji:
ArticleEntity to rekomendacja treści tekstowych związanych ze zdrowiem i kondycją fizyczną. Można go używać do artykułów, postów na blogu, treści marketingowych, fragmentów wiadomości itp.
PersonEntity: PersonEntity oznacza osobę. Zalecenia mogą dotyczyć wyróżnienia trenera lub innej osoby związanej ze zdrowiem i fitnessem.
EventEntity: EventEntity reprezentuje wydarzenie mające miejsce w przyszłości. Godzina rozpoczęcia wydarzenia to kluczowa informacja, którą należy przekazać użytkownikom. Element ten może służyć do informowania użytkowników o wydarzeniach związanych ze zdrowiem i kondycją fizyczną, takich jak obóz oddawania krwi, sesje szkoleniowe, siłownia czy zajęcia jogi.
- Klaster rekomendacji może składać się z elementów typu
Klaster Kontynuacja w pojedynczym grupowaniu UI zawiera treści, które były ostatnio aktywne przez użytkowników pochodzących od wielu partnerów deweloperów. Każdy partner deweloper może nadawać maksymalnie 10 elementów w klastrze Kontynuacji.
Treści kontynuacji mogą mieć taką strukturę:
ArticleEntity: ArticleEntity to rekomendacja treści tekstowych związanych ze zdrowiem i fitnessem. Element ten może służyć do reprezentowania niedokończonych artykułów z wiadomościami lub innych treści, które użytkownik chce dalej oglądać od miejsca, w którym je porzucił. Np.: fragment wiadomości, fragment posta na blogu o tematyce zdrowotnej lub fitnessu.
EventReservationEntity: obiekt EventReservationEntity reprezentuje rezerwację na wydarzenie i pomaga użytkownikom śledzić nadchodzące lub trwające rezerwacje wydarzeń związanych z fitnessem i zdrowiem. Przykład: sesje treningowe
Klaster Polecane prezentuje wybrane elementy pochodzące od kilku partnerów deweloperów w jednej grupie UI. Będzie 1 polecany klaster, który będzie widoczny u góry interfejsu użytkownika i umieszczony priorytetowo nad wszystkimi klastrami rekomendacji. Każdy partner programistów będzie mógł transmitować do 10 elementów w klastrze Polecany.
GenericFeaturedEntity: GenericFeaturedEntity różni się od elementu Rekomendacja tym, że element Featured powinien być używany do pojedynczego najlepszego elementu treści od dewelopera i powinien reprezentować jeden najważniejszy element treści, który będzie interesujący i trafny dla użytkowników.
Przygotowanie
Minimalny poziom interfejsu API: 19
Dodaj bibliotekę com.google.android.engage:engage-core
do aplikacji:
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'
}
Podsumowanie
Projekt opiera się na implementacji powiązanej usługi.
Dane, które klient może publikować, podlegają następującym limitom dotyczącym różnych typów klastrów:
Typ klastra | Limity klastra | Minimalne limity elementów w klastrze | Maksymalne limity elementów w klastrze |
---|---|---|---|
Klastry rekomendacji | Maksymalnie 5 | Co najmniej 5 | Maksymalnie 25 (ArticleEntity , PersonEntity lub EventEntity ) |
Klaster kontynuacji | Maksymalnie 1 | Co najmniej 1 | Maksymalnie 10 (ArticleEntity lub
EventReservationEntity ) |
Polecany klaster | Maksymalnie 1 | Co najmniej 1 | Maksymalnie 10 (GenericFeaturedEntity ) |
Krok 1. Podaj dane o podmiocie
Pakiet SDK ma zdefiniowane różne jednostki reprezentujące każdy typ elementu. W przypadku kategorii Zdrowie i fitness wspieramy następujące podmioty:
GenericFeaturedEntity
ArticleEntity
PersonEntity
EventEntity
EventReservationEntity
Poniższe tabele przedstawiają dostępne atrybuty i wymagania dla każdego z nich.
GenericFeaturedEntity
Atrybut | Wymaganie | Opis | Format |
---|---|---|---|
Identyfikator URI działania | Wymagany |
Precyzyjny link do elementu w aplikacji dostawcy. Uwaga: do atrybucji możesz używać precyzyjnych linków. Zapoznaj się z odpowiedziami na najczęstsze pytania |
Identyfikator URI |
obrazy plakatu, | Wymagany | Jeśli prześlesz kilka obrazów, wyświetlimy tylko jeden obraz. Zalecany format obrazu to 16:9 Uwaga: jeśli masz plakietkę, umieść wolną przestrzeń 24 dps u góry i u dołu obrazu |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Tytuł | Opcjonalnie | Tytuł elementu. | Dowolny tekst Zalecany rozmiar tekstu: 50 znaków |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący daną encję. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Dowolny tekst Zalecany rozmiar tekstu: 180 znaków |
Lista napisów | Opcjonalnie | maksymalnie 3 napisy, z których każdy może zawierać jeden wiersz tekstu. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Tekst otwarty Zalecany rozmiar tekstu dla każdego podtytułu: maks. 50 znaków |
Odznaki | Opcjonalnie | Każda plakietka ma postać dowolnego tekstu (maks. 15 znaków) lub małego obrazu. Specjalne wrażenia użytkownika na obrazie lub filmie, na przykład w postaci plakietki nałożonej na obraz
|
|
Plakietka – tekst | Opcjonalnie | Tytuł plakietki Uwaga: plakietka musi zawierać tekst lub obraz. |
Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz specjalne wrażenia użytkownika, na przykład w postaci plakietki nałożonej na obrazie lub miniaturze filmu; Uwaga: na plakietce musi znajdować się tekst lub obraz. |
Więcej informacji znajdziesz w specyfikacji zdjęć. |
Kategorie treści | Opcjonalnie | Opisz kategorię treści w podmiocie. | Lista wartości w polu enum Wskazówki znajdziesz w sekcji Kategoria treści. |
ArticleEntity
Atrybut | Wymaganie | Opis | Format |
---|---|---|---|
Identyfikator URI działania | Wymagany |
Precyzyjny link do elementu w aplikacji dostawcy. Uwaga: na potrzeby atrybucji możesz używać precyzyjnych linków. Zapoznaj się z odpowiedziami na najczęstsze pytania |
Identyfikator URI |
Tytuł | Wymagany | Tytuł elementu. | Tekst otwarty Zalecany rozmiar tekstu: maks. 50 znaków |
Plakat | Opcjonalnie | Jeśli podasz kilka obrazów, wyświetlimy tylko 1 z nich. Zalecany format obrazu to 16:9 Uwaga: zdecydowanie zalecamy użycie obrazu. Jeśli masz plakietkę, umieść wolną przestrzeń 24 dps u góry i u dołu obrazu |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Źródło – tytuł | Opcjonalnie | Imię i nazwisko autora, organizacji lub reportera | Dowolny tekst Zalecany rozmiar tekstu: poniżej 25 znaków |
Źródło – obraz | Opcjonalnie | Obraz źródła, np. autor, organizacja czy reporter | Więcej informacji znajdziesz w specyfikacji zdjęć. |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący daną encję. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Dowolny tekst Zalecany rozmiar tekstu: 180 znaków |
Lista napisów | Opcjonalnie | maksymalnie 3 napisy, z których każdy może zawierać jeden wiersz tekstu. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Tekst otwarty Zalecany rozmiar tekstu dla każdego podtytułu: maks. 50 znaków |
Odznaki | Opcjonalnie | Każda plakietka ma postać dowolnego tekstu (maks. 15 znaków) lub małego obrazu. Specjalne wrażenia użytkownika na obrazie lub filmie, na przykład w postaci plakietki nałożonej na obraz
|
|
Plakietka – tekst | Opcjonalnie | Tytuł plakietki Uwaga: plakietka musi zawierać tekst lub obraz. |
Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz specjalne wrażenia użytkownika, na przykład w postaci plakietki nałożonej na obrazie lub miniaturze filmu; Uwaga: na plakietce musi znajdować się tekst lub obraz. |
Więcej informacji znajdziesz w specyfikacji zdjęć. |
Czas publikacji treści | Opcjonalnie | To sygnatura czasowa w epoce w milisekundach, w której treści zostały opublikowane lub zaktualizowane w aplikacji. | Sygnatura czasowa epoki w milisekundach |
Czas ostatniego zaangażowania | Wymagane warunkowo | Sygnatura czasowa epoki (w milisekundach), gdy użytkownik ostatnio wszedł w interakcję z tym elementem. Uwaga: to pole jest wymagane, jeśli ten element jest częścią klastra kontynuacji. |
Sygnatura czasowa od początku epoki w milisekundach |
Procent postępu | Wymagane warunkowo | Odsetek pełnych treści wykorzystanych przez użytkownika do tej pory. Uwaga: to pole jest wymagane, jeśli ten element jest częścią klastra kontynuacji. |
Wartość całkowita z zakresu od 0 do 100 włącznie. |
Kategorie treści | Opcjonalnie | Opisz kategorię treści w podmiocie. | Lista enum Wskazówki znajdziesz w sekcji Kategoria treści. |
PersonEntity
Atrybut | Wymaganie | Opis | Format |
---|---|---|---|
Identyfikator URI działania | Wymagany |
Precyzyjny link do elementu w aplikacji dostawcy. Uwaga: na potrzeby atrybucji możesz używać precyzyjnych linków. Zapoznaj się z odpowiedziami na najczęstsze pytania |
Identyfikator URI |
Profil – nazwa | Wymagany | Nazwa profilu lub identyfikator albo nick, np. „Jan Kowalski”, „@TeamPixel” itp. | Ciąg znaków Zalecany rozmiar tekstu: maks. 50 znaków |
Profil – awatar | Wymagany |
Zdjęcie profilowe lub awatar użytkownika. Uwaga: musi to być kwadratowe zdjęcie o proporcjach 1:1. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Profil – dodatkowy tekst | Opcjonalnie | Dowolny tekst, taki jak nick profilu. | Tekst otwarty Zalecany rozmiar tekstu: maksymalnie 15 znaków |
Profil – dodatkowe zdjęcie | Opcjonalnie | mały obraz, np. plakietka zweryfikowanego konta; | Wskazówki znajdziesz w specyfikacjach obrazów. |
Obraz w nagłówku | Opcjonalnie | Jeśli podasz kilka obrazów, wyświetlimy tylko 1 z nich. Zalecany format obrazu to 16:9 Uwaga: zdecydowanie zalecamy dodanie obrazu. Jeśli w ramach projektu jest uwzględniona plakietka, pamiętaj o zachowaniu 24 dps wolnego miejsca u góry i u dołu obrazu. |
Więcej informacji znajdziesz w specyfikacji zdjęć. |
Popularność – liczba | Opcjonalnie |
Wskaż liczbę obserwujących lub wartość popularności, np. „3,7 mln”. Uwaga: jeśli podasz zarówno wartość Liczba, jak i wartość Liczba, zostanie użyta liczba |
Ciąg znaków Zalecany rozmiar tekstu: maks. 20 znaków w przypadku liczby + etykiety łącznie |
Popularność – wartość zliczana | Opcjonalnie | Liczba obserwatorów lub wartość popularności. Uwaga: podaj wartość zliczania, jeśli aplikacja nie ma obsługiwać logiki optymalizacji dużych liczb pod kątem różnych rozmiarów wyświetlacza. Jeśli podasz zarówno liczbę, jak i wartość liczby, zostanie użyta liczba. |
Długie |
Popularność – etykieta | Opcjonalnie | Określ, jaka jest etykieta popularności. Na przykład: „Podoba mi się”. | Ciąg znaków Zalecany rozmiar tekstu: maksymalnie 20 znaków dla liczby i etykiety łącznie |
Popularność – wizualizacja | Opcjonalnie |
Wskazać, do czego służy interakcja. Na przykład: obraz przedstawiający ikonę polubienia lub emotikony. Możesz przesłać więcej niż 1 obraz, ale niektóre obrazy mogą nie wyświetlać się na wszystkich urządzeniach. Uwaga: wymagany jest kwadratowy obraz w formacie 1:1. |
Więcej informacji znajdziesz w specyfikacji zdjęć. |
Ocena – wartość maksymalna | Wymagane | Maksymalna wartość skali oceny. Musi być podana, jeśli podana jest też aktualna wartość oceny. |
Liczba >= 0.0 |
Rating - Current value | Wymagane | Bieżąca wartość skali ocen. Musi być podana, jeśli podana jest też maksymalna wartość oceny. |
Liczba >= 0.0 |
Rating - Count (Liczba ocen) | Opcjonalnie | Liczba ocen elementu. Uwaga: wypełnij to pole, jeśli Twoja aplikacja kontroluje sposób wyświetlania liczby użytkownikom. Użyj zwięzłego ciągu znaków. Jeśli np. liczba wynosi 1 000 000, rozważ użycie skrótu, np. 1 mln, aby liczba nie była obcinana w mniejszych rozmiarach wyświetlacza. |
Ciąg znaków |
Ocena – wartość liczby | Opcjonalnie | Liczba ocen elementu. Uwaga: wypełnij to pole, jeśli nie obsługujesz samodzielnie logiki wyświetlania skrótu. Jeśli podasz zarówno liczbę, jak i wartość liczby, użytkownicy zobaczą liczbę. |
Długie |
Lokalizacja – kraj | Opcjonalnie | Kraj, w którym znajduje się lub świadczy usługi. | Tekst otwarty Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – miasto | Opcjonalnie | Miasto, w którym znajduje się użytkownik lub w którym świadczy usługi. | Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – wyświetlany adres | Opcjonalnie | Adres pod adresem, pod którym znajduje się dana osoba lub pod którym działa, będzie widoczny dla użytkownika. | Tekst otwarty Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – adres | Opcjonalnie | Ulica i numer (jeśli dotyczy), pod którym znajduje się lub świadczy usługi. | Tekst otwarty Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – stan | Opcjonalnie | Województwo (jeśli dotyczy), w którym znajduje się lub działa dana osoba. | Tekst otwarty Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – kod pocztowy | Opcjonalnie | Kod pocztowy (jeśli występuje) miejsca, w którym znajduje się lub pracuje dana osoba. | Tekst otwarty Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – okolica | Opcjonalnie | Dzielnica (jeśli dotyczy), w której znajduje się lub w której pełni służbę dana osoba. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Odznaki | Opcjonalnie |
Każda plakietka ma postać dowolnego tekstu (maks. 15 znaków) lub małego obrazu. |
|
Plakietka – tekst | Opcjonalnie | Tytuł plakietki Uwaga: plakietka musi zawierać tekst lub obraz. |
Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz specjalne wrażenia użytkownika, na przykład w postaci plakietki nałożonej na obrazie lub miniaturze filmu; Uwaga: na plakietce musi znajdować się tekst lub obraz. |
Więcej informacji znajdziesz w specyfikacji zdjęć. |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący daną encję. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Dowolny tekst Zalecany rozmiar tekstu: 180 znaków |
Lista napisów | Opcjonalnie | maksymalnie 3 napisy, z których każdy może zawierać jeden wiersz tekstu. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Tekst otwarty Zalecane rozmiary tekstu dla każdego z napisów: maks. 50 znaków |
Kategorie treści | Opcjonalnie | Opisz kategorię treści w podmiocie. | Lista odpowiednich wyliczenia
Więcej informacji znajdziesz w sekcji Kategoria treści. |
EventEntity
Atrybut | Wymaganie | Opis | Format |
---|---|---|---|
Identyfikator URI działania | Wymagany |
Precyzyjny link do elementu w aplikacji dostawcy. Uwaga: na potrzeby atrybucji możesz używać precyzyjnych linków. Zapoznaj się z odpowiedziami na najczęstsze pytania |
Identyfikator URI |
Tytuł | Wymagany | Tytuł elementu. | Ciąg znaków Zalecany rozmiar tekstu: maks. 50 znaków |
Godzina rozpoczęcia | Wymagany |
Sygnatura czasowa początku epoki. Uwaga: wartość ta jest podawana w milisekundach. |
Sygnatura czasowa od początku epoki w milisekundach |
Tryb zdarzenia | Wymagany | Pole określające, czy wydarzenie odbędzie się online, stacjonarnie czy w obu przypadkach. |
Typ enumeracji: VIRTUAL, IN_PERSON lub HYBRID |
Plakat | Wymagany | Jeśli podasz kilka obrazów, wyświetlimy tylko 1 z nich. Zalecany format obrazu to 16:9 Uwaga: zdecydowanie zalecamy dodanie obrazu. Jeśli masz plakietkę, umieść wolną przestrzeń 24 dps u góry i u dołu obrazu |
Więcej informacji znajdziesz w specyfikacji zdjęć. |
Lokalizacja – kraj | Wymagane warunkowo | Kraj, w którym odbywa się wydarzenie. Uwaga: jest to wymagane w przypadku zdarzeń o typie IN_PERSON lub HYBRID. |
Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – miasto | Wymagane warunkowo | Miasto, w którym odbywa się wydarzenie. Uwaga: pole wymagane w przypadku wydarzeń typu IN_PERSON lub HYBRID |
Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – wyświetlany adres | Wymagane warunkowo | Adres lub nazwa miejsca, w którym odbędzie się wydarzenie, które powinny być wyświetlane użytkownikowi. Uwaga: jest to wymagane w przypadku zdarzeń o typie IN_PERSON lub HYBRID. |
Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – adres | Opcjonalnie | Adres (jeśli dotyczy) miejsca, w którym odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – stan | Opcjonalnie | Stan lub prowincja (jeśli ma zastosowanie), w którym odbywa się wydarzenie. | Tekst otwarty Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – kod pocztowy | Opcjonalnie | Kod pocztowy (jeśli dotyczy) lokalizacji, w której odbywa się wydarzenie. | Tekst otwarty Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – okolica | Opcjonalnie | Dzielnica (jeśli dotyczy), w której odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Godzina zakończenia | Opcjonalnie |
Sygnatura czasowa epoki, w której zdarzenie ma się zakończyć. Uwaga: wartość zostanie podana w milisekundach. |
Sygnatura czasowa epoki w milisekundach |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący daną encję. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Dowolny tekst Zalecany rozmiar tekstu: 180 znaków |
Lista napisów | Opcjonalnie | maksymalnie 3 napisy, z których każdy może zawierać jeden wiersz tekstu. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Tekst otwarty Zalecany rozmiar tekstu dla każdego podtytułu: maks. 50 znaków |
Odznaki | Opcjonalnie |
Każda plakietka ma postać dowolnego tekstu (maks. 15 znaków) lub małego obrazu. |
|
Plakietka – tekst | Opcjonalnie | Tytuł plakietki Uwaga: plakietka musi zawierać tekst lub obraz. |
Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz specjalne wrażenia użytkownika, na przykład w postaci plakietki nałożonej na obrazie lub miniaturze filmu; Uwaga: na plakietce musi znajdować się tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Price - CurrentPrice | Wymagane warunkowo |
Aktualna cena biletu na wydarzenie. Jeśli podano przekreśloną cenę, ta wartość jest wymagana. |
Tekst otwarty |
Cena – przekreślona cena | Opcjonalnie | Pierwotna cena biletu/karnetu na wydarzenie. | Tekst otwarty |
Objaśnienie dotyczące ceny | Opcjonalnie | Objaśnienie dotyczące ceny z informacją o promocji, wydarzeniu lub zniżce dla subskrybentów, jeśli jest dostępna. | Tekst otwarty Zalecane rozmiary tekstu: poniżej 45 znaków (w przypadku zbyt długiego tekstu mogą być wyświetlane wielokropki) |
Kategorie treści | Opcjonalnie | Opisz kategorię treści w podmiocie. | Lista odpowiednich wyliczenia
Wskazówki znajdziesz w sekcji Kategoria treści. |
EventReservationEntity
Atrybut | Wymaganie | Opis | Format |
---|---|---|---|
Identyfikator URI działania | Wymagany |
Precyzyjny link do elementu w aplikacji dostawcy. Uwaga: do atrybucji możesz używać precyzyjnych linków. Zapoznaj się z odpowiedziami na najczęstsze pytania |
Identyfikator URI |
Tytuł | Wymagany | Tytuł elementu. | Ciąg znaków Zalecany rozmiar tekstu: maks. 50 znaków |
Godzina rozpoczęcia | Wymagany |
Sygnatura czasowa początku epoki. Uwaga: wartość ta jest podawana w milisekundach. |
Sygnatura czasowa od początku epoki w milisekundach |
Tryb zdarzenia | Wymagany | Pole określające, czy wydarzenie odbędzie się online, stacjonarnie czy w obu przypadkach. |
Typ enumeracji: VIRTUAL, IN_PERSON lub HYBRID |
Lokalizacja – kraj | Wymagane warunkowo | Kraj, w którym odbywa się wydarzenie. Uwaga: jest to wymagane w przypadku zdarzeń o typie IN_PERSON lub HYBRID. |
Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – miasto | Wymagane warunkowo | Miasto, w którym odbywa się wydarzenie. Uwaga: pole wymagane w przypadku wydarzeń typu IN_PERSON lub HYBRID |
Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – wyświetlany adres | Wymagane warunkowo | Adres lub nazwa miejsca, w którym odbędzie się wydarzenie, które powinny być wyświetlane użytkownikowi. Uwaga: jest to wymagane w przypadku zdarzeń o typie IN_PERSON lub HYBRID. |
Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – adres | Opcjonalnie | Adres (jeśli dotyczy) miejsca, w którym odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – stan | Opcjonalnie | Stan lub prowincja (jeśli ma zastosowanie), w którym odbywa się wydarzenie. | Tekst otwarty Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – kod pocztowy | Opcjonalnie | Kod pocztowy (jeśli dotyczy) lokalizacji, w której odbywa się wydarzenie. | Tekst otwarty Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Lokalizacja – okolica | Opcjonalnie | Dzielnica (jeśli dotyczy), w której odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 20 znaków |
Plakat | Opcjonalnie | Jeśli podasz kilka obrazów, wyświetlimy tylko 1 z nich. Zalecany format obrazu to 16:9 Uwaga: zdecydowanie zalecamy użycie obrazu. Jeśli masz plakietkę, umieść wolną przestrzeń 24 dps u góry i u dołu obrazu |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Godzina zakończenia | Opcjonalnie |
Sygnatura czasowa epoki, w której zdarzenie ma się zakończyć. Uwaga: wartość zostanie podana w milisekundach. |
Sygnatura czasowa od początku epoki w milisekundach |
Dostawca usług – nazwa | Opcjonalnie |
Nazwa dostawcy usług. Uwaga: dostawca usługi musi podać tekst lub obraz. |
tekst swobodny, Na przykład nazwa organizatora wydarzenia lub wycieczki. |
Dostawca usług – obraz | Opcjonalnie |
Logo lub obraz dostawcy usługi. Uwaga: dostawca usług wymaga zarówno tekstu, jak i obrazu. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący daną encję. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Dowolny tekst Zalecany rozmiar tekstu: 180 znaków |
Lista napisów | Opcjonalnie | maksymalnie 3 napisy, z których każdy może zawierać jeden wiersz tekstu. Uwaga: użytkownik zobaczy albo opis, albo listę napisów, ale nie oba naraz. |
Tekst otwarty Zalecany rozmiar tekstu dla każdego podtytułu: maks. 50 znaków |
Odznaki | Opcjonalnie |
Każda plakietka ma postać dowolnego tekstu (maks. 15 znaków) lub małego obrazu. |
|
Plakietka – tekst | Opcjonalnie | Tytuł plakietki Uwaga: plakietka musi zawierać tekst lub obraz. |
Dowolny tekst Zalecany rozmiar tekstu: maksymalnie 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz specjalne wrażenia użytkownika, na przykład w postaci plakietki nałożonej na obrazie lub miniaturze filmu; Uwaga: plakietka musi zawierać tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Identyfikator rezerwacji | Opcjonalnie | Identyfikator rezerwacji wydarzenia. | Tekst otwarty |
Price - CurrentPrice | Wymagane warunkowo |
Aktualna cena biletu na wydarzenie. Jeśli podano przekreśloną cenę, ta wartość jest wymagana. |
Tekst otwarty |
Cena – przekreślona cena | Opcjonalnie | Pierwotna cena biletu/karnetu na wydarzenie. | Tekst otwarty |
Objaśnienie dotyczące ceny | Opcjonalnie | Objaśnienie dotyczące ceny z informacją o promocji, wydarzeniu lub zniżce dla subskrybentów, jeśli jest dostępna. | Tekst otwarty Zalecany rozmiar tekstu: poniżej 45 znaków (zbyt długi tekst może zawierać wielokropki) |
Ocena – wartość maksymalna | Opcjonalnie | Maksymalna wartość skali oceny. Musi być podana, jeśli podana jest też aktualna wartość oceny. |
Liczba >= 0.0 |
Ocena – bieżąca wartość | Opcjonalnie | Bieżąca wartość skali ocen. Musi być podana, jeśli podana jest też maksymalna wartość oceny. |
Liczba >= 0.0 |
Rating - Count (Liczba ocen) | Opcjonalnie | Liczba ocen wydarzenia. Uwaga: podaj to pole, jeśli aplikacja chce kontrolować sposób wyświetlania tej informacji użytkownikom. Podaj zwięzły ciąg znaków, który może być wyświetlany użytkownikowi. Jeśli np. liczba wynosi 1 000 000, rozważ użycie skrótu, np. 1 mln, aby nie została ona obcięta w mniejszych rozmiarach wyświetlacza. |
Ciąg znaków |
Ocena – wartość liczby | Opcjonalnie | Liczba ocen zdarzenia. Uwaga: podaj to pole, jeśli nie chcesz samodzielnie obsługiwać wyświetlanych skrótów. Jeśli podasz zarówno liczbę, jak i wartość liczby, użyjemy ich do wyświetlenia użytkownikom |
Długie |
Kategorie treści | Opcjonalnie | Opisz kategorię treści w podmiocie. | Lista odpowiednich wyliczenia
Więcej informacji znajdziesz w sekcji Kategoria treści. |
Specyfikacja obrazu
Wymagania dotyczące komponentów z obrazem:
Format obrazu | Minimalna liczba pikseli | Zalecany rozmiar w pikselach |
---|---|---|
Kwadrat (1 x 1) Preferowana |
300 x 300 | 1200 x 1200 |
Prostokąt w orientacji poziomej (1,91 x 1) | 600x314 | 1200x628 |
Orientacja pionowa (4 x 5) | 480 × 600 | 960x1200 |
Obrazy muszą być hostowane w publicznych sieciach CDN, aby Google mogło do nich uzyskać dostęp.
Formaty plików
PNG, JPG, statyczny GIF, WebP
Maksymalny rozmiar pliku
5120 KB
Dodatkowe rekomendacje
- Bezpieczny obszar obrazu: ważne treści umieść w środkowych 80% obrazu.
- Użyj przezroczystego tła, aby obraz był prawidłowo wyświetlany w ustawieniach motywu ciemnego i jasnego.
Kategoria treści
Kategoria treści umożliwia publikowanie treści należących do wielu kategorii. Powoduje to mapowanie treści na niektóre ze wstępnie zdefiniowanych kategorii:
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
Obrazy muszą być hostowane w publicznych sieciach CDN, aby umożliwić Google dostęp do nich.
Wskazówki dotyczące korzystania z kategorii treści
- Niektóre elementy, takie jak ArticleEntity i GeneralFeaturedEntity, mogą korzystać ze wszystkich kategorii treści. W przypadku innych jednostek, takich jak EventEntity, EventReservationEntity czy PersonEntity, kwalifikuje się tylko podzbiór tych kategorii. Zanim zaczniesz wypełniać listę, sprawdź listę kategorii, które kwalifikują się do danego typu encji.
W przypadku niektórych kategorii treści użyj konkretnego typu elementu zamiast kombinacji elementów typu Element ogólny i ContentCategory:
- TYPE_MOVIES_AND_TV_SHOWS – przed użyciem elementów ogólnych zapoznaj się z elementami z przewodnika po integracji z Watch.
- TYPE_BOOKS – zanim użyjesz elementów ogólnych, zapoznaj się z dokumentacją EbookEntity.
- TYPE_AUDIOBOOKS – przed użyciem elementów ogólnych sprawdź element AudiobookEntity.
- TYPE_SHOPPING – zapoznaj się z obiektem ShoppingEntity, zanim użyjesz jednostek ogólnych.
- TYPE_FOOD_AND_DRINK – zanim zaczniesz korzystać z elementów standardowych, zapoznaj się z informacjami w przewodniku po integracji żywności.
Pole ContentCategory jest opcjonalne i powinno być puste, jeśli treść nie należy do żadnej z wymienionych wcześniej kategorii.
Jeśli podajesz kilka kategorii treści, podaj je w kolejności od najbardziej do najmniej trafnych. Najtrafniejszą kategorię treści umieść na początku listy.
Krok 2. Podaj dane klastra
Zaleca się, aby zadanie publikowania treści było wykonywane w tle (np. za pomocą narzędzia WorkManager) i zaplanowane w regularnych odstępach czasu lub w określonych zdarzeniach (na przykład za każdym razem, gdy użytkownik otworzy aplikację lub gdy użytkownik właśnie dodał coś do koszyka).
Za publikowanie klastrów odpowiada AppEngagePublishClient
.
Dostępne są następujące interfejsy API do publikowania klastrów w kliencie:
isServiceAvailable
publishRecommendationClusters
publishFeaturedCluster
publishContinuationCluster
publishUserAccountManagementRequest
updatePublishStatus
deleteRecommendationsClusters
deleteFeaturedCluster
deleteContinuationCluster
deleteUserManagementCluster
deleteClusters
isServiceAvailable
Ten interfejs API służy do sprawdzania, czy usługa jest dostępna do integracji i czy treści mogą być wyświetlane na urządzeniu.
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
Ten interfejs API służy do publikowania listy obiektów 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());
Gdy usługa otrzyma żądanie, w ramach jednej transakcji wykonywane są te działania:
- Istniejące dane
RecommendationCluster
od partnera dewelopera zostaną usunięte. - Dane z zapytania są analizowane i przechowywane w zaktualizowanym klastrze rekomendacji.
W przypadku błędu cała prośba jest odrzucana, a obecny stan jest zachowany.
publishFeaturedCluster
Ten interfejs API służy do publikowania listy obiektów 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());
Gdy usługa otrzyma żądanie, w ramach jednej transakcji wykonywane są te działania:
- Istniejące dane
FeaturedCluster
od partnera dewelopera zostaną usunięte. - Dane z zapytania są analizowane i przechowywane w zaktualizowanym zbiorze polecanych.
W przypadku błędu żądanie w całości jest odrzucane, a obecny stan zostaje zachowany.
publishContinuationCluster
Ten interfejs API służy do publikowania obiektu 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());
Gdy usługa otrzyma żądanie, w ramach jednej transakcji wykonywane są te działania:
- Dotychczasowe dane
ContinuationCluster
pochodzące od partnera dewelopera zostaną usunięte. - Dane z żądania są analizowane i przechowywane w zaktualizowanym klastrze kontynuacji.
W przypadku błędu cała prośba jest odrzucana, a obecny stan jest zachowany.
publishUserAccountManagementRequest
Ten interfejs API służy do publikowania karty logowania . Logowanie kieruje użytkowników na stronę logowania w aplikacji, na której aplikacja może publikować treści (lub udostępniać treści bardziej spersonalizowane).
Te metadane są częścią karty logowania:
Atrybut | Wymaganie | Opis |
---|---|---|
Identyfikator URI działania | Wymagane | Precyzyjny link do aplikacji Action (np. przekierowuje na stronę logowania do aplikacji) |
Obraz | Opcjonalnie – jeśli nie zostanie podany, należy podać tytuł. |
Obraz na karcie Obrazy o współczynniku proporcji 16 x 9 i rozdzielczości 1264 x 712 |
Tytuł | Opcjonalnie – jeśli nie podano, należy przesłać zdjęcie | Tytuł na karcie |
Tekst działania | Opcjonalnie | Tekst wezwania do działania (np. Zaloguj się) |
Podtytuł | Opcjonalnie | Opcjonalny tekst na karcie |
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());
Gdy usługa otrzyma żądanie, w ramach jednej transakcji wykona te działania:
- Dotychczasowe dane
UserAccountManagementCluster
pochodzące od partnera dewelopera zostaną usunięte. - Dane z żądania są analizowane i przechowywane w zaktualizowanym klastrze UserAccountManagementCluster.
W przypadku błędu cała prośba jest odrzucana, a obecny stan jest zachowany.
updatePublishStatus
Jeśli z jakiegoś powodu biznesowego żaden z klastrów nie został opublikowany, zdecydowanie zalecamy zaktualizowanie stanu publikacji przy użyciu interfejsu API updatePublishStatus. To ważne, ponieważ :
- Podanie stanu we wszystkich scenariuszach, nawet gdy treści są opublikowane (STATUS = PUBLISHED), jest kluczowe dla wypełniania paneli, które używają tego stanu do wyświetlania stanu i innych danych integracji.
- Jeśli nie ma opublikowanych treści, ale integracja nie jest uszkodzona (STATUS = NOT_PUBLISHED), Google może nie uruchamiać alertów na panelach danych dotyczących zdrowia w aplikacji. Potwierdza ono, że treść nie została opublikowana z powodu oczekiwanej sytuacji z punktu widzenia dostawcy.
- Pomaga on deweloperom określić, kiedy dane są publikowane, a kiedy nie.
- Google może używać kodów stanu, aby skłonić użytkownika do wykonania określonych działań w aplikacji, aby mógł on wyświetlić zawartość aplikacji lub ją rozwiązać.
Lista kodów stanu publikacji, które kwalifikują się do opublikowania:
// 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
Jeśli treści nie są publikowane, ponieważ użytkownik nie jest zalogowany, Google zaleca opublikowanie karty logowania. Jeśli z jakiegokolwiek powodu dostawcy nie mogą opublikować karty logowania, zalecamy wywołanie interfejsu updatePublishStatus z kodem stanu 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
Ten interfejs API służy do usuwania treści z grup rekomendacji.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
Gdy usługa otrzyma prośbę, usunie istniejące dane z klastrów rekomendacji. W przypadku błędu całe żądanie zostaje odrzucone, a obecny stan zostaje zachowany.
deleteFeaturedCluster
Ten interfejs API służy do usuwania treści z wyróżnionego klastra.
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
Po otrzymaniu żądania usługa usuwa istniejące dane z polecanego klastra. W przypadku błędu cała prośba jest odrzucana, a istniejący stan jest zachowany.
deleteContinuationCluster
Ten interfejs API służy do usuwania zawartości klastra kontynuacji.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
Gdy usługa otrzyma żądanie, usunie istniejące dane z Klastra Kontynuacji. W przypadku błędu całe żądanie zostaje odrzucone, a obecny stan zostaje zachowany.
deleteUserManagementCluster
Ten interfejs API służy do usuwania treści z klastra UserAccountManagement.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
Gdy usługa otrzyma żądanie, usuwa istniejące dane z klastra UserAccountManagement. W przypadku błędu cała prośba jest odrzucana, a obecny stan jest zachowany.
deleteClusters
Ten interfejs API służy do usuwania treści danego typu klastra.
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());
Po otrzymaniu żądania usługa usuwa istniejące dane ze wszystkich klastrów pasujących do określonych typów klastrów. Klienci mogą przekazywać jeden lub wiele typów klastrów. W przypadku błędu żądanie w całości jest odrzucane, a obecny stan zostaje zachowany.
Obsługa błędów
Zdecydowanie zalecamy wsłuchiwanie się w wyniki zadania z interfejsów API do publikowania, aby móc podjąć dalsze działania w celu odzyskania i ponownego przesłania udanego zadania.
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 } } } });
Błąd jest zwracany jako AppEngageException
z przyczyną podaną w kodzie błędu.
Kod błędu | Uwaga: |
---|---|
SERVICE_NOT_FOUND |
Usługa jest niedostępna na danym urządzeniu. |
SERVICE_NOT_AVAILABLE |
Usługa jest dostępna na danym urządzeniu, ale nie jest dostępna w momencie wywołania (np. jest jawnie wyłączona). |
SERVICE_CALL_EXECUTION_FAILURE |
Nie udało się wykonać zadania z powodu problemów z wątkami. W takim przypadku można spróbować jeszcze raz. |
SERVICE_CALL_PERMISSION_DENIED |
Rozmówca nie może nawiązać połączenia z usługą. |
SERVICE_CALL_INVALID_ARGUMENT |
Żądanie zawiera nieprawidłowe dane (na przykład więcej niż dozwolona liczba klastrów). |
SERVICE_CALL_INTERNAL |
Po stronie usługi wystąpił błąd. |
SERVICE_CALL_RESOURCE_EXHAUSTED |
wywołanie usługi jest wykonywane zbyt często; |
Krok 3. Obsługa intencji transmisji
Oprócz wywoływania interfejsu Content API za pomocą zadania musisz też skonfigurować BroadcastReceiver
, aby odbierać prośby o publikowanie treści.
Celem intencji transmisji jest głównie ponowna aktywacja aplikacji i wymuszenie synchronizacji danych. Intencje związane z transmisją nie są przeznaczone do wysyłania zbyt często. Jest ona wywoływana tylko wtedy, gdy usługa Engage stwierdzi, że treści mogą być nieaktualne (np. mają tydzień). Dzięki temu użytkownik ma pewność, że będzie mieć dostęp do aktualnych treści, nawet jeśli aplikacja nie była uruchamiana przez długi czas.
Element BroadcastReceiver
musi być skonfigurowany w jednym z tych 2 sposobów:
- Dynamicznie zarejestruj wystąpienie klasy
BroadcastReceiver
za pomocąContext.registerReceiver()
. Umożliwia to komunikację z aplikacji, które są nadal aktywne w pamięci.
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)); }
- Zadeklaruj statycznie implementację za pomocą tagu
<receiver>
w plikuAndroidManifest.xml
. Dzięki temu aplikacja może odbierać intencje przesyłania, gdy nie jest uruchomiona, a także publikować treści.
<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>
Usługa wysyła te intencje:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
Gdy otrzymasz ten zamiar, zalecamy rozpoczęcie rozmowypublishRecommendationClusters
.com.google.android.engage.action.PUBLISH_FEATURED
Gdy otrzymasz ten zamiar, zalecamy rozpoczęcie rozmowypublishFeaturedCluster
.com.google.android.engage.action.PUBLISH_CONTINUATION
Po otrzymaniu tej intencji zalecamy uruchomienie wywołaniapublishContinuationCluster
.
Proces integracji
Szczegółowy przewodnik dotyczący weryfikacji integracji po jej zakończeniu znajdziesz w artykule Przepływ pracy w procesie integracji dla programistów Google dla Agencji.
Najczęstsze pytania
Najczęstsze pytania dotyczące Engage SDK znajdziesz w artykule Najczęstsze pytania dotyczące Engage SDK.
Kontakt
Jeśli masz pytania dotyczące procesu integracji, wyślij e-maila na adres Engage-developers@google.com.
Dalsze kroki
Po zakończeniu integracji należy wykonać następujące czynności:
- Wyślij e-maila na adres engage-developers@google.com i załącz zintegrowany pakiet APK, który jest gotowy do przetestowania przez Google.
- Google przeprowadza weryfikację i sprawdza integrację wewnętrznie, aby upewnić się, że działa ona zgodnie z oczekiwaniami. Jeśli będą potrzebne zmiany, Google skontaktuje się z Tobą, podając niezbędne informacje.
- Gdy testy zostaną zakończone i nie trzeba będzie wprowadzać żadnych zmian, skontaktujemy się z Tobą, aby poinformować, że możesz rozpocząć publikowanie zaktualizowanego i zintegrowanego pakietu APK w Sklepie Play.
- Gdy Google potwierdzi, że zaktualizowany plik APK został opublikowany w Sklepie Play, Twoje klastry Rekomendacja, Polecane i Kontynuacja mogą zostać opublikowane i staną się widoczne dla użytkowników.