我正在从iOS应用程序调用Firebase云函数。它按预期工作,但我如何从我的云函数返回一个值,该值从iOS读取为FIRTimestampValue
?
Firebase为Firestore文档执行此操作。如果我得到一个带有时间戳值的Firestore文档,它会像云函数结果一样作为字典对象返回,但时间戳值被编码为FIRTimestamp
对象。
我想知道我是否需要在服务器端进行任何特殊编码来实现这一点,或者iOS SDK中是否有其他Firebase函数来解析云函数的结果,以便将时间戳值编码为FIRTimestamp
对象。
下面是一个例子。
Javascript(云功能(:
exports.myFunction = functions.https.onCall((data, context) => {
var dateText = "2020-10-29T21:17:51Z";
return {"myDate": Date.parse(dateText)}
});
iOS(应用程序(:
FIRFunctions *functions = [FIRFunctions functions];
FIRHTTPSCallable *function = [functions HTTPSCallableWithName:@"myFunction"];
[function callWithObject:@{} completion:^(FIRHTTPSCallableResult * _Nullable result, NSError * _Nullable error) {
NSDictionary *data = result.data;
// How do I get this to be a FIRTimestamp?
FIRTimestamp *timestamp = data["myDate"];
}];
可调用函数只向调用方返回原始JSON对象。JSON只能包含对象、数组、字符串、数字、布尔值或null。调用方可以将结果对象中的任何内容转换为它想要使用的本机数据类型。您将无法直接从函数中获得FIRTimestampValue
。
相反,您的函数应该将时间戳转换为某种标准化的形式(例如,自epoch以来的毫秒(,然后在客户端应用程序中将该数字转换为FIRTimestampValue
。