2012-11-28 17 views
8

Amazon s3 kepçesine büyük videolar yüklemem gereken bir uygulamam var. Eşzamanlı görevleri çalıştırmak için bir NSOperationQueue tarafından düzenlenen NSOperations kullanıyorum.Geniş videolar yüklerken Arkaplan Görev zaman aşımı süresini uzatın iOS

Küçük videolar yüklerken sorun yaşıyorum (daha küçükse 200 Mb). Ancak sorun büyük bir video yüklemeye çalıştığımda, 10 dakika sonra yükleme işlemi kesintiye uğruyor.

Zaten 10 dakikanın bir penceresini almak için beginBackgroundTaskWithExpirationHandler:^ kullanıyorum. Bu zaman aşımı süresini uzatabileceğim uygun yol nedir?

Apple, bu zaman aşımı süresini uzatmayı başarırsam uygulamayı reddeder mi?

Halen ben plan görevi kesintiye asla alır görüyoruz kod parçası ile bağlantı 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]; 
} 

atıfta yerleşik benim AppDelegate aşağıdaki kodu var. Son kullanma eylemcisi içinde görebileceğiniz gibi, sonsuz çalışan bir göreve yol açan başka bir arka plan görev olayı başlattım. Yine de, yükleme tamamlandıktan sonra arka plan görevini sonlandırmak için mantığı yazabilirim, ancak bu yaklaşım hakkında şüphelerim var ..

Siz ne düşünüyorsunuz?

Bu herhangi bir yöntemle bir saldırı mı? Apple aşağıdaki yaklaşım için uygulamayı reddeder mi?

+0

bgTask = [app beginBackgroundTaskWithExpirationHandler:^(void) { [self.queue waitUntilAllOperationsAreFinished]; [app endBackgroundTask: bgTask]; bgTask = UIBackgroundTaskInvalid; }]; Bu adamlar ne dersin? – Xcoder

+0

Sizler, aptalca cevaplar ve aptalca yorumlarla tartışma hakkınız yok. Dürüst olmak gerekirse, bu tartışılacak bir konu. Lütfen çocuklar, açık bir tartışma için ricada bulunacağım, böylece her şeyin ayrıntılarına göz atabilelim. Teşekkürler –

+0

arka planda büyük videolar yüklemek için NSOperationQueue kullanabilir miyim, elma benim app reddeder mi? –

cevap

2

Arka plandaki görevlerin arkasındaki fikir, uygulamaların arka planda sürekli olarak çalışmasını engellemektir. Diğer bir deyişle, Apple'ın koyduğu kısıtlamaları atlamaya çalışırsanız, başvurunuzu reddetme zemini vardır.

Bunu yapıp yapmayacaklarını sormak sadece Apple tarafından cevaplanabilir. Ancak, Daij-Djan'ın da belirttiği gibi, uygulamanızın öldürüleceği başka durumlar da var.

Birkaç ay önce, benzer bir durumla karşılaştım, yani bir uygulama büyük dosyaları bir S3 paketine yüklemek zorunda kaldı. Çözüm, uygulamanız etkinleştiğinde, yükleme işleminin devam ettirildiğinden emin olmak için çok parçalı yüklemeler kullanıyor. Çok parçalı yüklemeler hakkında daha fazlasını okuyabilirsiniz in the API reference.

+0

Sanırım fikir açık. Sistemi çok zorlayın. – Xcoder

2

o hackisch görünüyor ama değil kötü IMHO (zıt): D elma o geçmesi izin verirse

, sen altın ama aslında sen taciz ediyor bg görevler BTW

: Hatta bununla , ios sadece seni iptal edebilir! + diğer uygulamaların performansını etkileyeceği için yoğun CPU yoğun/bellek yoğun çalışma yapmayın belki de

+0

Haklısınız kardeşim. –