Estoy usando ionic con la base de datos en tiempo real de Firebase y el condensador 3. Tengo la intención de habilitar las capacidades fuera de línea. Creé la aplicación usando la compilación de tapa iónica y luego la abrí en xcode. Luego, siguiendo la URL https://firebase.google.com/docs/database/ios/offline-capabilities , agregué el siguiente código en AppDelegate.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. FirebaseApp.configure() Database.database().isPersistenceEnabled = true return true }Ahora, para probar, ejecuté la aplicación con wifi y obtuve los datos de firebase db. Después de esto, eliminé la aplicación y apagué el wifi. Sin embargo, al iniciar la aplicación, no carga los datos.
¿Hay algo más que me esté perdiendo aquí?
mi archivo key pod tiene:
target 'App' do capacitor_pods # Add your Pods here pod 'FirebaseCore', '7.11.0' # Add this line pod 'Firebase/Database', '7.11.0' # Add this line endA continuación se muestra mi código que no funciona y se esperaba que:
getSeedConfig(){ return new Promise((resolve, reject) =>{ const doc = ref(this.db, 'config/seed'); get(doc).then((snapshot) => { if (snapshot.exists()) { resolve(snapshot.val()) } else { resolve(null) } }).catch((error) => { reject(error) }); }) }Cuando se utiliza una API moderna en JavaScript, ya no hay muchos casos en los que necesite devolver una promesa personalizada.
Por lo que puedo decir este código que ahora tienes:
getSeedConfig(){ return new Promise((resolve, reject) =>{ const doc = ref(this.db, 'config/seed'); get(doc).then((snapshot) => { if (snapshot.exists()) { resolve(snapshot.val()) } else { resolve(null) } }).catch((error) => { reject(error) }); }) }Se puede acortar a:
getSeedConfig(){ const doc = ref(this.db, 'config/seed'); return get(doc).then((snapshot) => { return snapshot.val(); // 👈 returns null when the snapshot does not exist }) }