【问题标题】:Firebase .onCall Cloud Function not being called from within Swift Xcode ProjectFirebase .onCall Cloud 函数未从 Swift Xcode 项目中调用
【发布时间】:2019-06-04 12:39:54
【问题描述】:

我已将一个 iOS 应用程序添加到一个 firebase 项目,由于某种原因,当我从 iOS 调用它时,该函数没有被调用。与 Firebase 的连接似乎很好,因为我可以在 swift 项目中对 Firebase 数据库运行查询,但是当我运行 swift 云功能时,它似乎绕过了代码。

以下是我创建的测试云功能,只是为了调查:

  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 控制台。没有抛出任何错误,是否有人对可能导致这种奇怪事件发生的原因有任何想法?谢谢。

【问题讨论】:

  • 你找到解决办法了吗,我卡住了
  • @yusuftezel 不,我向 firebase 提交了错误报告,但不知何故它自行解决了。 Firebase 似乎出现了某种故障或崩溃,因为它只是在 10 小时后自动恢复,而没有更改任何一行代码。

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


【解决方案1】:

我昨天也遇到了同样的问题。我看到的症状和你的完全一样。我已经设法通过降级 Firebase pod 版本来使其工作,因为我之前使用过云功能并且它们可以工作。

我的 Firebase/Core、Firebase/Functions、Firebase/Messaging 的 pod 版本都是 5.15.0,但它们不起作用。

我将它们更改为 5.7.0,现在它们按预期工作。

中间的版本我没试过。

更新: 这个问题似乎在今天发布的 5.18.0 版本中得到了解决。

【讨论】:

  • 这是一个非常奇怪的事件,问题在一天之内就为我解决了,而没有更改任何一行代码。在我使用 firebase 的整个过程中,我一直注意到这些类型的事件更频繁地发生,而没有任何通知。希望我们提交的错误报告越多,他们就能越早发现导致这种情况发生的原因。
  • 是的,在阅读了您的评论后,我等了一夜,但问题并没有消失,因此我选择了我写的答案。谷歌在解决问题方面做得很好,所以我们希望他们能做到。
【解决方案2】:

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

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

【讨论】:

  • 感谢您的回答我尝试按照您的建议将该功能移动到第一个调用的ViewControllerviewDidLoad(),但仍然没有发生任何事情。我怀疑这个问题可能与 Firebase 有关。
【解决方案3】:

遇到同样的问题,并测试所有提到的场景,但在长时间超时后,错误总是一样的。

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

我目前没有时间进一步测试,只是注意到这个问题也在模拟器上重现。

【讨论】:

    猜你喜欢
    • 2019-02-22
    • 2021-08-15
    • 2018-12-16
    • 2020-12-02
    • 2021-04-10
    • 2018-11-02
    • 2022-09-26
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多