2012-11-28 8 views
8

大きなビデオをAmazon S3バケットにアップロードする必要があるアプリケーションがあります。 NSOperationQueueによって調整されたNSOperationsを使用して、並行タスクを実行しています。バックグラウンドを拡張するアップロード中にタスクのタイムアウト期間が大きいビデオiOS

小さい動画(200Mbより小さいサイズ)をアップロードするときに問題はありません。 しかし、問題は、大量の動画をアップロードしようとすると、10分後にアップロード処理が中断されたためです。

私はすでにbeginBackgroundTaskWithExpirationHandler:^を使用して10分のウィンドウを取得しています。このタイムアウト期間を延長できる適切な方法は何ですか?

私は何とかこのタイムアウトを延長できたら、Appleはこのアプリケーションを拒否しますか?

現在、私は私がリンクに私はバックグラウンドタスクが中断決して得ないことがわかり、コードのこの部分ではiPhone - Backgrounding to poll for events

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 

    UIApplication* app = [UIApplication sharedApplication]; 
    dispatch_block_t expirationHandler; 

    expirationHandler = ^{ 
     bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler]; 
    }; 

    bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler]; 
} 

を参照建て、私のAppDelegateに次のコードを持っています。期限切れハンドラの中でわかるように、私は無限に実行中のタスクにつながる別のバックグラウンドタスクイベントを開始しました。アップロードが完了したらバックグラウンドタスクを終了するロジックを書くことはできますが、私はこのアプローチに疑問を抱いています。

あなたはどう思いますか?

どのような方法でもハックですか? Appleはアプローチに従うためにアプリを拒否しますか?

+0

bgTask = [アプリケーションbeginBackgroundTaskWithExpirationHandler:^(void){ [self.queue waitUntilAllOperationsAreFinished]; [app endBackgroundTask:bgTask]; bgTask = UIBackgroundTaskInvalid; }];この男はどう? – Xcoder

+0

あなたたちは愚かな答えと愚かなコメントで議論する権利はありません。正に、これは議論するトピックです。みなさん、私はあらゆることの詳細に目を通すことができるように、あなたにオープンな議論をお願いします。ありがとう –

+0

バックグラウンドで大規模なビデオをアップロードするNSOperationQueueを使用することができます、リンゴは私のアプリを拒否する?? –

答えて

2

バックグラウンドタスクの背景にあるアイデアは、アプリケーションがバックグラウンドで継続的に実行されないようにすることです。言い換えれば、Appleが制限を回避しようとすると、アプリケーションを拒否する理由があります。

これを行うかどうかについては、アップルが回答する必要があります。しかし、Daij-Djanが言及しているように、あなたのアプリケーションを殺すことができる他の状況があります。

数ヶ月前、私は同じような状況に遭遇しました。つまり、アプリケーションが大きなファイルをS3バケットにアップロードしなければならなかったのです。このソリューションでは、マルチパートアップロードを使用して、アプリケーションがアクティブになるたびにアップロードプロセスが再開されるようにしています。複数アップロードの詳細についてはin the API referenceをご覧ください。

+0

私はその考えがはっきりしていると思います。 – Xcoder

2

それはhackischようだが、悪くない私見(反対):D Appleはそれが通過することができます場合

、あなたがしている黄金実際にあなたが悪用されているBGタスクところで

:でもそれと、私はちょうどあなたをキャンセルするかもしれません!他のアプリのパフォーマンスに影響を与える可能性があるため、CPU集約的/メモリ集中的な作業を行わないでください。

+0

あなたは正しい兄弟です。 –

関連する問題