离子“等待signInWithEmailAndPassword()”无法在没有livereload的iOS模拟器/设备上工作

Obi*_*i E 6 firebase ionic-framework capacitor

在我的 Ionic 5 电容器应用程序中,我有一个调用此函数的按钮

import {
  signInWithEmailAndPassword, signOut,
  User, UserCredential,
  } from '@angular/fire/auth';
    
Run Code Online (Sandbox Code Playgroud)

//...等等等等等等

async signIn(value)
      { 
        try {alert('signing in')
          return (await signInWithEmailAndPassword(this.auth, value.email, value.password)).user
        } catch (error) {
          alert('what the heck?' + error)
        } 
      }
Run Code Online (Sandbox Code Playgroud)

这在 Web 和 Android 上运行良好(它返回对象并继续)。在iOS模拟器和设备上,它可以与livereload配合使用,但如果没有livereload,它什么也不做,甚至不返回任何内容。会弹出“登录”,但不会从那里继续。

知道为什么会这样吗?

Coo*_*ott 5

在您的app.module.ts文件中,将以下内容添加到您的导入数组中。

provideAuth(() => {
      if (Capacitor.isNativePlatform()) {
        return initializeAuth(getApp(), {
          persistence: indexedDBLocalPersistence,
        });
      } else {
        return getAuth();
      }
    }),
Run Code Online (Sandbox Code Playgroud)

并从 导入必要的函数和值@angular/fire/auth

这是与 Puneet Kushway 类似的解决方案。我发现这个解决方案更好,因为它使您的app.component.ts文件保持整洁。