ניהול הסכמה גרעיני לפי קטגוריות נתונים באפליקציות מובייל
האפליקציה אספה את כל הנתונים ללא הבחנה: נתוני אנליטיקה, שיווק ופרסום. המשתמש לחץ על "קבל" פעם אחת והסכים להכל. שנה לאחר מכן — קנס של עד 20 מיליון יורו או 4% מהמחזור הגלובלי בשל חוסר בהסכמה גרעינית. מקרה טיפוסי, אך ניתן להימנע ממנו בקלות. אנו מיישמים מערכת ניהול הסכמה (Consent Management) מוכנה לשימוש המעניקה למשתמשים שליטה על כל קטגוריית נתונים ומבטיחה עמידה בGDPR, CCPA, LGPD. הניסיון שלנו: 8+ שנים בעמידה ברגולציה, 40+ הטמעות עבור פינטק, מסחר אלקטרוני ואפליקציות בריאות. אנו מבטיחים מעבר מוצלח בביקורת ראשונה — 98% הצלחה.
מדוע הסכמה בינארית מסוכנת?
הרגולטורים דורשים הסכמה גרעינית: המשתמש חייב להיות מסוגל להסכים לאנליטיקה אך לסרב לפרופיל פרסומי. כפיית הכל או כלום היא הפרה של עקרון חופש ההסכמה לפי GDPR (סעיף 7). הICO (בריטניה) ו-CNIL (צרפת) כבר קנסו על כך. הסכמה גרעינית מפחיתה את הסיכון לסנקציות פי 3 בהשוואה להסכמה בינארית. טכנית, משמעות הדבר היא ערך בוליאני נפרד לכל קטגוריה, ולא שדה consent_accepted יחיד.
| קטגוריה | הסכמה גרעינית | הכל או כלום |
|---|---|---|
| הכרחי | תמיד פעיל | פעיל |
| אנליטיקה | פעיל/לא פעיל | פעיל (ללא בחירה) |
| שיווק | פעיל/לא פעיל | פעיל |
| התאמה אישית | פעיל/לא פעיל | פעיל |
| שיתוף עם צד שלישי | פעיל/לא פעיל | פעיל |
קטגוריות נתונים עשויות לכלול: הכרחי (אימות), אנליטיקה (Firebase, Amplitude), שיווק (אימייל, push), התאמה אישית (המלצות), שיתוף עם צד שלישי (רשתות פרסום), מיקום גיאוגרפי (למפות), שיווק push. לכל קטגוריה יש בסיס משפטי: ביצוע חוזה, אינטרס לגיטימי, הסכמה.
כיצד ליישם מנהל הסכמה באפליקציה?
- הגדר קטגוריות נתונים — נתח אילו נתונים אתה אוסף. סט סטנדרטי: הכרחי, אנליטיקה, שיווק, התאמה אישית, שיתוף עם צד שלישי. התאם אישית לעסק שלך.
- פתח מסך ממשק להסכמה — המסך צריך להיות נגיש מהגדרות הפרופיל, לא רק בהפעלה הראשונה. השתמש במתגים ברורים עם תיאורי קטגוריות.
- שלב SDKs — עבור כל קטגוריה, כתוב מטפלים המעדכנים את ה-SDK המתאים (Firebase, Amplitude, AdMob וכו') כאשר ההסכמה משתנה. דוגמת קוד למטה.
- יישם סנכרון בצד השרת — רשומות הסכמה חייבות להישמר בשרת עם גרסת מדיניות וחותמת זמן. זה נדרש לביקורת.
- בדוק עמידה ברגולציה — ודא שכאשר ההסכמה נסוגה, ה-SDKs מפסיקים מיד לאסוף נתונים. השתמש בבדיקות אוטומטיות.
אנו מסייעים בכל שלב, כולל כתיבת תיעוד למחלקת הציות.
כיצד אנו בונים את ארכיטקטורת מנהל ההסכמה
enum class ConsentPurpose(val id: String) {
NECESSARY("necessary"),
ANALYTICS("analytics"),
MARKETING("marketing"),
PERSONALIZATION("personalization"),
THIRD_PARTY_SHARING("third_party_sharing"),
LOCATION_TRACKING("location_tracking"),
PUSH_MARKETING("push_marketing")
}
data class ConsentRecord(
val purpose: ConsentPurpose,
val granted: Boolean,
val grantedAt: Long?,
val revokedAt: Long?,
val policyVersion: String,
val collectionMethod: String
)
class ConsentManager(
private val store: ConsentStore,
private val server: ConsentSyncService
) {
fun grant(purpose: ConsentPurpose) {
val record = ConsentRecord(
purpose = purpose,
granted = true,
grantedAt = System.currentTimeMillis(),
revokedAt = null,
policyVersion = PolicyVersionProvider.current(),
collectionMethod = "explicit_ui"
)
store.save(record)
server.syncAsync(record)
notifySDKs(purpose, granted = true)
}
fun revoke(purpose: ConsentPurpose) {
val existing = store.get(purpose)?.copy(
granted = false,
revokedAt = System.currentTimeMillis()
) ?: return
store.save(existing)
server.syncAsync(existing)
notifySDKs(purpose, granted = false)
}
fun isGranted(purpose: ConsentPurpose): Boolean {
return store.get(purpose)?.granted == true
}
} כיצד לסנכרן הסכמה עם SDKs?
כאשר ההסכמה משתנה, עדכן מיד את כל ה-SDKs המושפעים:
private fun notifySDKs(purpose: ConsentPurpose, granted: Boolean) {
when (purpose) {
ANALYTICS -> {
FirebaseAnalytics.getInstance(context)
.setAnalyticsCollectionEnabled(granted)
amplitude.setOptOut(!granted)
}
MARKETING -> {
MobileAds.setRequestConfiguration(
RequestConfiguration.Builder()
.setTagForChildDirectedTreatment(
if (granted) TAG_UNSPECIFIED else TAG_TRUE
).build()
)
}
PUSH_MARKETING -> {
if (!granted) {
FirebaseMessaging.getInstance()
.unsubscribeFromTopic("marketing_campaigns")
}
}
else -> {}
}
} מסך ניהול ההסכמה
נגיש מהגדרות הפרופיל בכל עת — לא רק בהפעלה הראשונה. מבנה:
Управление данными
├── Необходимые (не отключаемые)
│ └── Аутентификация и безопасность
├── Аналитика использования [ВКЛ] ←→
│ └── Помогает нам улучшать приложение
├── Персонализация [ВЫК] ←→
│ └── Рекомендации на основе ваших действий
├── Маркетинговые коммуникации [ВЫК] ←→
│ └── Email и push о новинках
└── Передача партнёрам [ВЫК] ←→
└── Рекламные сети и аналитикаנסיגת הסכמה פועלת באופן מיידי. אין להוסיף חיכוך — זהו דפוס אפל.
כיצד לנהל גרסאות מדיניות?
כאשר גרסה חדשה של מדיניות הפרטיות מתפרסמת, יש להעריך האם השינוי משפיע על הסכמה שניתנה בעבר. אם נוספה קטגוריה חדשה, יש לקבל הסכמה מחדש. אם הניסוח משתנה מבלי לשנות את המהות, הודעה מספיקה. אנו הופכים את הבדיקה לאוטומטית באמצעות enum class ConsentPurpose(val id: String) { NECESSARY("necessary"), ANALYTICS("analytics"), MARKETING("marketing"), PERSONALIZATION("personalization"), THIRD_PARTY_SHARING("third_party_sharing"), LOCATION_TRACKING("location_tracking"), PUSH_MARKETING("push_marketing") } data class ConsentRecord( val purpose: ConsentPurpose, val granted: Boolean, val grantedAt: Long?, val revokedAt: Long?, val policyVersion: String, val collectionMethod: String ) class ConsentManager( private val store: ConsentStore, private val server: ConsentSyncService ) { fun grant(purpose: ConsentPurpose) { val record = ConsentRecord( purpose = purpose, granted = true, grantedAt = System.currentTimeMillis(), revokedAt = null, policyVersion = PolicyVersionProvider.current(), collectionMethod = "explicit_ui" ) store.save(record) server.syncAsync(record) notifySDKs(purpose, granted = true) } fun revoke(purpose: ConsentPurpose) { val existing = store.get(purpose)?.copy( granted = false, revokedAt = System.currentTimeMillis() ) ?: return store.save(existing) server.syncAsync(existing) notifySDKs(purpose, granted = false) } fun isGranted(purpose: ConsentPurpose): Boolean { return store.get(purpose)?.granted == true } } ברשומות המאוחסנות. בעת הפעלת האפליקציה, המערכת משווה גרסאות ומציגה מסך מעודכן רק עבור קטגוריות ששונו.
אחסון וביקורת
לא ניתן למחוק רשומות הסכמה בעת מחיקת חשבון — הן נדרשות להוכחת ציות. הן מאוחסנות בנפרד מנתוני המשתמש, עם תקופת שמירה של 5–7 שנים למסמכים בעלי משמעות משפטית. 98% מהלקוחות שלנו עוברים ביקורת בניסיון הראשון. המערכת שלנו משתלבת עם פתרונות SIEM המתריעים על שינויים לא מורשים ברשומות.
טעויות יישום טיפוסיות:
- אחסון הסכמה רק מקומית — אובדן נתונים בעת התקנה מחדש.
- חוסר בגרסאות מדיניות — אי אפשר להוכיח לאיזו גרסה ניתנה ההסכמה.
- התעלמות מנסיגה ב-SDKs — נתונים ממשיכים להיאסף, קנס בלתי נמנע.
אנו מטפלים גם בתרחישי הגירה: אם יש לך מסד נתונים קיים של הסכמות, אנו ממירים אותו לפורמט החדש עם גרסת מדיניות מינימלית שהוקצתה.
| אזור | רגולציה | דרישות הסכמה |
|---|---|---|
| אירופה | GDPR | גרעינית, מפורשת, ניתנת לביטול |
| קליפורניה | CCPA | אפשרות ביטול למכירת נתונים |
| ברזיל | LGPD | דומה ל-GDPR, עם קטגוריות נוספות |
מה כלול בעבודה
- פיתוח מסך ממשק הגדרות פרטיות — אדפטיבי, נגיש, ללא דפוסים אפלים.
- שילוב SDKs אנליטיים ופרסומיים עם תגובה אוטומטית לשינויי הסכמה.
- סנכרון רשומות בצד השרת לביקורת וציות.
- תיעוד ציות לעורכי דין — תיאור ארכיטקטורה, אחסון, מדיניות.
- הדרכת צוות — כיצד לנהל את המערכת ולהגיב לשינויים רגולטוריים.
- תמיכה לאחר ההטמעה (שבועיים) — תיקון הערות מבקר.
לוחות זמנים ועלות
לוחות זמנים: בין 2 ל-5 ימים בהתאם למורכבות. העלות מחושבת באופן אישי. 40+ הטמעות מוצלחות, ציות מובטח.
צור קשר לביקורת של האפליקציה שלך — קבל תוכנית הטמעה מפורטת תוך יומיים. או קבע פגישת ייעוץ — נעריך את הפרויקט שלך ונספר לך כיצד להימנע מקנסות.







