Я пытаюсь передать изображение в приложение для iOS, написанное на Swift 3. Однако я могу загрузить изображение непосредственно из его URL-адреса, поскольку для изображения нет HTTPS, я вынужден написать оболочку на PHP, которая может принимать изображение и зарезервировать его через HTTPS. Я использую CakePHP для обслуживания изображения, которое работает нормально, однако приложение iOS не отображает изображение. Изображение извлекается, но оно не отображается в UIImageView. Любая помощь приветствуется.
Свифт 3
let mugshotParams: [String:Any] = [
"action":"632",
"params":[
"offender_id":"\(self.delegate.predators[index].id)"]
]
do {
let mugshotObject = try JSONSerialization.data(withJSONObject: mugshotParams, options:[])
let request = NSMutableURLRequest(url: URL(string: delegate.urlMobile! as String)!, cachePolicy:NSURLRequest.CachePolicy.reloadIgnoringLocalCacheData, timeoutInterval: 30)
request.httpBody = mugshotObject
request.httpMethod = "POST"
let task = URLSession.shared.dataTask(with: request as URLRequest, completionHandler: {data, response, error in
DispatchQueue.main.sync {
infoWindow.imageMugshot.image = UIImage(data: data!)
infoWindow.imageMugshot.contentMode = .scaleAspectFit
}
})
task.resume()
} catch {
}
CakePHP
private function getPredatorMugshot() {
$image = file_get_contents('http://domain.com/predator/image.jpg');
$this->response->type('jpg');
$this->response->body($image);
}
Я бы решил это с вашим App Transport Security Settings
в вашем App-Info.plist
Вот XML, который вы добавляете в этот файл.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>domainservingimages.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
Других решений пока нет …