我已将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控制台中。没有引发任何错误,有人对导致这种奇怪事件发生的原因有任何想法吗?谢谢。
答案 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。通话成功。
此刻我没有时间进行进一步的测试,只是注意到该问题还在模拟器上重复出现。