2014-09-16 19 views
7

IOS 7'de 8. Tamam. Ben ios 8. ios 7 çalışıyor için ios 7 uygulamayı güncellemek yapıyorum ama ios 8 karşı uyulması zaman temsilci NSURLSession URLSessionDidFinishEventsForBackgroundURLSession işleyicisi asla denilen ios ben birden fazla dosya indirirken NSURLSession var

URLSessionDidFinishEventsForBackgroundURLSession: 

asla denir meathod.

ben biraz daha derin kazılmış ve

-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location 

ve

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error 

temsilci meathods üzerinde Kalan indirme görevleri için oturumu kontrol ediyorum:

[self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks){ ...} 

son günü Orada çağrılan delege, her zaman downloadTasks dizisinde kalan bir elementtir. Garip olan şey, bu indirme görevinin her zaman aynı dosyaya başvurmaması ve bu görevlerdeki durumun, yüklemenin tamamlandığını göstermesidir.

Yine -iOS7 içinde çalışıyor. Sorun sadece ios 8'de gerçekleşir.

+0

Bu sorunu onaylıyorum. Etrafında her zaman bir görev vardır ve bu da uygulamayı bozar. https://devforums.apple.com/message/1047695#1047695 - böcek dava açıldı gibi görünüyor: Sorun da Apple'ın forumlarda üzerinden tartışılıyor https://devforums.apple.com/message/1021734#1021734 – Krumelur

cevap

2

Ben iOS Simülatörü üzerinde test ediyoruz sanırım. Evet ise, bu yanlış davranıştan başka bir hata sorumludur. iOS8 Simülatörü hiçbir zaman gerçekten arka plan uygulamalarına sahip değildir, dolayısıyla tamamlama işleyicisi tetiklemez.

cihazda çalışan deneyin ve işe yarayacak.

Sen aramayı unutmayın Apple forums veya bu blog post

+0

It simülatör veya cihaz üzerinde çalışırken çalışmaz. Uygulamamı xcode 5.1'de ios 7'ye karşı derledim ve bir ios 8 cihazına yüklüyorum. – nwales

+0

Aynı sorun var mı, herhangi bir haber var mı? – Bruno

+0

@nwales Tam olarak ne yapıyorsunuz? İşleyici yalnızca uygulama arka planda ise, hala çalışıyorsa veya iOS tarafından sonlandırıldığında tetiklenir. Manuel olarak görev değiştiriciden sonlandırırsanız, ateş etmeyecektir. – Krumelur

-1

tam bir tartışma bulabilirsiniz içinde

if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){ 
     [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]]; 
    } 

senin

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

Bu cihazda düzeltmek gerekir ama simülatörün çalışmasına izin vermeyen bir hata vardır.