Проблемы в интеграции аутентификации телефона Flutter Firebase для iOS - PullRequest
0 голосов
/ 16 июня 2019

Я знаю, что этот вопрос задавался несколько раз, но ни один из них не помог мне решить мою проблему.Я следовал всему, что упомянуто в документации, чтобы настроить Firebase Auth для iOS.Кроме того, я использую Flutter для разработки приложений.

Это код дротика для проверки номера телефона:

await _auth.verifyPhoneNumber(
        phoneNumber: _phoneNumberController.text,
        timeout: const Duration(minutes: 2),
        verificationCompleted: (user) {
          print('verification completed');
        },
        verificationFailed: (AuthException authException) {
          _scaffoldKey.currentState.showSnackBar(SnackBar(
            content: Text(
                'Phone number verification failed. Code: ${authException.code}. Message: ${authException.message}'),
          ));
        },
        codeSent: (String verificationId, [int forceResendingToken]) {
          _verificationId = verificationId;
          _scaffoldKey.currentState.showSnackBar(SnackBar(
            content: const Text(
                'Please check your phone for the verification code.'),
          ));
        },
        codeAutoRetrievalTimeout: (String verificationId) {
          _verificationId = verificationId;
        });

Когда я предоставляю номер телефона и проверяю его, он дает мнесообщение об ошибке:

Если переворот в делегате приложения отключен, удаленные уведомления, полученные UIApplicationDelegate, должны быть перенаправлены в canHandleNotification: метод FIRAuth.

Поскольку я использую FlutterЯ просто вставил приведенный ниже код в AppDelegate.swift, который я не уверен, правильно это или нет.Я вставлю весь класс ниже:

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?
  ) -> Bool {
    FirebaseApp.configure()
    GeneratedPluginRegistrant.register(with: self)

    //return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    return true
  }

    override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
        // Pass device token to auth
        Auth.auth().setAPNSToken(deviceToken, type: AuthAPNSTokenType.prod)

        // Further handling of the device token if needed by the app
        // ...
    }

    override func application(_ application: UIApplication,
                              didReceiveRemoteNotification notification: [AnyHashable : Any],
                              fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
        if Auth.auth().canHandleNotification(notification) {
            completionHandler(UIBackgroundFetchResult.noData)
            return
        }
        // This notification is not auth related, developer should handle it.
    }

    // For iOS 9+
    override func application(_ application: UIApplication, open url: URL,
                              options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
        if Auth.auth().canHandle(url) {
            return true
        }
        // URL not auth related, developer should handle it.
        return true;
    }
}

То, что я пробовал до сих пор:

  1. Создал идентификатор приложения с включенными push-уведомлениями, сгенерировал ключ и профиль в Apple Developeraccount
  2. Загрузил ключ в консоль Firebase под iOS-приложением
  3. настроил пользовательские схемы URL в XCode для reCaptcha, включил push-уведомление и фоновое удаленное уведомление под возможностями XCode
  4. Добавилуказанный выше код в AppDelegate.swift
  5. Очистил и запустил проект

версия информации:

  • firebase-core: 0.3.0 ^ 2
  • firebase-auth: 0.8.1 + 4

Возможно, я пропустил некоторую информацию, но я старался изо всех сил включить все необходимые материалы.

Любое решение /Идея решить эту проблему будет высоко ценится.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...