在Swift Xcode项目中未调用Firebase .onCall Cloud函数

时间:2019-01-09 17:11:55

标签: ios swift firebase firebase-realtime-database google-cloud-functions

我已将iOS应用添加到firebase项目中,由于某些原因,当我从iOS调用该函数时未调用该函数。与Firebase的连接似乎很好,因为我可以在swift项目中对Firebase数据库运行查询,但是当我运行swift cloud函数时,它似乎会绕过代码。

下面是我创建的用于测试此功能的测试云功能:

  exports.testFunction = functions.https.onCall((data,context) => {
      console.log("hi the test function worked");
      return "hi the test function worked";
  })

这是我用来调用该函数的快速代码,

lazy var functions = Functions.functions()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.
    FirebaseApp.configure()

    functions.httpsCallable("testFunction").call("Hi", completion: {(result,error) in
        if let error = error{
            print("An error occurred while calling the test function: \(error)" )
        }
        print("Results from test cloud function: \(result)")
    })

    return true
}

我尝试过更新可可豆荚和创建新项目,但似乎没有任何效果。没有任何东西可以返回我的iOS项目或登录到Firebase控制台中。没有引发任何错误,有人对导致这种奇怪事件发生的原因有任何想法吗?谢谢。

3 个答案:

答案 0 :(得分:1)

昨天我遇到了同样的问题。我看到的症状与您的症状完全相同。我已经通过降级Firebase Pod版本使其工作,因为我以前使用过云功能并且它们可以工作。

我针对Firebase / Core,Firebase / Functions,Firebase / Messaging的Pod版本均为5.15.0,并且无法正常工作。

我将它们更改为5.7.0,现在它们按预期运行。

我没有尝试过两者之间的版本。

更新: 该问题似乎已经在今天发布的5.18.0版本中得到解决。

答案 1 :(得分:0)

由于使用的是异步方法,因此在网络请求完成之前要退出方法块。这可能导致与服务器的连接先关闭,然后再收到请求。

我个人不会在appDelegate中发出任何网络请求,而是在您的第一个viewController viewDidLoad中进行测试。

答案 2 :(得分:0)

遇到相同的问题,并测试所有提到的方案,但是经过长时间的超时后,错误始终是相同的。

将网络连接从“ USB-MAC-PHONE共享”切换到Phone 4G。通话成功。

此刻我没有时间进行进一步的测试,只是注意到该问题还在模拟器上重复出现。