Engage SDK Health and Fitness: instrukcje integracji technicznej z aplikacjami innych firm

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 lub EventEntity, 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.

        Rysunek 1. Interfejs przedstawiający pojedynczy obiekt ArticleEntity w klastrze Recommendations.
      • PersonEntity: PersonEntity oznacza osobę. Zalecenia mogą dotyczyć wyróżnienia trenera lub innej osoby związanej ze zdrowiem i fitnessem.

        Rysunek 2.: interfejs pokazujący pojedynczy obiekt PersonEntity w klastrze rekomendacji.
      • 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.

        Rysunek 3. Interfejs pokazujący pojedynczy obiekt EventEntity w klastrze rekomendacji.
  • 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.

      Rysunek 6. Interfejs przedstawiający pojedynczy element ArticleEntity w klastrze kontynuacji.
    • 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

      Rysunek 8. Interfejs przedstawiający pojedynczy element EventRezerwacjaEntity w klastrze kontynuacji.
  • 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.

      Rysunek 12. Interfejs użytkownika z pojedynczą kartą typu GenericFeaturedEntity w klastrze z elementami wyróżnionymi

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:

  1. GenericFeaturedEntity
  2. ArticleEntity
  3. PersonEntity
  4. EventEntity
  5. 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

  • „Aktualizacja na żywo”
  • Czas czytania artykułu
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

  • „Aktualizacja na żywo”
  • Czas czytania artykułu
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

  • TYPE_HEALTH_AND_FITENESS (Przykład: trener jogi/fitnessu)
  • TYPE_HOME_AND_AUTO (np. hydraulik)
  • TYPE_SPORTS (Przykład – Player)
  • TYPE_DATING

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

  • TYPE_MOVIES_AND_TV_SHOWS (np. Cinema)
  • TYPE_DIGITAL_GAMES (przykład: e-sport)
  • TYPE_MUSIC (przykład: koncert)
  • TYPE_TRAVEL_AND_LOCAL (przykład: zwiedzanie, festiwal)
  • TYPE_HEALTH_AND_FITENESS (przykład: zajęcia jogi)
  • TYPE_EDUCATION (przykład – klasa)
  • TYPE_SPORTS (przykład – mecz piłki nożnej)
  • TYPE_DATING (np. spotkanie)

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

  • TYPE_MOVIES_AND_TV_SHOWS (np. Cinema)
  • TYPE_DIGITAL_GAMES (przykład: e-sport)
  • TYPE_MUSIC (przykład: koncert)
  • TYPE_TRAVEL_AND_LOCAL (przykład: zwiedzanie, festiwal)
  • TYPE_HEALTH_AND_FITENESS (przykład: zajęcia jogi)
  • TYPE_EDUCATION (przykład – klasa)
  • TYPE_SPORTS (przykład – mecz piłki nożnej)
  • TYPE_DATING (przykład: spotkanie)

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

  1. 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.
  2. 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.
  3. Pole ContentCategory jest opcjonalne i powinno być puste, jeśli treść nie należy do żadnej z wymienionych wcześniej kategorii.

  4. 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 pliku AndroidManifest.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 rozmowy publishRecommendationClusters.
  • com.google.android.engage.action.PUBLISH_FEATURED Gdy otrzymasz ten zamiar, zalecamy rozpoczęcie rozmowy publishFeaturedCluster.
  • com.google.android.engage.action.PUBLISH_CONTINUATION Po otrzymaniu tej intencji zalecamy uruchomienie wywołania publishContinuationCluster.

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, PolecaneKontynuacja mogą zostać opublikowane i staną się widoczne dla użytkowników.