Дата среза — 2026-09-01. Разобраны 6 клиентских сигналов страны и локальный кэш по официальным первоисточникам: Android SDK reference (2 метода TelephonyManager, 14 подтверждающих записей), 32 записи политик Google Play, 21 запись Apple, 48 записей по ePrivacy/EDPB/CJEU и 95 кандидатов enforcement- и индустриальной практики из 1 551 уникального веб-результата.
“Collect means transmitting data from your app off a user’s device… The term ‘collect’ does not apply to data that is accessed by your app and processed locally on a user’s device, as long as the data is never transmitted off device.”— support.google.com
“Data that is processed only on the device is not ‘collected’ and does not need to be disclosed in your answers.”— но декларация всего приложения обязана включать practices третьих сторон (Firebase/AdMob) — developer.apple.com, developer.apple.com
[ПРАВИЛО] Текущая SDK reference: getSimCountryIso — “Returns the ISO-3166-1 alpha-2 country code equivalent for the SIM provider's country code.”
; getNetworkCountryIso — “Returns the ISO-3166-1 alpha-2 country code equivalent of the MCC (Mobile Country Code) of the current registered operator or the cell nearby, if available.”
В декларациях этих методов на текущей reference нет @RequiresPermission — в отличие от защищённых методов той же страницы; runtime/manifest permission не документировано. Формулируем это как «current SDK reference/declaration has no annotation», а не как абсолютное доказательство «из отсутствия текста». Дата обновления на странице не отображается; проверено 2026-09-01 — developer.android.com.
[ИНТЕРПРЕТАЦИЯ] getSimCountryIso — домашняя страна SIM-провайдера, не текущая физическая; ошибается при roaming/foreign SIM, при no SIM/inactive subscription обычно пусто. getNetworkCountryIso — страна MCC текущего оператора или соседней соты: ближе к физической, но недоступна на Wi-Fi-only/airplane/emulator и может ошибаться в погранзонах/роуминге. Ограничения Android 10 касаются non-resettable идентификаторов (IMEI/MEID/IMSI/SIM serial/subscriber ID) — country-ISO к ним не относится; в списках non-SDK-ограничений упоминается лишь скрытая subscription-перегрузка — developer.android.com. В официальных behavior changes Android 12–16 изменений именно этих методов не найдено; объявленных будущих ограничений на 2026-09-01 не найдено.
[ИНТЕРПРЕТАЦИЯ] Edge-матрица no-SIM/dual-SIM/eSIM/work-profile/emulator в официальных доках неполна: default TelephonyManager привязан к default subscription/device context; для конкретной активной подписки нужен createForSubscriptionId; eSIM — это subscription; на no-SIM/emulator возможна пустая/статическая конфигурация. Work profile не делает сигнал profile-specific: telephony state обычно device/subscription-scoped — техническая интерпретация, не обещание API. Не выбирать KZ-сервер по первому произвольному SIM в dual-SIM: конфликт сигналов → fallback/ручной выбор.
[ИНТЕРПРЕТАЦИЯ] Locale.getDefault().getCountry() и .NET RegionInfo.CurrentRegion — пользовательская настройка региона, не физическая страна; permission не нужны. На Unity/IL2CPP проверьте фактический mapping RegionInfo к platform locale и возможные исключения. TimeZoneInfo.Local.Id — corroboration-сигнал: таймзона не уникальна стране, есть алиасы и платформенные различия.
[ПРАВИЛО] Определение collection и local-only исключение — см. цитату выше (support.google.com; страница не показывает last-updated; проверено 2026-09-01). Ephemeral processing — иное: это off-device передача, обработанная в памяти не дольше, чем нужно real-time запросу; её всё равно указывают в форме, хотя пользователю она может не показываться. Наш сценарий — не ephemeral: SharedPreferences/PlayerPrefs — локальная персистентность, но она вовсе не collection, пока данные никогда не уходят с устройства.
[ПРАВИЛО] Approximate location: “User or device physical location to an area greater than or equal to 3 square kilometers…”
; inferred approximate location, включая via IP address или Access Point Name, must be disclosed — support.google.com.
[ИНТЕРПРЕТАЦИЯ] Документация не классифицирует SIM-country/locale-country/timezone по источнику. Семантика решает: network MCC, переданный как proxy текущей страны — safest Approximate location; SIM home country при роуминге — не physical location, классификация спорна, но если продукт называет её местоположением — safest Approximate location; locale/timezone как настройки — не обязательно Location, но при передаче именно для вывода физического местоположения — консервативно Location. В local-only сценарии спор не меняет ответ Data safety.
[ПРАВИЛО] User Data policy запрещает linking persistent identifiers (IMEI/IMSI/SIM serial) с sensitive data вне узких случаев — country ISO не persistent identifier, и эти методы не возвращают IMSI/serial — support.google.com. Device and Network Abuse не содержит отдельного запрета на чтение country ISO — support.google.com. INTERNET-only manifest достаточен для этих вызовов.
[ПРАВИЛО] Apple определяет collection как off-device передачу, доступную разработчику/третьей стороне дольше, чем нужно для обслуживания real-time запроса; on-device-only данные не «collected» и не декларируются — developer.apple.com (страница без даты обновления; checked 2026-09-01). App privacy details обязаны включать third-party partners: нельзя выбрать «Data Not Collected» для всего приложения при AdMob/Firebase — локальный сигнал лишь не добавляет data type — developer.apple.com.
[ПРАВИЛО] Required Reason API: approved reasons обязательны с 1 мая 2024 — developer.apple.com; с 12 февраля 2025 privacy-impacting SDK обязаны нести собственный манифест (ITMS-91061) — developer.apple.com/forums. Категории (осторожно, текущий список): file timestamp, system boot time, disk space, active keyboards, user defaults; canonical-список и коды — developer.apple.com. Carrier info, NSLocale и timezone в категории не входят; NSUserDefaults входит — для defaults собственного приложения обычно reason CA92.1. Unity PlayerPrefs на iOS обычно реализован через NSUserDefaults: проверьте сгенерированный PrivacyInfo.xcprivacy своей версии Unity и манифесты интегрированных SDK.
[ПРАВИЛО] CTCarrier deprecated в iOS 16 с аннотацией “Deprecated with no replacement”
; сборки с iOS 16.4 SDK+ получают статические значения (документированные плейсхолдеры: carrierName/isoCountryCode “--”, MCC/MNC “65535”) — developer.apple.com. Замены для carrier-country нет → использовать NSLocale.region/countryCode, не CTCarrier.
[ИНТЕРПРЕТАЦИЯ] App Review: правила о consent/purpose касаются Location Services и location data; отдельного запрета на locale/timezone-based suggestion без Core Location permission не найдено. Но скрытый misleading вывод физического местоположения может вызвать privacy concerns. Разделяйте system permission и store disclosure — это разные плоскости.
[ПРАВИЛО] Консолидированный Art.5(3): storing of information, or the gaining of access to information already stored, in the terminal equipment допускается только с согласием после clear and comprehensive information; исключения — solely for carrying out the transmission и “strictly necessary in order for the provider of an information society service explicitly requested by the subscriber or user to provide the service”
— eur-lex.europa.eu. Planet49 (CJEU): активное согласие для storage/access; персональность данных не решающая — curia.europa.eu.
[ПРАВИЛО] EDPB Guidelines 2/2023 о технической сфере Art.5(3) — technology-neutral, применяются к «information», не только к персональным данным; консультационная версия adopted 2023-11-14 — edpb.europa.eu. В более поздней переписке EDPB guidelines цитируются как «adopted on 7 October 2024» — edpb.europa.eu; точную финальную версию/дату из имеющихся строк подтвердить полностью нельзя — отмечаем пробел; проверено 2026-09-01.
[ИНТЕРПРЕТАЦИЯ] Ключевой спор: консервативная трактовка — native app, читающее OS/SIM/locale/timezone, «gains access» к информации терминала даже без сетевой передачи; узкая — provider не «gains access», если результат не покидает локальный execution context. Technology-neutral scope EDPB поддерживает первую; прямого примера local-only server recommendation нет; национальная имплементация и enforcement различаются. Strictly necessary: pro — правильный региональный endpoint часть запрошенной MMO-сессии; contra (сильнее) — игра работает с обычным default/QoS/ручным выбором, автострана лишь удобство → не strictly necessary. Не полагаться на exemption без local counsel. Safest EU path: явный first-run выбор сервера/страны либо предварительное информированное opt-in на автоопределение; минимум — прозрачно описать local-only логику в privacy notice: если никакой controller данные не получает, GDPR-transparency может не срабатывать, но информирование/consent по ePrivacy и fairness остаются; добровольное короткое раскрытие — дешёвый риск-редьюсер.
[ПРАКТИКА] Из 95 кандидат-строк (1 551 уникальный веб-результат): не найден надёжно задокументированный официальный или first-person кейс, где Google потребовал Approximate location именно из-за getSimCountryIso/getNetworkCountryIso без передачи. Это не доказывает отсутствие таких кейсов; анонимные форумные анекдоты — не policy. Generic-риск реален: несоответствие Data safety фактическому SDK/network traffic ведёт к rejection/suspension, но виновники — IP/GPS/SDK, не country-ISO getter.
| Свидетельство | Тип / качество | Что показывает | Источник |
|---|---|---|---|
| Rejection «Data Safety Section: Location — Approximate Location» | First-person, публичный трекер — высокое | Триггер — location APIs, декларация не совпала с фактом | github.com |
| Rejection Data safety при local-only хранении location из Google Location API | First-person Q&A — среднее | Триггер — GPS/Location API, не country-ISO | stackoverflow.com |
| Регион-локи по SIM MCC/IP в играх | Анонимный блог — низкое | Практика cross-referencing сигналов, не policy | world.taobao.com |
[ПРАКТИКА] Индустрия: Unity Relay по умолчанию использует QoS-замеры; если region omitted — origin network address как heuristic; игрок может выбрать регион — docs.unity.com. Photon-style системы выбирают best region по ping/QoS — doc.photonengine.com. INTLGame queryMyRegion определяет регион/страну по IP — docs.playernetwork.intlgame.com. Практический ranking: latency → client QoS/ping; regulatory/commercial страна → server-side IP/account/store country; zero-server локальная подсказка → locale + timezone; SIM MCC — supplementary, хуже на планшетах/роуминге/dual-SIM и практически недоступен на современном iOS.
[ИНТЕРПРЕТАЦИЯ] За период 2025-09-01 — 2026-09-01 подтверждённых изменений именно для данного сценария не найдено. Изменений Android 12–16 и анонсированных будущих ограничений этих country-методов не найдено (на 2026-09-01). Apple CTCarrier/iOS 16.4 и Required Reason enforcement (2024-05-01) старше 12 месяцев. В данных есть Preview-страница политики Play о sensitive permissions/APIs — прямого текста о local-only getter в ней нет, поэтому не связываем — support.google.com.
Метод: compliance-research по первоисточникам на дату среза 2026-09-01. Основа: официальная Android TelephonyManager reference (2 записи + 14 подтверждающих), 32 записи Google Play Help/Policy, 21 запись Apple (App Store Connect, forums, upcoming requirements), 48 записей ePrivacy/EDPB/CJEU, 95 кандидат-строк enforcement/практики из 1 551 уникального веб-результата. Оценки колонок «ePrivacy» и «итоговый риск» в матрице — интерпретация авторов на базе цитируемых правил, не официальная классификация. Страницы без видимой даты обновления помечены как «проверено 2026-09-01». За кадром: языковые дубликаты страниц политик и низкокачественные форумные анекдоты.