2016-04-27 11 views
5

मैं उपयोगकर्ता की लाइब्रेरी में जोड़ने के बिना, मेरे ऐप के द्वारा बनाई गई किसी प्लेलिस्ट में एक गीत को जोड़ने के लिए 9.3 से नए एप्पल संगीत API का उपयोग करने की कोशिश कर रहा हूँ।का उपयोग करते समय त्रुटि - [MPMediaPlaylist addItemWithProductID: completionHandler:]

पर विचार करें productId 316,654,632, यह फीनिक्स द्वारा गीत Lisztomania, अमेरिका आईट्यून्स स्टोर में है।

निम्नलिखित कोड का उपयोग करना, मैं निम्नलिखित कोड का उपयोग गीत

MPMusicPlayerController *musicPlayer = [MPMusicPlayerController systemMusicPlayer]; 
[musicPlayer setQueueWithStoreIDs:@[@"316654632"]]; 
[musicPlayer play]; 

खेल सकते हैं, मैं अपने एप्पल संगीत लाइब्रेरी में गीत जोड़ सकते हैं

[[MPMediaLibrary defaultMediaLibrary] addItemWithProductID:@"316654632" completionHandler:^(NSArray<__kindof MPMediaEntity *> * _Nonnull entities, NSError * _Nullable error) { 
    NSLog(@"%@", error); 
}]; 

त्रुटि नहीं के बराबर है, और मैं यह कर सकते हैं मेरी लाइब्रेरी में गीत देखें।

लेकिन किसी प्लेलिस्ट के साथ एक ही कोशिश कर काम नहीं करता।

[[MPMediaLibrary defaultMediaLibrary] getPlaylistWithUUID:uuid creationMetadata:[[MPMediaPlaylistCreationMetadata alloc] initWithName:@"Test Playlist"] completionHandler:^(MPMediaPlaylist * _Nullable playlist, NSError * _Nullable error) { 
    NSLog(@"%@", error); 

    if (!error) { 
     [playlist addItemWithProductID:@"316654632" completionHandler:^(NSError * _Nullable error) { 
      NSLog(@"%@", error); 
     }]; 
    } 
}]; 

प्लेलिस्ट बनाई गई है, मैं Music.app में देख सकते हैं, लेकिन जब मैं एक ही उत्पाद आईडी मैं खेला & प्लेलिस्ट में मेरी लाइब्रेरी में जोड़ा जोड़ने का प्रयास करते हैं, मैं कोई त्रुटि मिलती है

Error Domain=MPErrorDomain Code=4 "The requested id could not be found" UserInfo={NSLocalizedDescription=The requested id could not be found}

लेकिन यह कैसे यह है कि अगर मैं सफलतापूर्वक मेरी लाइब्रेरी में एक ही आइटम जोड़ा नहीं पाया जा सका?

अद्यतन

अच्छी खबर! ऐप्पल ने 10.2.1 को रडार तय किया है: // 26408683!

+0

समाधान खोजने पर कोई भाग्य? – TWilly

+0

@TWilly nope :(मैंने इसे ऐप्पल देव मंचों पर भी पोस्ट किया है और कोई जवाब नहीं है। – Jota

+0

मुझे यह समस्या भी थी, जिसका इस्तेमाल किया गया था - [एमपीएमडिया प्लेलिस्ट एडमिडियाइटम: समापन हैंडलर:] एक वर्कअराउंड के रूप में। – Dan

उत्तर

4

मेरी प्लेलिस्ट रूपांतरण ऐप (mixlib) में, एकमात्र समाधान जिसे मैंने विश्वसनीय रूप से नव निर्मित प्लेलिस्ट में कुछ ट्रैक जोड़ने के लिए पाया है प्रतीक्षा करें।

मेरी परीक्षणों में पाँच सेकंड इंतजार कर काफी हो रहा है।

[[MPMediaLibrary defaultMediaLibrary] getPlaylistWithUUID:uuid creationMetadata:[[MPMediaPlaylistCreationMetadata alloc] initWithName:@"Test Playlist"] completionHandler:^(MPMediaPlaylist * _Nullable playlist, NSError * _Nullable error) { 
if (!error) { 
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 /*seconds*/ * NSEC_PER_SEC), dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)), ^() { 
     [playlist addItemWithProductID:@"316654632" completionHandler:^(NSError * _Nullable error) { 
      NSLog(@"%@", error); 
    }]; 
} 
}]; 

मुझे लगता है यह एक सर्वर/नेटवर्क से संबंधित मुद्दा है क्योंकि यह कभी कभी का इंतजार किए बिना काम करता है। "अनुरोधित आईडी" जो नहीं मिला है वह प्लेलिस्ट आईडी हो सकता है, ट्रैक आईडी नहीं।

जब यह एक प्लेलिस्ट के लिए काम करने के लिए शुरू होता है, तो यह हमेशा काम करेंगे। तो आपको प्रत्येक अतिरिक्त ट्रैक जोड़ने से पहले प्रतीक्षा करने की आवश्यकता नहीं है, लेकिन पहले को जोड़ने से पहले ही।

+0

अरे, हमें यूयूआईडी पैरामीटर में क्या रखा जाना चाहिए? मेरे पास कोई जानकारी नहीं मिली –

+1

एक NSUUID ऑब्जेक्ट। आप इसे [NSUUID UUID] का उपयोग कर बना सकते हैं। यदि आपको प्लेलिस्ट को बाद में पुनर्प्राप्त करने की आवश्यकता है तो इसे स्टोर करें। – FKDev

संबंधित मुद्दे