Я знаю, что этот вопрос задавался несколько раз, но ни один из них не помог мне решить мою проблему.Я следовал всему, что упомянуто в документации, чтобы настроить 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;
}
}
То, что я пробовал до сих пор:
- Создал идентификатор приложения с включенными push-уведомлениями, сгенерировал ключ и профиль в Apple Developeraccount
- Загрузил ключ в консоль Firebase под iOS-приложением
- настроил пользовательские схемы URL в XCode для reCaptcha, включил push-уведомление и фоновое удаленное уведомление под возможностями XCode
- Добавилуказанный выше код в AppDelegate.swift
- Очистил и запустил проект
версия информации:
- firebase-core: 0.3.0 ^ 2
- firebase-auth: 0.8.1 + 4
Возможно, я пропустил некоторую информацию, но я старался изо всех сил включить все необходимые материалы.
Любое решение /Идея решить эту проблему будет высоко ценится.
Спасибо.