iOS 共享扩展中的 API 请求立即失败

Posted

技术标签:

【中文标题】iOS 共享扩展中的 API 请求立即失败【英文标题】:API Request Fails immediately in iOS share extension 【发布时间】:2018-09-02 06:59:04 【问题描述】:

您好,我正在使用共享扩展通过 API 请求 (Alamofire) 将一些数据发布到我的服务器,问题是请求立即失败,我不知道如何使其工作,我阅读了一些文章我必须使用 URLSession 在后台发送请求,但我找不到任何示例来说明如何使其与 alamofire 一起使用,这是我在共享扩展 ViewController 中的代码:

override func didSelectPost() 

    MessageHTTPHelper.submitMessage(contains: contentText, completion:  (response) in
        self.showAlert(title: "Result", message: response.result.isSuccess ? "SUCCESS" : "FAILURE")
    )


MessageHTTPHelper.submitMessage 是我定义的辅助函数,它可以在主应用程序中完美运行 我不关心响应,我只是想发送请求而没有任何回调,你能给我一个在 ios 共享扩展中发送请求的例子吗?

【问题讨论】:

【参考方案1】:

经过大量搜索和测试并失败,终于,this solution 为我工作!

这是我在didSelectPost()中的代码

让正文:参数= [ “版本”:Configs.currentReleaseVersion, “内容”:cleanTextContent ]

let request = HTTPHelper.makeHTTPRequest(route: "message",
                           headers: HTTPHelper.defaultAuthHTTPHeaders,
                           verb: .post,
                           body: body,
                           apiV1Included: true)
let queue = DispatchQueue(label: "com.example.background", qos: .background, attributes: .concurrent)

request.responseJSON(queue: queue, options: .allowFragments)  (response) in
    if response.result.isFailure 
        guard let message = response.error?.localizedDescription else 
            self.dismiss()
            return
        
        self.showAlert(title: "Error", message: message)
    

HTTPHepler.makeHTTPRequest 只是一个辅助方法,它使用给定的参数创建一个 Alamofire DataRequest 实例并返回它

【讨论】:

以上是关于iOS 共享扩展中的 API 请求立即失败的主要内容,如果未能解决你的问题,请参考以下文章

跨域资源共享的问题:预检请求后 OSX Safari 和 iOS Safari 均失败

iOS swift 使用 alamofire 在应用程序和共享扩展程序之间共享 cookie

Swift 中的 iOS 共享扩展抓取 URL

使用 iOS 中的共享扩展从 Mail App 共享附件

IOS8 beta 中的共享扩展

在 iOS 扩展和应用程序之间使用 UIApplication.shared 共享 CocoaPod