1

ユーザーが 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 を使用すると、すべてが機能します。

どんな助けでも大歓迎です。

4

1 に答える 1