Swift/Firebase:无法在 Firebase Cloud Function 上发送请求数据



我似乎无法从Swift iOS应用程序通过请求体向Firebase发送标识符。

我的javascript代码工作(我在API构建器中测试了它):

exports.numberOfVideos = functions.https.onRequest((request, response) => {
var attributionID = request.body.data.attributionID || "No attributionID found.";
functions.logger.info('[LOG]: request.body has a value of ' + JSON.stringify(request.body), {structuredData: true});
var db = admin.firestore();
db.collection("content").get().then(snapshot => {
var total = 0;
snapshot.forEach(doc => {
if (doc.data().attributionID == attributionID) {
total++;
}
// stuff = stuff.concat(newelement);
});
response.send('{"data": {"attributionID": "' + attributionID + '", "numberOfContents": "' + total + '"}}');
return "";
}).catch(reason => {
response.send(reason)
})
});

我的Swift代码不能看到传输数据:

static func getContentCount(for obj: Object, completion: @escaping (_ count: Int?) -> Void) {
let httpsCallable = functions.httpsCallable("numberOfVideos")
//        httpsCallable.setValue("application/json", forKey: "Content-Type")
httpsCallable.call(["attributionID" : obj.id]) { 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(error)
}
}

if let response = result?.data as? [String: [String: Any]] {
if let data = response["data"] {
if let countAsAString = data["numberOfContents"] as? String {
let count = Int(countAsAString)
if count != nil {
completion(count)
} else {
print("Data is valid but no count found: (result?.data)")
completion(nil)
}
}
}
} else {
print("Data is invalid: (result?.data)")
completion(nil)
}
}
}

当它在REST API测试器中工作时,下面是正文:

POST /numberOfVideos HTTP/1.1
Host: *****************
Content-Type: application/json
Content-Length: 49
{"data":{"attributionID":"biNiaWVtmjUKoTQ1fTZu"}}

任何帮助将不胜感激!

修复。我必须使用NSDictionary,而不是Dictionary:

NSDictionary(dictionary: ["attributionID" : obj.id])

相关内容

  • 没有找到相关文章

最新更新