Tworzenie sesji i zarządzanie nimi

Sesje są podstawą interfejsu Picker API i stanowią bezpieczny i kontrolowany sposób wybierania zdjęć i filmów z biblioteki Zdjęć Google. Z tego przewodnika dowiesz się, jak tworzyć sesje ankietowania, nimi zarządzać i skutecznie je przeprowadzać, aby umożliwić bezproblemowy wybór zdjęć w aplikacji.

Zanim rozpoczniesz

Cykl życia sesji

Interfejs Picker API udostępnia metody tworzenia sesji, pobierania informacji o nich i ich usuwania. Po uwierzytelnieniu użytkowników możesz zarządzać cyklem życia wybierania zdjęć za pomocą sesji.

  1. Utwórz sesję, aby umożliwić użytkownikowi wybranie elementów multimedialnych.
  2. Sprawdź sesję, aby sprawdzić, kiedy użytkownik zakończył wybieranie elementów multimedialnych.
  3. Wyświetlanie i pobieranie elementów multimedialnych.
  4. Wyczyść sesję, usuwając ją.

Tworzenie sesji

Utwórz sesję, aby użytkownicy mogli bezpiecznie wybierać zdjęcia bezpośrednio z aplikacji Zdjęcia Google i udostępniać je w Twojej aplikacji.

sessions.create generuje nową sesję, zwracając unikalny identyfikator pickerUri, który możesz wyświetlić użytkownikom. Sesja pozostaje aktywna do momentu, gdy użytkownik wybierze elementy multimedialne lub do czasu jej zakończenia.

Ograniczenia sesji

Pamiętaj o limitach sesji. Interfejs Picker API nakłada limity na liczbę sesji, które możesz utworzyć, aby zapewnić odpowiedzialne korzystanie i zapobiec nadużyciom. W normalnych okolicznościach nie powinno dojść do przekroczenia tych limitów. Aby uniknąć problemów, należy jednak aktywnie śledzić i oczyszczać sesje.

Ankiety i monitorowanie sesji

Po utworzeniu sesji okresowo sprawdzaj punkt końcowy sessions.get, aby uzyskać stan sesji. Właściwość mediaItemsSet w odpowiedzi zwraca wartość true, gdy użytkownik zakończy wybór.

Używaj wydajnego mechanizmu sondowania. Odpowiedź sessions.get zawiera obiekt pollingConfig. Aby uniknąć niepotrzebnych połączeń i zapewnić użytkownikom płynne działanie aplikacji, użyj tych pól:

  • pollInterval: optymalne interwały pomiarów
  • timeoutIn: czas oczekiwania

Więcej informacji znajdziesz w przykładowym procesie ankietowania.

Usuwanie i porządkowanie sesji

sessions.delete usuwa sesję. Jest to zwykle używane do czyszczenia po zakończeniu przez użytkownika wyboru multimediów lub po przekroczeniu limitu czasu sesji.

Sprawdzoną metodą jest usuwanie sesji po wybraniu przez użytkownika elementów multimediów i po tym, jak aplikacja pobierze bajty elementu multimedialnego.

Przykładowy przepływ danych

Oto przykład tworzenia sesji i wybierania jej. Po uwierzytelnieniu użytkownika utwórz nową sesję.

  1. Utwórz sesję: wywołaj funkcję sessions.create, aby zainicjować nową sesję i uzyskać wartość pickerUri.
  2. Pokaż użytkownikowi pickerUri: wyświetl adres URL lub wygeneruj kod QR, który użytkownik może zeskanować. Zapoznaj się z omówieniem procesu wyboru przez użytkownika.
  3. Ankietowanie sesji:
    1. Użyj zalecanego parametru pollInterval z pollingConfig.
    2. Sprawdź, czy mediaItemsSet jest prawdziwe.
      1. Jeśli true, przejdź do wyświetlenia wybranych elementów multimedialnych.
      2. Jeśli false, kontynuuj odczytywanie do momentu osiągnięcia timeoutIn.
    3. prawidłowo obsługiwać przekroczenia limitów czasu i anulowania;
GET https://photoslibrary.googleapis.com/v1/sessions/{sessionId}

Oto przykład odpowiedzi:

{
  "id": string,
  "pickerUri": string,
  "pollingConfig": {
    object (PollingConfig)
  },
  "mediaItemsSet": boolean
}

Pokaż użytkownikowi pickerUri, a potem rozpocznij ankietowanie sesji.

Sprawdź odpowiedź pod kątem tych kwestii:

  • mediaItemsSet: wartość „PRAWDA”, jeśli użytkownik zakończył wybieranie elementów multimedialnych
  • pollingConfig.pollInterval: zalecany czas oczekiwania przed kolejnym głosowaniem
  • pollingConfig.timeoutIn: łączny czas oczekiwania przed przekroczeniem limitu

Jeśli mediaItemsSet ma wartość fałsz i nie osiągnięto wartości timeoutIn, poczekaj na pollInterval, a potem ponownie przeprowadź ankietę.

Jeśli mediaItemsSet ma wartość Prawda, przejdź do wyświetlenia wybranych elementów multimedialnych.

Jeśli zostanie osiągnięty limit timeoutIn, obsłuż czas oczekiwania.