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

6ioyuze2  于 2022-12-30  发布在  iOS
关注(0)|答案(2)|浏览(237)

我正在尝试让Firebase - Firestore数据库模拟器在我的物理IOS设备上通过Expo应用程序工作,而我正在开发。
我可以让Localhost在浏览器中工作,并10.0.2.2通过Android模拟器让www.example.com:(8080)工作。但是,我无法让我的物理IOS设备工作。我得到firebase无法在10秒内连接错误。
尝试了localhost,尝试了世博会应用程序192. 168. xiderx中提供的ip尝试了我当前wifi位置中给出的ip地址,什么都没有。
我使用这段代码来连接Android Emulator / Web浏览器

firebase.firestore().settings({ 
    experimentalForceLongPolling: true,
    host: '10.0.2.2:8084',
    ssl: false})
rqqzpn5f

rqqzpn5f1#

在firebase.json中,为您使用的每个模拟器设置一个主机参数“0.0.0.0“。
我用来连接到模拟器w/ a真实的的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"
  }
}

然后在客户端上添加

realtimeDatabase.useEmulator(yourLocalIp, 9000);
firestore.useEmulator(yourLocalIp, 8080);
firebase.functions().useEmulator(yourLocalIp, 5001);     
auth.useEmulator('http://yourLocalIp:9099')
7ivaypg9

7ivaypg92#

最后的答案。更新你的软件包。(我对自己很生气)
我花了无数个小时试图找出一个问题,还没有一个解决方案,因为它出现在未来的版本。
所以我有Firebase javascript sdk 7.9,在升级到sdk 8.29之后,它在物理IOS设备上运行得很好,我没有使用useEmulator,我使用了这段代码。

if(firebase.apps.length === 0){
       
    firebase.initializeApp(config)      
        
    firebase.firestore().settings({ 
         experimentalForceLongPolling: true,
         host:'192.168.X.XX:8089'         
         ,ssl:false
         })        

    } else {      
        firebase.app()
    }

导出默认firebase
settings方法对我来说很好用,不确定我是否会发现其他不使用useEmulator的问题,或者这是针对不同类型的平台。我使用expo/React Native。
感谢您的回复。

相关问题