Google tworzy platformę na urządzeniu, która porządkuje aplikacje użytkowników według branż i zapewnia nowe, immersyjne środowisko do spersonalizowanego przeglądania i odkrywania treści z aplikacji. Dzięki temu partnerzy mogą prezentować swoje najlepsze szczegółowe treści na specjalnym kanale poza aplikacją.W tym przewodniku znajdziesz instrukcje dla deweloperów dotyczące integracji materiałów o tematyce zdrowotnej i fitnessu za pomocą pakietu SDK dla Agencji.
Szczegóły integracji
Terminologia
Ta integracja obejmuje 3 typy klastrów: Rekomendacja, Polecane i 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ć dostosowane do użytkownika lub uogólnione (np. popularne tematy dotyczące fitnessu i zdrowie). Dzięki nim możesz wyświetlać artykuły lub osoby dotyczące zdrowia i fitnessu.
- Klaster rekomendacji może składać się z
ArticleEntity
,PersonEntity
lubEventEntity
, ale nie może zawierać różnych typów elementów.
Rekomendacje mają następującą strukturę:
Klaster rekomendacji: widok interfejsu zawierający grupę rekomendacji tego samego partnera dewelopera.
Encja: 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ć w artykułach, postach na blogu, treściach marketingowych, opisach wiadomości itp.
PersonEntity: PersonEntity oznacza osobę. Mogą one zawierać rekomendacje coacha lub dowolnej osoby związanej ze zdrowiem i aktywnością fizyczną itp.
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
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 dewelopera będzie mógł rozgłaszać maksymalnie 10 encji w klastrze kontynuacji.
Kontynuacja może mieć taką strukturę:
ArticleEntity to rekomendacja treści tekstowych związanych ze zdrowiem i kondycją fizyczną. 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.
EventChoiceEntity: reprezentuje rezerwację na wydarzenie i pomaga użytkownikom śledzić nadchodzące lub trwające rezerwacje aktywności i wydarzeń zdrowotnych. Przykład: sesje szkoleniowe
Klaster Polecane to widok interfejsu, który prezentuje wybrany element powitalny
GenericFeaturedEntity
spośród wielu partnerów deweloperów w jednej grupie UI. Jeden klaster Polecany znajduje się u góry interfejsu użytkownika i ma priorytet nad wszystkimi klastrami rekomendacji. Każdy partner deweloperów może transmitować 1 element obsługiwanego typu w sekcji Polecane wraz z wieloma elementami (potencjalnie różnych typów) od różnych deweloperów aplikacji w klastrze Polecane.Ogólna polecanyEntity: różni się od elementu rekomendacji tym, że element ten powinien być używany w odniesieniu do pojedynczych najlepszych treści pochodzących od deweloperów i powinien reprezentować te najważniejsze treści, które będą interesujące i odpowiednie dla użytkowników.
Przygotowanie
Minimalny poziom interfejsu API: 19
Dodaj bibliotekę com.google.android.play:engage
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.4.1'
}
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 encji w klastrze | Maksymalne limity encji 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 encji
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 typu.
GenericFeaturedEntity
Atrybut | Wymóg | 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 |
Plakat | 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 element. Uwaga: użytkownik zobaczy opis lub listę napisów, ale nie oba te elementy 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 opis lub listę napisów, ale nie oba te elementy naraz. |
Dowolny tekst 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 założenie na obraz lub film, np. jako nakładka z plakietką na obraz
|
|
Plakietka – tekst | Opcjonalnie | Tytuł plakietki Uwaga: plakietka musi zawierać tekst lub obraz. |
Dowolny tekst Zalecany rozmiar tekstu: maks. 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz Specjalnie dla wygody użytkownika, np. jako nakładka z plakietką na miniaturę obrazu lub filmu. Uwaga: plakietka musi zawierać tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Kategorie treści | Opcjonalnie | Opisz kategorię treści znajdujących się w danym elemencie. | Lista enum Wskazówki znajdziesz w sekcji Kategoria treści. |
ArticleEntity
Atrybut | Wymóg | 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. | Dowolny tekst Zalecany rozmiar tekstu: maks. 50 znaków |
Plakat | Opcjonalnie | Jeśli prześlesz kilka obrazów, wyświetlimy tylko jeden obraz. 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 | Wskazówki znajdziesz w specyfikacjach obrazów. |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący element. Uwaga: użytkownik zobaczy opis lub listę napisów, ale nie oba te elementy 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 opis lub listę napisów, ale nie oba te elementy naraz. |
Dowolny tekst 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 założenie na obraz lub film, np. jako nakładka z plakietką na obraz
|
|
Plakietka – tekst | Opcjonalnie | Tytuł plakietki Uwaga: plakietka musi zawierać tekst lub obraz. |
Dowolny tekst Zalecany rozmiar tekstu: maks. 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz Specjalnie dla wygody użytkownika, np. jako nakładka z plakietką na miniaturę obrazu lub filmu. Uwaga: plakietka musi zawierać tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Czas publikacji treści | Opcjonalnie | Jest to sygnatura czasowa epoki (w milisekundach) opublikowania lub zaktualizowania treści 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 ta encja jest częścią klastra kontynuacji. |
Sygnatura czasowa epoki w milisekundach |
Procent postępów | Wymagane warunkowo | Odsetek pełnych treści przetworzonych do tej pory przez użytkownika. Uwaga: to pole jest wymagane, jeśli ta encja jest częścią klastra kontynuacji. |
Wartość całkowita z zakresu od 0 do 100 włącznie. |
Kategorie treści | Opcjonalnie | Opisz kategorię treści znajdujących się w danym elemencie. | Lista enum Wskazówki znajdziesz w sekcji Kategoria treści. |
PersonEntity
Atrybut | Wymóg | 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. | Dowolny tekst Zalecany rozmiar tekstu: maks. 15 znaków |
Profil – dodatkowe zdjęcie | Opcjonalnie | Mały obraz, np. plakietka weryfikacyjna. | Wskazówki znajdziesz w specyfikacjach obrazów. |
Obraz w nagłówku | Opcjonalnie | Jeśli prześlesz kilka obrazów, wyświetlimy tylko jeden obraz. 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. |
Popularność – liczba | Opcjonalnie |
Reprezentuje obraz nagłówka. Musi różnić się od zdjęcia profilowego. Można go użyć, jeśli istnieje dodatkowy obraz, który wyróżnia osobę, która podoba się jego pracę. Uwaga: obraz musi mieć proporcje 16:9. Jeśli masz plakietkę, umieść wolną przestrzeń 24 dps u góry i u dołu obrazu |
Ciąg znaków Zalecany rozmiar tekstu: maks. 20 znaków w przypadku liczby + etykiety łącznie |
Popularność – wartość liczby | Opcjonalnie | Liczba obserwatorów lub wartość popularności. Uwaga: podaj wartość liczby, jeśli aplikacja nie ma obsługiwać logiki optymalizacji dużej liczby pod kątem różnych rozmiarów wyświetlaczy. Jeśli podasz zarówno liczbę, jak i wartość liczby, zostanie użyta liczba. |
Długi |
Popularność – etykieta | Opcjonalnie | Określ, jaka jest etykieta popularności. Na przykład: „Podoba mi się”. | Ciąg znaków Zalecany rozmiar tekstu: maks. 20 znaków w przypadku liczby + etykiety łącznie |
Popularność – treści wizualne | Opcjonalnie |
Wskaż, do czego służy dana interakcja. Na przykład obraz z ikoną polubień i emotikonami. 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. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Ocena – wartość maksymalna | Wymagane | Maksymalna wartość skali ocen. Atrybut ten jest wymagany, jeśli podano również bieżącą wartość oceny. |
Liczba >= 0.0 |
Ocena – bieżąca wartość | Wymagane | Bieżąca wartość skali ocen. Atrybut ten jest wymagany, jeśli podano także maksymalną wartość oceny. |
Liczba >= 0.0 |
Ocena – liczba | Opcjonalnie | Liczba ocen elementu. 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 na przykład liczba wynosi 1 000 000, możesz użyć skrótów, takich jak 1 mln, aby nie zostały one obcięte na mniejszych ekranach. |
Ciąg znaków |
Ocena – wartość liczby | Opcjonalnie | Liczba ocen elementu. 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ługi |
Lokalizacja – kraj | Opcjonalnie | Kraj, w którym znajduje się lub świadczy usługi. | Dowolny tekst 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: maks. 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. | Dowolny tekst 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. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – województwo | Opcjonalnie | Województwo (jeśli dotyczy), w którym znajduje się lub działa dana osoba. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – kod pocztowy | Opcjonalnie | Kod pocztowy (jeśli dotyczy), pod którym znajduje się użytkownik lub pod którym działa. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – okolica | Opcjonalnie | Dzielnica (jeśli dotyczy), w której znajduje się lub działa 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: maks. 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz Specjalnie dla wygody użytkownika, np. jako nakładka z plakietką na miniaturę obrazu lub filmu. Uwaga: plakietka musi zawierać tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący element. Uwaga: użytkownik zobaczy opis lub listę napisów, ale nie oba te elementy 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 opis lub listę napisów, ale nie oba te elementy naraz. |
Dowolny tekst Zalecany rozmiar tekstu dla każdego podtytułu: maks. 50 znaków |
Kategorie treści | Opcjonalnie | Opisz kategorię treści znajdujących się w danym elemencie. | Lista odpowiednich wyliczenia
Wskazówki znajdziesz w sekcji Kategoria treści. |
EventEntity
Atrybut | Wymóg | 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ść zostanie podana w milisekundach. |
Sygnatura czasowa epoki w milisekundach |
Tryb zdarzenia | Wymagany | Pole wskazujące, czy wydarzenie odbędzie się online, stacjonarnie czy w obu przypadkach. |
Enum: VIRTUAL, IN_PERSON lub HYBRID |
Plakat | Wymagany | Jeśli prześlesz kilka obrazów, wyświetlimy tylko jeden obraz. 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. |
Lokalizacja – kraj | Wymagane warunkowo | Kraj, w którym odbywa się wydarzenie. Uwaga: pole wymagane w przypadku wydarzeń typu 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: maks. 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: pole wymagane w przypadku wydarzeń typu IN_PERSON lub HYBRID |
Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – adres | Opcjonalnie | Ulica i numer (jeśli dotyczy) lokalizacji, w której odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – województwo | Opcjonalnie | Województwo, w którym odbywa się wydarzenie (w stosownych przypadkach). | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – kod pocztowy | Opcjonalnie | Kod pocztowy (jeśli dotyczy) lokalizacji, w której odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maks. 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 element. Uwaga: użytkownik zobaczy opis lub listę napisów, ale nie oba te elementy 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 opis lub listę napisów, ale nie oba te elementy naraz. |
Dowolny tekst 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: maks. 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz Specjalnie dla wygody użytkownika, np. jako nakładka z plakietką na miniaturę obrazu lub filmu. Uwaga: plakietka musi zawierać tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Cena – aktualna cena | Wymagane warunkowo |
Aktualna cena biletu na wydarzenie. Jeśli podano przekreśloną cenę, ta wartość jest wymagana. |
Dowolny tekst |
Cena – przekreślona cena | Opcjonalnie | Pierwotna cena biletu na wydarzenie. | Dowolny tekst |
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. | Dowolny tekst Zalecany rozmiar tekstu: poniżej 45 znaków (zbyt długi tekst może zawierać wielokropki) |
Kategorie treści | Opcjonalnie | Opisz kategorię treści znajdujących się w danym elemencie. | Lista odpowiednich wyliczenia
Wskazówki znajdziesz w sekcji Kategoria treści. |
EventReservationEntity
Atrybut | Wymóg | 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ść zostanie podana w milisekundach. |
Sygnatura czasowa epoki w milisekundach |
Tryb zdarzenia | Wymagany | Pole wskazujące, czy wydarzenie odbędzie się online, stacjonarnie czy w obu przypadkach. |
Enum: VIRTUAL, IN_PERSON lub HYBRID |
Lokalizacja – kraj | Wymagane warunkowo | Kraj, w którym odbywa się wydarzenie. Uwaga: pole wymagane w przypadku wydarzeń typu 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: maks. 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: pole wymagane w przypadku wydarzeń typu IN_PERSON lub HYBRID |
Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – adres | Opcjonalnie | Ulica i numer (jeśli dotyczy) lokalizacji, w której odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – województwo | Opcjonalnie | Województwo, w którym odbywa się wydarzenie (w stosownych przypadkach). | Dowolny tekst Zalecany rozmiar tekstu: maks. 20 znaków |
Lokalizacja – kod pocztowy | Opcjonalnie | Kod pocztowy (jeśli dotyczy) lokalizacji, w której odbywa się wydarzenie. | Dowolny tekst Zalecany rozmiar tekstu: maks. 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 |
Plakat | Opcjonalnie | Jeśli prześlesz kilka obrazów, wyświetlimy tylko jeden obraz. 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 epoki w milisekundach |
Dostawca usług – nazwa | Opcjonalnie |
Nazwa dostawcy usług. Uwaga: w przypadku dostawcy usług wymagany jest tekst lub obraz. |
Dowolny tekst. Np. Imię i nazwisko organizatora wydarzenia lub wycieczki |
Dostawca usług – obraz | Opcjonalnie |
Logo/obraz dostawcy usług. Uwaga: w przypadku dostawcy usług wymagany jest tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Opis | Opcjonalnie | Jeden akapit tekstu opisujący element. Uwaga: użytkownik zobaczy opis lub listę napisów, ale nie oba te elementy 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 opis lub listę napisów, ale nie oba te elementy naraz. |
Dowolny tekst 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: maks. 15 znaków |
Plakietka – obraz | Opcjonalnie | Mały obraz Specjalnie dla wygody użytkownika, np. jako nakładka z plakietką na miniaturę obrazu lub filmu. Uwaga: plakietka musi zawierać tekst lub obraz. |
Wskazówki znajdziesz w specyfikacjach obrazów. |
Identyfikator rezerwacji | Opcjonalnie | Identyfikator rezerwacji na wydarzenie. | Dowolny tekst |
Cena – aktualna cena | Wymagane warunkowo |
Aktualna cena biletu na wydarzenie. Jeśli podano przekreśloną cenę, ta wartość jest wymagana. |
Dowolny tekst |
Cena – przekreślona cena | Opcjonalnie | Pierwotna cena biletu na wydarzenie. | Dowolny tekst |
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. | Dowolny tekst Zalecany rozmiar tekstu: poniżej 45 znaków (zbyt długi tekst może zawierać wielokropki) |
Ocena – wartość maksymalna | Opcjonalnie | Maksymalna wartość skali ocen. Atrybut ten jest wymagany, jeśli podano również bieżącą wartość oceny. |
Liczba >= 0.0 |
Ocena – bieżąca wartość | Opcjonalnie | Bieżąca wartość skali ocen. Atrybut ten jest wymagany, jeśli podano także maksymalną wartość oceny. |
Liczba >= 0.0 |
Ocena – liczba | 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 na przykład liczba wynosi 1 000 000, możesz użyć skrótów, takich jak 1 mln, aby nie zostały one obcięte na mniejszych ekranach. |
Ciąg znaków |
Ocena – wartość liczby | Opcjonalnie | Liczba ocen wydarzenia. 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ługi |
Kategorie treści | Opcjonalnie | Opisz kategorię treści znajdujących się w danym elemencie. | Lista odpowiednich wyliczenia
Wskazówki znajdziesz w sekcji Kategoria treści. |
Specyfikacja obrazu
Wymagane specyfikacje komponentów z obrazem znajdziesz w tej tabeli:
Format obrazu | Minimalny rozmiar w pikselach | Zalecany rozmiar w pikselach |
---|---|---|
Kwadrat (1 x 1) Preferowana |
300x300 | 1200x1200 |
Poziomy (1,91 x 1) | 600x314 | 1200x628 |
Orientacja pionowa (4 x 5) | 480 × 600 | 960x1200 |
Obrazy muszą być hostowane w publicznych sieciach CDN, aby umożliwić Google dostęp do nich.
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, by obraz wyświetlał się prawidłowo w ustawieniach ciemnego i jasnego motywu.
Kategoria treści
Kategoria treści umożliwia aplikacjom 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 podmiotów, takich jak EventEntity, EventLabelEntity czy PersonEntity, kwalifikują się tylko niektóre z nich. Zanim wypełnisz listę, sprawdź listę kategorii kwalifikujących się dla danego typu encji.
W przypadku niektórych kategorii treści używaj określonego typu elementu zamiast kombinacji elementów ogólnych i kategorii treści:
- TYPE_MOVIES_AND_TV_SHOWS – Zanim użyjesz elementów ogólnych, obejrzyj je z przewodnika po integracji.
- TYPE_BOOKS – zanim użyjesz elementów ogólnych, zapoznaj się z dokumentacją EbookEntity.
- TYPE_AUDIOBOOKS – zapoznaj się z elementem AudiobookEntity, zanim użyjesz elementów ogólnych.
- 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 odpowiadającej treściom. Na początku listy umieść najtrafniejszą kategorię.
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
.
Istnieją 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, wykonywane są te działania w ramach jednej transakcji:
- Dotychczasowe dane
RecommendationCluster
pochodzące od partnera dewelopera zostaną usunięte. - Dane z żądania są analizowane i przechowywane w zaktualizowanym klastrze rekomendacji.
W przypadku błędu żądanie w całości jest odrzucane, a obecny stan zostaje 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, wykonywane są te działania w ramach jednej transakcji:
- Dotychczasowe dane
FeaturedCluster
pochodzące od partnera dewelopera zostaną usunięte. - Dane z żądania są analizowane i przechowywane w zaktualizowanym polecanym klastrze.
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, wykonywane są te działania w ramach jednej transakcji:
- 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 żądanie w całości jest odrzucane, a obecny stan zostaje 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 | Wymóg | Opis |
---|---|---|
Identyfikator URI działania | Wymagane | Precyzyjny link do działania (np. przejście na stronę logowania w aplikacji) |
Obraz | Opcjonalnie – jeśli nie podano, musisz podać tytuł |
Obraz widoczny 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 widoczny w wezwaniu do działania (np. „Zaloguj się”) |
Podtytuł | Opcjonalnie | Opcjonalny tytuł 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, wykonywane są te działania w ramach jednej transakcji:
- 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 żądanie w całości jest odrzucane, a obecny stan zostaje 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 po opublikowaniu treści (STATUS == PUBLISHED), ma kluczowe znaczenie przy wypełnianiu paneli, które używają tego stanu wprost do przekazywania danych o stanie i innych wskaźnikach związanych z integracją.
- Jeśli nie zostaną opublikowane żadne treści, ale stan integracji nie jest nieprawidłowy (STATUS == NOT_PUBLISHED), Google może uniknąć wywoływania alertów w panelach stanu aplikacji. Potwierdza ono, że treść nie została opublikowana z powodu oczekiwanej sytuacji z punktu widzenia dostawcy.
- Pomaga 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 odpowiednich publikacji :
// 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 zostały opublikowane z powodu niezalogowanego użytkownika, zalecamy opublikowanie karty logowania. Jeśli z jakiegoś powodu dostawcy nie mogą opublikować karty logowania, zalecamy wywołanie interfejsu API 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 zawartości klastrów rekomendacji.
Kotlin
client.deleteRecommendationClusters()
Java
client.deleteRecommendationClusters();
Po otrzymaniu żądania usługa usuwa 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 zawartości polecanego klastra.
Kotlin
client.deleteFeaturedCluster()
Java
client.deleteFeaturedCluster();
Po otrzymaniu żądania usługa usuwa istniejące dane z polecanego klastra. W przypadku błędu żądanie w całości jest odrzucane, a obecny stan zostaje zachowany.
deleteContinuationCluster
Ten interfejs API służy do usuwania zawartości klastra kontynuacji.
Kotlin
client.deleteContinuationCluster()
Java
client.deleteContinuationCluster();
Po otrzymaniu żądania usługa usuwa 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 zawartości klastra UserAccountManagement.
Kotlin
client.deleteUserManagementCluster()
Java
client.deleteUserManagementCluster();
Po otrzymaniu żądania usługa usuwa istniejące dane z klastra zarządzania kontami użytkowników. W przypadku błędu całe żądanie zostaje odrzucone, a obecny stan zostaje zachowany.
deleteClusters
Ten interfejs API służy do usuwania zawartości klastra określonego typu.
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. Klienty mogą przesyłać 1 typ klastra lub wiele z nich. 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 |
Dzwonienie do zespołu pomocy jest wykonywane zbyt często. |
Krok 3. Obsługa intencji transmisji
Oprócz wykonywania wywołań interfejsu Publishing Content API za pomocą zadania musisz też skonfigurować BroadcastReceiver
, aby otrzymywać żądanie publikacji 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 wywoływane tylko wtedy, gdy usługa Google dla Agencji ustali, że treść może być nieaktualna (np. sprzed tygodnia). Dzięki temu użytkownicy będą mieli większą pewność, że będą mieli dostęp do nowych treści, nawet jeśli aplikacja nie była uruchamiana od dłuższego czasu.
BroadcastReceiver
trzeba skonfigurować na 2 sposoby:
- Dynamicznie zarejestruj wystąpienie klasy
BroadcastReceiver
za pomocąContext.registerReceiver()
. Umożliwia to komunikację z aplikacji, które wciąż są 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)); }
- Statycznie deklaruj implementację z tagiem
<receiver>
w plikuAndroidManifest.xml
. Dzięki temu aplikacja może odbierać intencje transmisji, gdy nie jest uruchomiona, i moż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 zamiary:
com.google.android.engage.action.PUBLISH_RECOMMENDATION
Po otrzymaniu tej intencji zalecamy uruchomienie wywołaniapublishRecommendationClusters
.com.google.android.engage.action.PUBLISH_FEATURED
Po otrzymaniu tej intencji zalecamy uruchomienie wywołaniapublishFeaturedCluster
.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 związany z integracją dla programistów.
Najczęstsze pytania
Odpowiedzi na najczęstsze pytania znajdziesz w odpowiedziach na najczęstsze pytania o pakiet SDK dla Agencji.
Kontakt
Jeśli masz pytania dotyczące procesu integracji, wyślij e-maila na adres engagement-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 dołącz zintegrowany plik APK, który jest gotowy do testowania przez Google.
- Google przeprowadza weryfikację i weryfikuje wewnętrznie, aby upewnić się, że integracja działa zgodnie z oczekiwaniami. Jeśli zajdzie taka potrzeba, Google skontaktuje się z Tobą i przekaże Ci wszelkie niezbędne informacje.
- Gdy testy zostaną zakończone i nie będą konieczne żadne zmiany, Google skontaktuje się z Tobą, aby powiadomić Cię, że możesz rozpocząć publikowanie zaktualizowanego i zintegrowanego pliku APK w Sklepie Play.
- Gdy Google potwierdzi, że zaktualizowany pakiet APK został opublikowany w Sklepie Play, Twoje klastry Rekomendacje, Polecane i Kontynuacja mogą zostać opublikowane i widoczne dla użytkowników.