私のiosアプリケーションの共有拡張を作成しました。写真アプリで共有オプションをクリックすると共有拡張が表示され、それをクリックするとコントローラが表示されます。これまですべてがうまくいっています。私はyoutubeのAPIを使用してYouTubeにビデオをアップロードしています。私は、ビデオが小さい場合iosの共有拡張でNSDataにビデオを変換する
GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithData:fileData MIMEType:@"video/*"];
は今、それは簡単にこのコードを
NSData *fileData = [NSData dataWithContentsOfURL:[NSURL URLWithString:videoURL]];
を使用したNSDataに変換され、すべてが動作していると、映像がアップロードされたパラメータを作成するには、このメソッドを使用しています。
しかし、ビデオが大きい場合は、クラッシュして共有拡張を終了します(私はブレークポイントを設定してこの問題を発見しました。ファイルデータ変換を削除するとクラッシュしません)。だから私が何をしたか、私はアプリがクラッシュされていませんが、私はネットワークエラーを取得しています今、このユーチューブAPIメソッド
GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithFileURL:[NSURL URLWithString:videoURL] MIMEType:@"video/*"];
を使用したNSDataに変換するのではなくでした。エラーが
エラードメイン= NSURLErrorDomainコード= -995 "(ヌル)" である
少し検索は、それが原因NSURLSessionであることを発見し、この
sessionConfiguration.sharedContainerIdentifier = @“com.me.myapp.containerIdentifier”;
のようなものを使用するように指示しました
私はyoutube apiを使用しています。私はどこでそれを使用するかわからない、または大規模なビデオファイルと共有の拡張子でYouTubeのAPIを使用する他の方法があります。
注::私は自分のアプリでyoutube apiを使用していて、NSDataで正常に動作しています。
希望の質問は明らかです。私は今一日それに固執しています。助けてください。
ありがとうございます。
EDIT 1:
Iは
NSData *fileData = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:videoURL] options:0 error:&error];
FILEDATAがnilこのコードを使用します。私は取得していますエラーが
エラードメイン= NSCocoaErrorDomainコード= 260 IMG_2187.MOV「ファイル 『』そのようなファイルが存在しないため を開くことができませんでした。」です のUserInfo = {NSFilePath = /ファイル:/var/mobile/Media/DCIM/102APPLE/IMG_2187.MOV、
'NSURLErrorBackgroundSessionRequiresSharedContainer'(これは' -995'エラーです)は、バックグラウンドサービスがあなたのコンテナの外のものを参照するのが好きではないと思わせるものです。おそらくあなたのドキュメントや一時フォルダにコピーして、そこからfileURLを使って 'uploadParametersWithFileURL'でアップロードしてみてください。 – Rob
FWIW、これはSergeyが彼の答えで行っていた場所のようです... – Rob