Аналитика Telegram-канала
Подписчики
2 898
Охват за 24 ч
348
ER за 24 ч
12,01%
Публикаций
496

Динамика подписчиков

7 дней 30 дней 6 месяцев Больше
5 ноя8 ноя11 ноя
Показаны последние 7 дней Больше истории →

Охваты публикаций

22.1027.1030.1003.1106.1110.11
166
Средний охват
237
Лучший результат
Показаны 6 публикаций — последние в канале Больше статистики →

Упоминания

75
Упоминаний
34
Из них репостов
11
Каналов
Все упоминания

Последние посты

3 из 496 2 из 496
Фото
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. В прошлых частях мы подключили Яндекс ID и VK ID. Теперь разберем региональные ограничения авторизации для пользователей из России. Сейчас у разработчиков есть два требования, которые противоречат друг другу: • Первое требование от Apple. Если в приложении используется сторонняя авторизация, необходимо добавить способ входа, который должен ограничивать сбор данных, позволять пользователю не давать доступ к email и не собирать данные для рекламы. Например, вход через Apple ID. Такое требование существует уже много лет, и к нему все успели привыкнуть. • Второе требование появилось со стороны российского законодательства. Пользователей, находящихся на территории РФ, нельзя авторизовывать через Apple ID и Google ID. Разрешенные способы входа описаны в ч. 10 ст. 8 закона № 149-ФЗ. Само требование действует с 2023 года. Но если раньше отдельных штрафов за его нарушение не было, то теперь они появились. Только вот незадача: если убрать Sign in with Apple, приложение может не пройти App Review. Если оставить его для пользователей из России, можно получить штраф. Как сделать так, чтобы приложение соблюдало оба требования? На одном из проектов мы уже решали такую задачу. В итоге сделали так, чтобы набор способов авторизации зависел от страны пользователя. Пользователям из России мы не показываем кнопку входа через Apple ID. Для остальных стран он остается доступен. Так как проверка приложения проходит не из России, Apple увидит нужный ему способ. При этом мы не добавляем отдельную логику специально для ревью — приложение всегда определяет регион и показывает подходящий набор способов входа. Остается понять, как определить страну пользователя. Тут есть три варианта: • Проверка по геолокации. Самый надежный способ, но он не всегда доступен, так как пользователь может запретить использование или полностью выключить определение местоположения; • Проверка по IP-адресу на устройстве. Подходит для тех, кто не хочет заморачиваться на стороне сервера и ему не нужна геолокация для приложения; • Проверка по IP-адресу на стороне сервера. Мы советуем именно такой способ, так как он позволит сразу же выдать список сервисов авторизации для какой-либо страны. Также он может служить как fallback для проверки по геолокации. Да, все эти варианты можно обойти. Геолокацию можно подменить, а IP-адрес изменить через VPN или прокси. Поэтому стопроцентной гарантии такой способ не дает. С Apple тоже остаются риски. Региональные ограничения лучше заранее описать в Review Notes и объяснить, почему пользователям из разных стран показываются разные способы входа. Делитесь в комментариях, сталкивались ли вы уже с такой задачей и как ее решали?
ещё
151 3 1 10 ноя, 12:03
Фото
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Продолжаем серию про вход через соцсети и внешние аккаунты во Flutter. В первой части подключили Яндекс ID, теперь разберем VK ID с помощью vkid_flutter_sdk. Как и до этого, нам нужно, чтобы бизнес все зарегистрировал и настроил на своей стороне. От них мы получим 2 переменные - client_id и client_secret для настройки SDK. Далее нужно настроить Android. Сначала мы добавляем Maven-репозиторий от VK. Делается это в файле android/settings.gradle или android/settings.gradle.kts, если вы используете Kotlin. Для этого в блоки pluginManagement.repositories и dependencyResolutionManagement.repositories нужно добавить строчку: maven(url = “ссылка на Maven-репозиторий”); Сама ссылка иногда меняется и чтобы все работало правильно, нужно подставлять самую свежую. Сейчас это https://nexus-external.vkteam.ru/repository/vkid-sdk-android/ Далее необходимо добавить специальный плагин в android/build.gradle.kts: plugins { id("vkid.manifest.placeholders") version "1.1.0" } Он нужен для обработки нашего AndroidManifest и правильного подставления туда переменных, которые мы также добавляем в android/build.gradle.kts: vkidManifestPlaceholders { init( clientId = "YOUR_CLIENT_ID", clientSecret = "YOUR_CLIENT_SECRET", ) } И в завершение настройки Android, применим добавленный плагин уже в android/app/build.gradle.kts: plugins { … id("vkid.manifest.placeholders") } Если данный способ не сработал для вашего приложения, то всегда можно попробовать старый - просто подставить список manifest placeholders в android/app/build.gradle.kts. С iOS все немного попроще. Там, как и для Яндекс ID, добавляем переменные в ios/Runner/Info.plist: <key>VK_APP_CLIENT_ID</key> <string>YOUR_CLIENT_ID</string> <key>VK_APP_CLIENT_SECRET</key> <string>YOUR_CLIENT_SECRET</string> <key>LSApplicationQueriesSchemes</key> <array> <string>vkauthorize-silent</string> </array> <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>auth_callback</string> <key>CFBundleURLSchemes</key> <array> <string>vkYOUR_CLIENT_ID</string> </array> </dict> </array> Теперь нужно передать и обработать ссылку возврата. Так как сейчас SceneDelegate становится более распространенным, вот что нужно добавить для него: override func scene( _ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext> ) { let unhandled = Set(URLContexts.filter { !VkidFlutterSdkPlugin.vkid.open(url: $0.url) }) if !unhandled.isEmpty { super.scene( scene, openURLContexts: unhandled ) } } Последним в настройке будет добавление Universal Links. Это нужно сделать как в Info.plist, так и в личном кабинете VK. Теперь мы можем вызывать функции SDK из Flutter, но так как результат тут возвращается через обратные вызовы, нужно обернуть это в функцию: Future<AuthData?> signInWithVk() async { final vkid = await VKID.getInstance(); final completer = Completer<AuthData?>(); vkid.authorize( onAuth: (data) { completer.complete(data); }, onError: (error) { if (error is AuthCancelledError) { completer.complete(null); } else { completer.completeError(error); } }, ); return completer.future; } При успехе получим AuthData с токеном и данными пользователя, при отмене — null. Рассказывайте в комментариях, вы оставляете пользователю несколько способов входа или выбираете один основной?
ещё
222 4 1 6 ноя, 12:00
Фото
Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga. Начинаем серию из трех постов про вход через соцсети и внешние аккаунты во Flutter. В первой части подключим Яндекс ID с помощью yandex_login_sdk. Первым этапом будет настройка личного кабинета. Для этого передадим бизнесу applicationId и SHA256-отпечатки сертификатов подписи Android, App ID для iOS (Prefix + Bundle ID) и список необходимых данных пользователя. После чего мы получим уже готовый Client ID. Далее настроим Android. В MainActivity.kt заменим FlutterActivity на FlutterFragmentActivity. В android/app/build.gradle.kts добавим параметры для SDK: android { defaultConfig { manifestPlaceholders["YANDEX_CLIENT_ID"] = "YOUR_CLIENT_ID" manifestPlaceholders["YANDEX_OAUTH_HOST"] = "oauth.yandex.ru" } } Для iOS схема похожа. В ios/Runner/Info.plist добавим URL-схему для возврата в приложение и схемы, которые запрашивает SDK: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>YandexLoginSDK</string> <key>CFBundleURLSchemes</key> <array> <string>yxYOUR_CLIENT_ID</string> </array> </dict> </array> <key>LSApplicationQueriesSchemes</key> <array> <string>primaryyandexloginsdk</string> <string>secondaryyandexloginsdk</string> </array> Вместо yxYOUR_CLIENT_ID укажем полученный Client ID с префиксом yx без пробелов. Для проектов с SceneDelegate передадим URL обратного вызова в плагин: override func scene( _ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext> ) { var handled = false for context in URLContexts { if YandexLoginSdkPlugin.handle( openURL: context.url ) { handled = true } } if !handled { super.scene( scene, openURLContexts: URLContexts ) } } Если в SceneDelegate уже есть обработка ссылок, то ее можно объединить с этим кодом. Теперь можно вызвать вход из Flutter. Future<String?> getYandexToken() async { try { final result = await YandexLoginSdk.signIn( clientId: 'YOUR_CLIENT_ID', ); return result.token; } on YandexAuthCancelledException { return null; } on YandexAuthInProgressException { return null; } } Теперь нам достаточно всего лишь вызвать этот метод. При отмене или повторном вызове возвращаем null, остальные ошибки обрабатываем в интерфейсе. Полученный токен передаем на бэкенд для проверки и создания сессии нашего приложения. Делитесь в комментариях, пробовали ли вы подключать вход через Яндекс ID в свои приложения?
ещё
147 4 3 3 3 ноя, 12:03
Больше постов

Похожие Telegram-каналы

Юрий Петров | Flutter
Mobile Development by AppTractor
Больше похожих каналов

Продолжить анализ этого канала

  • История роста подписчиков
  • Просмотры и охваты публикаций
  • Кто упоминает канал и кого упоминает он
  • Похожие каналы и подбор для рекламы
Открыть аналитику
Демо до 14 дней