Wytyczne dotyczące zarządzania zgodami w aplikacjach mobilnych

Przegląd

Niniejszy dokument zawiera kompleksowe wytyczne dotyczące wdrażania zarządzania zgodami w aplikacjach mobilnych, zapewniające zgodność z przepisami o ochronie danych, w tym z wymogami RODO, LGPD oraz ramami przejrzystości i zgody IAB (TCF). Dotyczy on właściwego postępowania z zgodami użytkowników w odniesieniu do usług stron trzecich, w tym sieci reklamowych, platform analitycznych i innych usług śledzących.

Wymagania dotyczące wdrożenia

1. Nie uruchamiaj usług stron trzecich bez weryfikacji zgody

Kroki wdrożeniowe:
  1. Sprawdź, czy użytkownik wyraził zgodę
  2. Sprawdź zgodę dla konkretnego dostawcy/usługi
  3. Uruchom usługę tylko wtedy, gdy spełnione są oba warunki
  4. Jeśli nie udzielono zgody dla danego dostawcy lub celu, musisz:

2. Dwufazowa weryfikacja zgody

Zawsze przeprowadzaj obie kontrole zgodnie z wymogami art. 7 ust. 1 RODO oraz specyfikacjami IAB TCF:

Faza 1: Czy użytkownik podjął decyzję?

  • Sprawdź, czy użytkownik wchodził w interakcję z warstwą zgody
  • Jeśli nie podjęto żadnej decyzji, nie przetwarzaj danych osobowych

Faza 2: Czy użytkownik wyraża zgodę na konkretny cel?

  • Sprawdź, czy udzielono zgody na korzystanie z konkretnej usługi strony trzeciej
  • Każdy sprzedawca/usługodawca wymaga indywidualnej weryfikacji zgody

Scenariusze przepływu pracy użytkownika

Scenariusz 1: Normalny przebieg pracy użytkownika

Przebieg: Użytkownik otwiera aplikację → SDK wyświetla warstwę zgody (w razie potrzeby) → Użytkownik dokonuje wyboru → Aplikacja kontynuuje działanie z odpowiednimi usługami

Ważne: nawigacja przyciskiem Wstecz lub gesty są wyłączone w naszych mobilnych SDK, więc użytkownik nie może zamknąć okienka zgody bez wyrażenia odpowiedniej zgody.

Kroki wdrożeniowe:
  1. Start aplikacji: Zainicjuj platformę zarządzania zgodami. W tym celu użyjesz metody checkAndOpen(). Sprawdź przykłady w naszej dokumentacji pomocy (iOS, Android)
  2. Sprawdzenie zgody: poprzedni krok automatycznie określi, czy zgoda jest potrzebna, czy nie, dzięki czemu użytkownik może podjąć świadomą decyzję w sprawie zgody. 
  3. Inicjalizacja usług: Zainicjuj usługi w oparciu o wybory użytkownika dotyczące zgody
Przykład wdrożenia:
// This hypothetical example assumes you have implemented: 
//   - OneSignal (s1448)
//   - Google Ads/AdMob (s1)
//   - Google Analytics (s26)

class yourGreatApp {

    void function onAppLaunch() {
        if shouldInitializeService("s148") {
            OneSignal.initialize("your-token")
        }
    
        if shouldInitializeService("s1") {
            AdMobService.initialize()
        }
    
        if shouldInitializeService("s26") {
            FirebaseAnalytics.initializeApp("your-token")
        }   
    }
    
    
    boolean private function shouldInitializeService(string: purposeId):
        // Phase 1: Check if user has made any decision
        consentStatus = CMPManager.getUserStatus()
        if consentStatus.status = "choiceDoesntExist"
            return false  // Consent Layer was not yet displayed to this client
        
        return CMPManager.shared.getStatusForPurpose(id: purposeId) == "granted"
    }
}

Scenariusz 2: Brak połączenia z Internetem

Przebieg: Użytkownik otwiera aplikację bez internetu → CMP nie może załadować warstwy zgody → Aplikacja musi poradzić sobie z tym w sposób elegancki

. Kluczowe uwagi:
  • Nasz mobilny SDK nie może pobrać konfiguracji z serwerów
  • Poprzednie decyzje dotyczące zgody mogą nadal obowiązywać (zgodnie z art. 7 ust. 3 RODO dotyczącym wycofania zgody)
  • Aplikacja musi działać w trybie awaryjnym bez przetwarzania danych osobowych w przypadku, gdy nie udzielono jeszcze zgody
Strategia wdrożenia:
  1. Sprawdź, czy istnieją dane dotyczące zgody z poprzednich sesji (użyjesz getUserStatus() jak w poprzednim przykładzie).
  2. Jeśli istnieje wcześniejsza zgoda, postępuj jak zwykle
  3. Jeśli nie ma trwałej zgody i nie ma internetu:
    • Zablokuj wszystkie zbędne usługi stron trzecich
    • Wyświetl przyjazny dla użytkownika komunikat wyjaśniający sytuację
    • Skonfiguruj moduł monitorujący łączność, aby ponowił próbę po przywróceniu połączenia, i wyświetl okno zgody, gdy to nastąpi
    • Zezwól na podstawową funkcjonalność aplikacji, która nie wymaga przetwarzania danych osobowych
Kwestie związane z doświadczeniem użytkownika:
  • Wyświetl jasny komunikat o ograniczonej funkcjonalności
  • Wprowadź opcję ponownej próby, gdy połączenie będzie dostępne
  • Wyjaśnij, że żadne dane osobowe nie będą udostępniane, dopóki nie zostaną dokonane wybory dotyczące prywatności
  • Zapewnij opcję kontynuowania w trybie ograniczonym

Scenariusz 3: Zgoda nie jest wymagana

Sytuacja: Użytkownik znajduje się poza UE, a CMP jest skonfigurowane tak, aby wyświetlać się tylko w UE → Nie wyświetla

się warstwa zgody Strategia wdrożenia:

  1. Skonfiguruj CMP w zwykły sposób
  2. Pozwól CMP określić, czy należy wyświetlić warstwę zgody, używając checkAndOpen()
  3. Jeśli zgoda nie jest wymagana, status użytkownika zwróci „choiceExists”, a dostawcy i cele zostaną ustawione na „granted”
  4. Zainicjuj wszystkie usługi w normalny sposób

Reaguj na zmiany w zakresie zgody

Zmiany dotyczące zgody mogą mieć miejsce w kilku scenariuszach:

  • Użytkownik otwiera ustawienia zgody i zmienia preferencje
  • Zgoda wygasa i wymaga odnowienia (to ustawienie można znaleźć w sekcji „Legal” na pulpicie nawigacyjnym CMP)
  • Zmiany wymogów prawnych, które wymuszają ponowne uzyskanie zgody
  • Użytkownik żąda usunięcia danych

Ta checkAndOpen() metoda zareaguje na wszystkie te sytuacje. Zaimplementuj słuchacz, który będzie śledził zmiany zgody. Możesz użyć didReceiveConsent callback (iOS i Android). Jeśli w dowolnym momencie dany dostawca lub cel zostanie odrzucony, należy natychmiast podjąć działania i odpowiednio zablokować usługi.

Lista kontrolna do testowania

Testy funkcjonalne

Testowanie normalnego przebiegu:

  • Aplikacja uruchamia się poprawnie i wyświetla okienko zgody w razie potrzeby
  • Wybory użytkownika dotyczące zgody są prawidłowo rejestrowane i respektowane
  • Usługi uruchamiają się wyłącznie po uzyskaniu odpowiedniej zgody
  • Aplikacja działa poprawnie po podjęciu decyzji dotyczących zgody

Testowanie ścieżek odrzucenia:

  • Odrzucenie przez użytkownika skutecznie blokuje usługi stron trzecich
  • Aplikacja pozostaje funkcjonalna lub przechodzi w tryb ograniczonej funkcjonalności w zależności od Twojej strategii przychodowej

Testowanie offline:

  • Aplikacja płynnie radzi sobie z brakiem połączenia internetowego
  • Dane dotyczące zgody zapisane w pamięci podręcznej są wykorzystywane w odpowiedni sposób
  • Tryb przyjazny dla prywatności włącza się w razie potrzeby
  • Przywrócenie połączenia uruchamia odpowiednią logikę ponownej próby

Testowanie limitu czasu:

  • Wygasanie warstwy zgody uruchamia odpowiedni mechanizm awaryjny
  • Aplikacja nie zawiesza się ani nie ulega awarii podczas przekroczenia limitu czasu
  • Tryb awaryjny prawidłowo blokuje przetwarzanie danych
  • Użytkownik otrzymuje jasną informację o statusie

Testowanie zgodności

Weryfikacja przetwarzania danych:

  • Żadne dane śledzące nie są wysyłane, zanim użytkownik wyrazi zgodę
  • Identyfikatory dostawców poprawnie przypisane do rzeczywistych usług
  • Indywidualne blokowanie usług działa zgodnie z zamierzeniami
  • Właściwie wdrożona szczegółowość zgody

Weryfikacja wymogów prawnych:

  • Cofnięcie zgody powoduje natychmiastowe zaprzestanie przetwarzania danych
  • Prawa osób, których dane dotyczą, można wykonywać za pośrednictwem aplikacji
  • Prowadzenie odpowiedniej ścieżki audytu dla decyzji dotyczących zgody
  • Udokumentowana podstawa prawna dla wszystkich operacji przetwarzania danych

Rozwiązywanie problemów

Typowe problemy i rozwiązania

Problem: Usługi uruchamiają się nawet w przypadku odmowy

zgody. Przyczyny źródłowe:
  • Brak weryfikacji zgody przed uruchomieniem usługi
  • Nieprawidłowe mapowanie identyfikatorów dostawców
Rozwiązania:
  • Dodaj wyraźne potwierdzenie zgody przed uruchomieniem KAŻDEJ usługi zewnętrznej
  • Sprawdź, czy identyfikatory dostawców są zgodne z tymi z globalnej listy dostawców
  • Zapewnij odpowiednią synchronizację między wyrażeniem zgody a uruchomieniem usługi
  • Jasno określ sytuacje, w których zgoda zostaje cofnięta
Problem: Warstwa zgody nigdy się nie pojawia
. Możliwe przyczyny:
  • Nieprawidłowa konfiguracja CMP (błędny identyfikator, domena itp.)
  • Problemy z łącznością sieciową
  • Użytkownik znajduje się poza docelowym regionem geograficznym
  • Problemy z integracją aplikacji
Kroki debugowania:
  • Sprawdź, czy konfiguracja CMP jest zgodna z ustawieniami konta
  • Sprawdź połączenie sieciowe i dostępność serwera CMP
  • Sprawdź logi konsoli pod kątem komunikatów o błędach
  • Przetestuj z warstwą zgody otwieraną automatycznie, aby zweryfikować integrację
  • Sprawdź ustawienia kierowania geograficznego w panelu CMP

Lista kontrolna priorytetów wdrożeniowych

Wysoki priorytet (należy wykonać przed uruchomieniem):
  • Weryfikacja zgody wdrożona przed uruchomieniem WSZYSTKICH usług stron trzecich
  • Prawidłowe obsługiwanie błędów związanych z przekroczeniem limitu czasu, siecią i konfiguracją
  • Zachowanie podstawowej funkcjonalności aplikacji w przypadku braku możliwości ustalenia zgody
  • Wszystkie identyfikatory dostawców zostały zweryfikowane i poprawnie przypisane do rzeczywistych usług
Bieżące ulepszenia:
  • Śledź statystyki na pulpicie nawigacyjnym CMP, aby sprawdzić wskaźniki skuteczności uzyskiwania zgód
  • Testy A/B w celu optymalizacji warstwy zgody
  • Integracja z dodatkowymi ramami zgodności
  • Lepsze informowanie użytkowników o opcjach dotyczących prywatności

Pamiętaj: w razie wątpliwości dotyczących wymogów dotyczących zgody zawsze wybieraj podejście zapewniające większą ochronę prywatności. Lepiej być nadmiernie ostrożnym niż naruszyć prywatność użytkownika lub wymogi regulacyjne.