Подтвердить что ты не робот

Отказ App Store из-за авторизации телефона Firebase

В нашем приложении используется firebase phone auth. Обзор App Store отклонил приложение из-за необходимости нажатия:

Руководство 4.5.4 - Дизайн - Сайты и службы Apple

Мы заметили, что для работы приложения требуется push-уведомления.

В частности, мы заметили, что если параметр Push Notifications не был включен на нашем устройстве, мы обнаружили сообщение об ошибке после ввода нашего номера телефона в приложении.

Следующие шаги

Push-уведомления должны быть необязательными и должны получить согласие пользователя на использование в приложении.

И они также приложили скриншот, изображающий ошибку Firebase. "Удаленные уведомления и фоновая выборка должны быть настроены для приложения [...]"

Документация Firebase гласит, что для аутентификации телефона абсолютно необходимы уведомления APN:
https://firebase.google.com/docs/auth/ios/phone-auth

Чтобы использовать идентификацию номера телефона, ваше приложение должно иметь возможность получать уведомления APN от Firebase. Когда вы впервые подписываете пользователя с их номером телефона на устройстве, Firebase Authentication отправляет на устройство тихое push-уведомление о подтверждении того, что запрос на ввод номера телефона поступает из вашего приложения. (По этой причине регистрация номера телефона не может быть использована на симуляторе.)

Однако в рекомендациях по проверке App Store указано, что Push Notifications не требуется для того, чтобы приложение функционировало: https://developer.apple.com/app-store/review/guidelines/

4.5.4 Push-уведомления не должны требоваться, чтобы приложение функционировало и не должно использоваться для рекламы, продвижения по службе или в целях прямого маркетинга или для отправки конфиденциальной личной или конфиденциальной информации.

Пользователям необходимо войти в систему, прежде чем они смогут использовать приложение (приложение предназначено для отправки цифровых приглашений GIF для ваших гостей и обмена фотографиями), поэтому Push-уведомления в основном необходимы для работы приложения, если метод входа это автоответчик Firebase.

Мы много протестировали приложение, и аутентификация работает без проблем при включении push-уведомлений (на реальных устройствах, как в дистрибутиве Ad Hoc, с производственной средой, так и в разработке, с изолированной средой песочницы).

Подумайте об этом, как команда App Review даже отключила Push-уведомления? Настройка центра уведомлений не останавливает фактические нажатия, она просто не отображает их. Настройка отключена Мы протестировали эту настройку, и firebase phone auth работает нормально, нажатие все равно продолжается, как ожидалось.

Я очень удивлен этой проблемой, поскольку Firebase - огромный поставщик услуг. Кто-нибудь еще столкнулся с этой проблемой? Есть ли планы удалить требование APN для авторизации телефона? Может быть, есть и другой способ использовать firebase phone auth без нажатий?

4b9b3361

Ответ 1

UPD: Firebase 4.2.0 развернулась, что устраняет проблему. Вам нужно будет добавить свой обратный клиент-идентификатор, который выглядит примерно так: com.googleusercontent.apps.123456-abcdefg99 для схем URL в вашем Info.plist, и вы настроены.

Чтобы найти это значения, откройте файл конфигурации GoogleService-Info.plist и найдите REVERSED_CLIENT_ID.


Поддержка Firebase подтвердила эту ошибку и ответила на эту проблему:

мне
Благодарим вас за подробную информацию Leet. Это действительно странная ситуация, и наши инженеры Phone Auth смотрят. Я вернусь к вам, как только у меня будет ответ.

Best,
Джефф


мне
Привет, Leet,

Наши инженеры работают над долгосрочным решением для этого, но в то же время хотели бы встретиться с вами, чтобы выяснить, можем ли мы найти способ обхода проблемы.

Похоже, что в Firebase phone auth/Firebase UI действительно есть ошибка.

Ответ 2

Firebaser здесь. Мы выпустили обновленный Firebase Auth SDK, 4.2.0, как упоминал Leetmory, который, надеюсь, решит эти проблемы в будущем.

Проблема была вызвана тем, что Firebase Auth SDK с использованием APN для проверки запроса - это минимизация риска злоупотребления спамом в SMS или аналогичного. В валидации используется уведомление без уведомления APN, поэтому не требуется явное согласие пользователя для iOS 8 и выше. Однако это все еще не удалось, если APN были полностью отключены, как в этом случае.

В выпуске 4.2.0 появилась возможность использовать приглашение reCAPTCHA внутри SFSafariViewController (или веб-просмотр для более раннего iOS), чтобы предотвратить злоупотребление, если APN недоступны. Мы не ожидаем, что это произойдет очень сильно, но это объясняет необычное состояние, встречающееся здесь. Он также позволяет поддерживать тестирование Firebase Phone Auth на симуляторе!

Вы заметите, что в verifyPhoneNumber есть новый параметр uiDelegate. В большинстве случаев вам не обязательно использовать это, но это часть проверки возврата.

Что вам нужно сделать, если вы еще этого не сделали, добавьте REVERSED_CLIENT_ID (из GoogleService-Info.plist) в качестве схемы пользовательских URL-адресов. Это позволит просматривать reCAPTCHA для проверки правильности вашего приложения.

В текущей версии есть информация о том, что нужно знать:

  • В обратном вызове от verifyPhoneNumber вам нужно будет перейти в основной поток, используя DispatchQueue.main.async {} - это будет исправлено в следующей версии Firebase Auth!

Кроме того, все должно работать как обычно! Мы определенно рекомендуем поддерживать тихий толчок, когда это возможно, чтобы обеспечить лучший пользовательский интерфейс.

Для полного прохода, см. полное руководство по телефону руководство разработчика.

Ответ 3

Я связался с поддержкой Firebase, и вот выдержка:

С точки зрения обеспокоенности пользователей отключением push-уведомлений. Отключение push-уведомления для приложения пользователем обычно не мешает пользователям подписываться, используя свой номер телефона с Firebase Auth. Наше требование состоит в том, что приложение должно настроить и включить push-уведомление, а не пользователь. Независимо от того, будет ли пользователь принимать или отклонять ваше приложение push-уведомление, телефонное письмо будет продолжать работать, поскольку мы используем тихие нажатия, которые не требуют каких-либо действий от пользователя.

Я исследовал далее и обнаружил, что молчание push-уведомлений действительно поступает на устройство, даже когда пользователь явно отключает push-уведомления. Чтобы отключить тихие push-уведомления, вам нужно будет перейти в Настройки → Приложение → Обновить фон, чтобы отключить его. См. Возможны ли бесшумные удаленные уведомления, если пользователь отключил нажатие на приложение?

Итак, вы можете сообщить команде App Store Review, что ваш логин будет работать только тогда, когда включена опция Refresh Refresh. Я не верю, что это нарушает их условия.

ИЗМЕНИТЬ

После некоторого тестирования выяснится, что аутентификация телефона может работать, когда Background Refresh отключен. Однако это работает для меня, потому что Firebase уже имеет доступ к токену устройства APNS. Я не нашел способа отключить токен устройства от Firebase - они не предоставляют API для него. Это, к сожалению, делает невозможным протестировать сценарий, когда новый пользователь отключает обновление фона и удаленные уведомления, прежде чем выполнять авторизацию телефона, которая, по моему мнению, может быть причиной ошибки.

РЕДАКТИРОВАТЬ 2

Я могу подтвердить, что на новом устройстве со свежей установкой нашего приложения, если вы отключите Background Refresh, Firebase Phone Auth не будет работать. Когда вы включите его, он снова будет работать.

Причина в том, что SDK, вероятно, вызывает [[UIApplication sharedApplication] registerForRemoteNotifications], который игнорируется системой, если пользователь вручную отключает настройки фона и уведомлений.

К сожалению, нет обходного пути, пока Firebase не выпустит новый SDK, который не требует APN.