离子电容器和 Firebase Firestore

问题描述 投票:0回答:1

尝试让 Firebase Firestore 在 iOS 设备上的离子电容器中工作五个小时,但我现在已经失去了神经。希望你能在这里帮助我。

设置:

Ionic:
   ionic (Ionic CLI)             : 4.12.0 (/usr/local/lib/node_modules/ionic)
   Ionic Framework               : @ionic/angular 7.0.0
   @angular-devkit/build-angular : 16.0.0
   @angular-devkit/schematics    : 16.0.0
   @angular/cli                  : 16.0.0
   @ionic/angular-toolkit        : 6.1.0

Capacitor:

   capacitor (Capacitor CLI) : 4.6.3
   @capacitor/core           : 4.6.3

我已经建立了一个 Firebase 项目,在其中创建了 Firestore 数据库和两个应用程序,一个用于 Web,一个用于 iOS。一切都非常适合网络,并且可以检索集合。然而,在 iOS 上,我在访问 Firebase 时遇到了相当大的问题。

我从项目中下载了GoogleService-Info.plist并将其导入到XCode中的父文件夹中。我还自定义了AppDelegate:

import UIKit
import Capacitor
import FirebaseCore

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
      FirebaseApp.configure()

      return true
    }
...

在我的 app.module.ts 中,我认为“按书”导入 Firebase。

// Firebase
import { provideFirestore, getFirestore } from '@angular/fire/firestore';
import { provideStorage, getStorage } from '@angular/fire/storage';
import { initializeApp, provideFirebaseApp } from '@angular/fire/app';
import { provideAuth, getAuth } from '@angular/fire/auth';


@NgModule({
  imports: [
    BrowserModule,
    AppRoutingModule,
    provideFirebaseApp(() => initializeApp(environment.firebase)),
        provideFirestore(() => getFirestore()),
        provideStorage(() => getStorage()),
        provideAuth(() => getAuth()),
...

问题似乎是在 iOS 下无法建立与 Firebase Storage 的连接。我什至将 Firestorage 的规则设置为完全公开作为测试。

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

来自 XCode 的错误日志看起来像这样:

⚡️  [log] - Starting data load
⚡️  [log] - null
10.16.0 - [FirebaseAnalytics][I-ACS023130] Configuration not found. Using default configuration

我在数据检索中安装了日志,它告诉我代码当前所在的位置。这里似乎由于缺少配置而永远无法建立连接!

  load(): Observable<any> {
    console.log('Starting data load');
    return from(this.testFirebaseConnection()).pipe(
      switchMap(() => {
        if (this.data) {
          console.log('Returning cached data');
          return from(Promise.resolve(this.data));
        } else {
          console.log('Fetching new data from Firestore');
          const scheduleCollection = collection(this.firestore, 'schedule');
          const announcementsCollection = collection(this.firestore, 'ankuendigungen');

          return forkJoin({
            schedule: from(getDocs(scheduleCollection)),
            announcements: from(getDocs(announcementsCollection))
          }).pipe(
            map(({ schedule, announcements }) => {
              console.log('Data fetched successfully');
              const scheduleData = [];
              schedule.forEach((doc) => {
                console.log('Processing schedule document:', doc.id);
                scheduleData.push({ id: doc.id, ...doc.data() });
              });

              const announcementsData = [];
              announcements.forEach((doc) => {
                console.log('Processing announcement document:', doc.id);
                announcementsData.push({ id: doc.id, ...doc.data() });
              });

              this.data = { 
                schedule: scheduleData,
                speakers: announcementsData
              };
              console.log('Data processing complete');
              return this.processData(this.data);
            })
          );
        }
      }),
      catchError(error => {
        console.error('Error in load method:', error);
        if (error instanceof Error) {
          console.error('Error message:', error.message);
          console.error('Error stack:', error.stack);
        }
        return throwError(error);
      })
    );
  }

老实说,我有点绝望,因为我无法进一步缩小错误范围,并相信一切都应该是正确的。请问这里有人有什么想法吗?

javascript firebase ionic-framework google-cloud-firestore capacitor
1个回答
0
投票

我建议使用 Capacitor Cloud Firestore 插件。

© www.soinside.com 2019 - 2024. All rights reserved.