我想使用Firebase Cloud Functions,因此我从简单的“ Hello world”示例作为后端部分开始,并从直接从应用程序调用函数的iOS示例开始。
云功能:
export const helloWorld = functions.https.onRequest((request, response) => {
response.send('{"response":"Hello world"}') //option3
response.send('Hello world');//option2
response.send("Hello world");//option1 as in docs
});
我尝试了3种不同的响应选项。控制台说它可以工作。如果在浏览器中打开函数url,则会显示“ Hello world”。
iOS部分:
[[_functions HTTPSCallableWithName:@"helloWorld"] callWithObject:nil
completion:^(FIRHTTPSCallableResult * _Nullable result, NSError * _Nullable error) {
if (error) {
if (error.domain == FIRFunctionsErrorDomain) {
NSLog(@"domain code %ld@, details %@", error.code, error.userInfo[FIRFunctionsErrorDetailsKey] );
}
NSLog(@"code %ld, message %@, details %@", error.code,error.localizedDescription, error.userInfo[FIRFunctionsErrorDetailsKey]);
return;
}
NSLog(@"result: %@", result.data);
}];
它返回(在3个选项中的每个选项中):代码3840,消息数据由于格式不正确而无法读取。详细信息(空)
如果响应格式完全由Firebase处理,该怎么办?
答案 0 :(得分:0)
在功能代码中,您将创建常规的HTTPS触发功能(https.onRequest
),对于可调用对象,则需要使用https.onCall
。
使用Callables的好处在于,它们可为您处理授权部分(对于常规HTTPS触发器,您需要编写自己的代码来验证用户身份)。
Callables的缺点是它们必须遵循特定的协议。虽然仍然应该能够从Callables返回任何JSON可序列化的数据。
如果您不需要身份验证,则可以使用常规的HTTPS触发器,并且只需发送常规的HTTP请求即可,而无需使用SDK。
详细了解可调用项:https://firebase.google.com/docs/functions/callable
答案 1 :(得分:0)
为获得成功,您需要使用数据密钥格式将数据发送回字典中。至少在iOS中如此。在浏览器中,您可以将其发送回任何格式。
例如:
response.send({data = {“ response”:“ Hello world”}})