ユーザーが App.net で画像を共有できる拡張機能を実装しようとしています。
多くの試行錯誤の後、私は最終的にアイデアを出しました。
リクエストを作成するためのフレームワークがあります。リクエストは、 を含むPOSTリクエストContent-Disposition: form-data
です。sessionDataTask
したがって、画像をアップロードするには a を使用する必要があると思います。
セッションのデリゲートは、同じフレームワーク内のシングルトンです。一部のデリゲート メソッドが呼び出されます。
しかし、didReceiveData
呼び出されることはありません。代わりにdidCompleteWithError
、アップロードが開始される前に次のエラーが表示されます。
Error Domain=NSURLErrorDomain Code=-997 "Lost connection to background transfer service" UserInfo=0x7b29dc80 {NSErrorFailingURLKey=https://alpha-api.app.net/stream/0/files, NSErrorFailingURLStringKey=https://alpha-api.app.net/stream/0/files, NSLocalizedDescription=Lost connection to background transfer service}
共有拡張機能のコードは次のとおりです。
let imageUploadRequest = RequestFactory.imageUploadRequest(imageToShare, accessToken: accessToken!)
let sessionId = "de.dasdom.jupp.image.backgroundsession"
let config = NSURLSessionConfiguration.backgroundSessionConfigurationWithIdentifier(sessionId)
config.sharedContainerIdentifier = "group.de.dasdom.Jupp"
let session = NSURLSession(configuration: config, delegate: PostService.sharedService, delegateQueue: NSOperationQueue.mainQueue())
let sessionTask = session.dataTaskWithRequest(imageUploadRequest)
sessionTask.resume()
self.extensionContext!.completeRequestReturningItems(nil, completionHandler: nil)
これにより、ホスト アプリでも同じエラーが発生します。
共有拡張機能とホスト アプリでアプリ グループを設定しました。
アップロードは機能しますが、App.net の投稿を作成するには、アップロードからの応答が必要です。通常の NSURLSession を使用すると、すべてが機能します。
どんな助けでも大歓迎です。