es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No puedo implementar las notificaciones Firebase en Flutter en iOS.

Hice exactamente las mismas cosas en la documentación de Google pero no funciona. Me encontré con “No such module ‘Flutter’“. Aquí está el ejemplo de código:

import UIKit
import Flutter
import Firebase

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

Y también encontré algo. Puedes verlo a continuación. Es algo que funciona pero no del todo. Mientras se abría, me pidió permiso para las notificaciones. Pero me dio una pantalla negra. No puedo ver nada. Aquí están las partes del código:

import UIKit
import FirebaseCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
      _ application: UIApplication,
      didFinishLaunchingWithOptions launchOptions:
      [UIApplication.LaunchOptionsKey: Any]?
     ) -> Bool {
      // Firebase
      FirebaseApp.configure()
      // Notificación push
      UNUserNotificationCenter.current().delegate = self
       let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
       UNUserNotificationCenter.current().requestAuthorization(
        options: authOptions,
        completionHandler: { _, _ in }
       )
       application.registerForRemoteNotifications()
      return true
     }
    }
extension AppDelegate: UNUserNotificationCenterDelegate {}

Según una idea:

Este es mi archivo AppDelegate.swift. Estoy tratando de aplicar tu respuesta.

import UserNotifications
import Firebase
import FirebaseMessaging

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(
     _ application: UIApplication,
     didFinishLaunchingWithOptions launchOptions:
     [UIApplication.LaunchOptionsKey: Any]?
     ) -> Bool {
     // Firebase
     FirebaseApp.configure()
     // Notificación push
     UNUserNotificationCenter.current().delegate = self
     registerForPushNotifications() // Función creada abajo
     return true
     }
      func registerForPushNotifications() {
        UNUserNotificationCenter.current()
          .requestAuthorization(
            options: [.alert, .sound, .badge]) { [weak self] granted, _ in
            print("Permission granted: \(granted)")
            guard granted else { return }
            self?.getNotificationSettings()
          }
      }
      // MARK:- Obtener notificación
      func getNotificationSettings() {
        UNUserNotificationCenter.current().getNotificationSettings { settings in
          print("Configuración de notificación: \(settings)")
          guard settings.authorizationStatus == .authorized else { return }
          DispatchQueue.main.async {
            UIApplication.shared.registerForRemoteNotifications()
          }
         }
        }
    }
extension AppDelegate: UNUserNotificationCenterDelegate {
    func userNotificationCenter(
      _ center: UNUserNotificationCenter,
      willPresent notification: UNNotification,
      withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void
    )
    {
        completionHandler([.alert, .badge, .sound])
    }
    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
      let userInfo = response.notification.request.content.userInfo
      print(userInfo)
      completionHandler()
    }
}

Este es el resultado que mencioné antes:

The black screen seems

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema aquí está relacionado con el módulo de Flutter que no es encontrado por el proyecto de Xcode. Una solución posible es limpiar el proyecto y hacer una reconstrucción para asegurarse de que todas las dependencias estén enlazadas correctamente. Otra solución es verificar que la ruta al marco de trabajo de Flutter esté correctamente configurada en los ajustes del proyecto.

    Con respecto al problema de la pantalla negra, podría estar relacionado con una configuración incorrecta de la interfaz de usuario en el código de Flutter. Se sugiere revisar si se están generando errores y probar la aplicación en un dispositivo físico en lugar del simulador. Además, es importante asegurarse de que el código de Flutter esté integrado correctamente con el código nativo y que cualquier configuración necesaria se esté haciendo correctamente.

Comments are closed.