アプリのオンデマンド リソースに追加し、アプリ ストアに投稿しました。一部のユーザーに問題があり、リソースのダウンロードが完了したときに呼び出されるブロックの completionHandler が発生しません。ディスク容量には依存しません。ほとんどの場合、正しく機能します。
同じトラブルが発生したら、iPhone のコンテンツをリセットし、アプリを再インストールすると、トラブルが残ります。
- (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];
});
}];
}
似たようなことに直面した人はいますか?