J'ai ajouté des ressources à la demande à mon application et les ai affichées sur l'App Store. Une partie de mes utilisateurs a des problèmes, un block completionHandler appelé lorsque les ressources ont fini le téléchargement ne se produit pas. Il ne dépend pas de l'espace disque. Dans la plupart des cas, cela fonctionne correctement. Une fois que j'ai le même truoble, je réinitialise le contenu de mon iPhone, réinstalle l'app, et le problème est laissé.Ressources ios à la demande certains utilisateurs ne fonctionnent pas
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSSet *tags = [NSSet setWithObjects: self.exerciseId, nil];
resourceRequest = [[NSBundleResourceRequest alloc] initWithTags:tags];
[resourceRequest conditionallyBeginAccessingResourcesWithCompletionHandler:
^(BOOL resourcesAvailable)
{
if (resourcesAvailable) {
dispatch_async(dispatch_get_main_queue(), ^{
[self setupMoviePlayerVideoWithName:_exerciseId];
});
}
else {
[self tryToGetODR];
}
}];
}
-(void) tryToGetODR{
resourceRequest.loadingPriority = NSBundleResourceRequestLoadingPriorityUrgent;
[resourceRequest beginAccessingResourcesWithCompletionHandler: ^(NSError * __nullable error){
dispatch_async(dispatch_get_main_queue(), ^{
if (error) {
return;
}
[self.videoImageView setHidden:true];
[self.activityIndikator setHidden:true];
[self.downloadProgressLabel setHidden:true];
[self setupMoviePlayerVideoWithName:_exerciseId];
});
}];
}
Quelqu'un a-t-il été confronté à un problème similaire?
Afficher le code réel, s'il vous plaît. – matt
@matt Je l'ai fait, merci – Ivan
Merci! Alors dites-vous que "tryToGetODR" n'est jamais appelé? Ou dites-vous qu'il est appelé mais les quatre dernières lignes (le gestionnaire d'achèvement) ne sont jamais exécutées? – matt