物理 IOS/Android 设备上的 Firebase Firestore 模拟器

eye*_*luv 9 emulation ios firebase expo google-cloud-firestore

我正在尝试在开发时通过 Expo 应用程序让 Firebase - Firestore 数据库模拟器在我的物理 IOS 设备上运行。

我可以让 Localhost 在浏览器中工作,并让 10.0.2.2:(8080) 通过 Android 模拟器工作。但是,我无法让我的物理 IOS 设备正常工作。我收到 firebase 无法在 10 秒内连接的错误。

尝试了 localhost,尝试了 expo 应用程序 192.168.xx 中提供的 IP,尝试了我当前 wifi 位置中给出的 IP 地址,什么也没有。

我正在使用这段代码来连接 Android 模拟器/Web 浏览器

firebase.firestore().settings({ 
    experimentalForceLongPolling: true,
    host: '10.0.2.2:8084',
    ssl: false})
Run Code Online (Sandbox Code Playgroud)

Gwa*_*r17 26

在 firebase.json 中,为您使用的每个模拟器设置主机参数“0.0.0.0”。

我用来连接到带有真实 iOS 设备的模拟器的代码如下

firebase.json

{
  "emulators": {
    "auth": {
      "port": 9099,
      "host": "0.0.0.0"
    },
    "functions": {
      "port": 5001,
      "host": "0.0.0.0"
    },
    "firestore": {
      "port": 8080,
      "host": "0.0.0.0"
    },
    "database": {
      "port": 9000,
      "host": "0.0.0.0"
    },
    "ui": {
      "enabled": true
    }
  },
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "database": {
    "rules": "database.rules.json"
  }
}
Run Code Online (Sandbox Code Playgroud)

然后在客户端添加

realtimeDatabase.useEmulator(yourLocalIp, 9000);
firestore.useEmulator(yourLocalIp, 8080);
firebase.functions().useEmulator(yourLocalIp, 5001);     
auth.useEmulator('http://yourLocalIp:9099')
Run Code Online (Sandbox Code Playgroud)

确保主机上的网络配置文件设置为“专用”或“受信任”,并且没有任何防病毒/防火墙阻止外部连接。