. Yerel bir dosyadan (NSBundle) çekerken albüm resmi veya kapak resmi alabilirim ancak iTunes'dan veya cihazdan satın alınan şarkılar boş döner.IOS 8 albüm kapak kapağı
Ben son XCode için güncelledik yanı her iki cihazda ve iTunes son iOS. IPad 4, iPad Air, iPhone 5, iPhone 6'da test ettim. Birisi neler olduğunu biliyorsa, şu anda iOS 8'de bilinen bir hata gibi görünüyor. Ayrıca, varlığı oynayabilir ve şarkı adı ve sanatçı gibi şeyler alabilirim.
MPMediaQuery *songQuery = [MPMediaQuery songsQuery];
NSArray *itemsFromGenericQuery = [songQuery items];
NSMutableArray *songsList = [[NSMutableArray alloc] initWithArray:itemsFromGenericQuery];
MPMediaItem *mediaItem = (MPMediaItem *)[songsList objectAtIndex:0];
NSURL *url = [mediaItem valueForProperty:MPMediaItemPropertyAssetURL];
AVAsset *asset = [[AVURLAsset alloc] initWithURL:url options:nil];
NSArray *commonArray = [assets commonMetadata];
//Test A
NSArray *albumArray = [AVMetadataItem metadataItemsFromArray:commonArray filteredByIdentifier:AVMetadataIdentifieriTunesMetadataCoverArt];
NSLog(@"commonArray = %lu",(unsigned long)[commonArray count]); //Returns 3
NSLog(@"albumArray has %lu",(unsigned long)[albumArray count]); //Returns 0 or null
//Test B
for (AVMetadataItem *metadataItem in asset.commonMetadata) {
if ([metadataItem.commonKey isEqualToString:@"artwork"]){
NSDictionary *imageDataDictionary = (NSDictionary *)metadataItem.value;
NSData *imageData = [imageDataDictionary objectForKey:@"data"];
UIImage *image = [UIImage imageWithData:imageData];
coverArtImage.image = image;
}
}
//Test C
for (AVMetadataItem *item in commonArray) {
if ([item.keySpace isEqualToString:AVMetadataKeySpaceiTunes]) {
NSData *newImage = [item.value copyWithZone:nil];
coverArtImage.image = [UIImage imageWithData:newImage];
}
}
//Test D
for (AVMetadataItem *item in asset.metadata) {
if ([item.commonKey isEqualToString:@"artwork"]){
NSDictionary *imageDataDictionary = (NSDictionary *)item.value;
NSData *imageData = [imageDataDictionary objectForKey:@"data"];
UIImage *image = [UIImage imageWithData:imageData];
coverArtImage.image = image;
}
if ([item.keySpace isEqualToString:AVMetadataKeySpaceiTunes]) {
NSData *newImage = [item.value copyWithZone:nil];
coverArtImage.image = [UIImage imageWithData:newImage];
}
}
Tüm kapak resmi görüntüleri null veya hiç denilen olsun döner. Ayrıca, kapak resmini elma tarafından önerildiği gibi doğrudan dosyadan çıkarmak asenkrondir, ancak hangi cihazı denediğime bakmadan en az 10 saniye sürüyor. iOS 7, kapak resmini mediaItem'den direkt olarak çekmemize izin verdi ve aniden, neden bu işlevi nerf yaptıklarını anlamıyorum.
daha fazla burada herhangi aldın mı? – newenglander
MPMediaQuery.songsQuery() yöntemini denediniz mi? – Aabglov