swift - 如何在不发出常规函数调用请求的情况下将数据从 firebase 云函数传递到我的 iOS 应用程序?

我有一个从 URL 而不是函数调用的 Firebase 云函数。该 URL 用于加载 WKWebView,并且正在使用 URL 中的参数之一调用该函数,特别是 return_url。

加载 WKWebView 的 URL 示例是 https://domain.name?app_name=app_name&return_url=cloud_function_url

private func loadWKWebView() {
    
    let url = "https://domain.name"
    let params = "param1=param1&return_url=\(cloud_function_url)"
    
    var request = URLRequest(url: URL(string: url)!)
    request.httpMethod = "POST"
    
    request.httpBody = params.data(using: .utf8)
    
    let task = URLSession.shared.dataTask(with: request) { (data : Data?, response : URLResponse?, error : Error?) in
        if data != nil {
            if let returnString = String(data: data!, encoding: .utf8) {
                DispatchQueue.main.async {
                    self.webView.loadHTMLString(returnString, baseURL: URL(string: url)!)
                }
            }
        }
    }
    
    task.resume()
    
}

该 URL 加载一个身份验证页面,用户必须在其中输入其用户名和密码并返回我需要的参数。

我可以通过控制台记录参数,但我不知道如何将数据传递给我的 iOS 应用程序,因为它不是“直接”调用期望结果的函数的函数。结果取决于用户是否输入了有效的用户名和密码。

用户登录我的应用程序后,如何发送响应?

回答1

您放入 params 的是查询参数。这应该附加到 URL,而不是作为 POST 中的数据发送。

我建议使用 URLComponents 结构从您需要的部分组成您的 URL(可能是 host 加上 queryItems。)

相似文章

最新文章