आईओएस 8 के बाद से, आईपैड & से एल्बम कला के लिए सभी डेटा एरे एक आईफोन डिवाइस एक शून्य सरणी देता है। स्थानीय फ़ाइल (एनएसबंडल) से खींचते समय मुझे एल्बम आर्ट या कवर आर्ट मिल सकता है, लेकिन आईट्यून्स या डिवाइस पर खरीदे गए किसी भी गाने को खाली कर दिया जाता है।आईओएस 8 एल्बम कला कवर
मैंने नवीनतम एक्सकोड, दोनों डिवाइसों पर नवीनतम आईओएस और आईट्यून्स को भी अपडेट किया है। मैंने आईपैड 4, आईपैड एयर, आईफोन 5, आईफोन 6 पर परीक्षण किया है। उम्मीद है कि कोई जानता है कि क्या हो रहा है, यह अभी आईओएस 8 में एक ज्ञात बग की तरह लगता है। साथ ही, मैं संपत्ति चला सकता हूं और गीत नाम और कलाकार जैसी चीज़ें पुनर्प्राप्त कर सकता हूं।
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];
}
}
सभी कवर आर्ट छवियां शून्य हो जाती हैं या कभी कॉल नहीं होतीं। साथ ही, सेब द्वारा सुझाए गए प्रत्यक्ष फ़ाइल से कवर आर्ट खींचना असीमित है, लेकिन कम से कम 10 सेकंड लगते हैं, इससे कोई फर्क नहीं पड़ता कि मैंने किस डिवाइस पर कोशिश की है। आईओएस 7 ने हमें सीधे मीडिया आर्टम से कवर आर्ट खींचने की इजाजत दी और यह तात्कालिक था, मुझे समझ में नहीं आया कि वे उस समारोह को क्यों नकारेंगे।
क्या आपको यहां कोई और मिला है? – newenglander
क्या आपने MPMediaQuery.songsQuery() की कोशिश की है? – Aabglov