我正在开发一个安卓和iOS的应用程序,版本为Web中的Firebase cloud function 6.5.0和iOS中的2.5.1版本,android端运行良好,但在swift中我收到了Code=-1001"请求超时。 每次调用函数时。
我已经尝试了调用函数的所有方法,例如使用"functions.httpsCallable","alamofire"或"URLRequest"调用,但每次我收到Code=-1001"请求超时"错误时,函数日志中都没有打印任何内容。我尝试过邮递员,它正在工作。我认为我的代码、配置或 sdk 版本有问题。
请帮我解决这个问题。
这是我的简单测试 api 函数:
exports.testApi = functions.region('europe-west1').https.onCall((data, context) => {
const message = data.message;
return {
message : message
}
});
这些是我的快速代码:
let data = ["message": "test"]
G.functions.httpsCallable("testApi").call(data) { (result, error) in
if let error = error as NSError? {
if error.domain == FunctionsErrorDomain {
let code = FunctionsErrorCode(rawValue: error.code)
let message = error.localizedDescription
let details = error.userInfo[FunctionsErrorDetailsKey]
print("(code!) (message) (String(describing: details))")
}
}
if result?.data != nil {
print("result (result!.data)")
}
}
这是我的G类:
class G{
static var functions = Functions.functions(region: "europe-west1")
.
.
.
这是我的日志
2019-07-24 23:42:07.781273+0430 AppName[3188:858764] Task <234AF689-0252-4BEC-87E1-CF376AD50E17>.<1> finished with error - code: -1001
2019-07-24 23:42:07.785188+0430 AppName[3188:858780] Task <234AF689-0252-4BEC-87E1-CF376AD50E17>.<1> load failed with error Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x283d489f0 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <234AF689-0252-4BEC-87E1-CF376AD50E17>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <234AF689-0252-4BEC-87E1-CF376AD50E17>.<1>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://europe-west1-AppName.cloudfunctions.net/testApi, NSErrorFailingURLKey=https://europe-west1-AppName.cloudfunctions.net/testApi, _kCFStreamErrorDomainKey=4} [-1001]
2019-07-24 23:42:07.794172+0430 AppName[3188:858764] Task <234AF689-0252-4BEC-87E1-CF376AD50E17>.<1> HTTP load failed (error code: -999 [1:89])
FIRFunctionsErrorCode DEADLINE EXCEEDED nil
经过很长时间的尝试,我发现了这个问题。我使用 VPN 连接到 firebase,但不知何故,即使在 Web 控制台中,L2TP VPN 也无法连接到 firebase,所以我将我的 VPN 更改为 IKEv2,问题得到了解决。