2012-09-19 27 views
13

इसे ऐप्पल पर कोई किस्मत नहीं मिला, लेकिन अब आईओएस 6 एनडीए ऊपर है, उम्मीद है कि अधिक आंखें इसे यहां देखेंगे।MPMediaPickerController.showsCloudItems कुछ भी नहीं करता

मैं एक ऐप को संशोधित करने का प्रयास कर रहा हूं ताकि उपयोगकर्ता को स्थानीय रूप से डाउनलोड किया गया संगीत चुनने की अनुमति मिल सके।

MPMediaPickerController* mpc = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAnyAudio]; 

mpc.allowsPickingMultipleItems = YES; 
mpc.modalPresentationStyle = UIModalPresentationCurrentContext; 
mpc.showsCloudItems = NO; 

[self presentViewController:mpc animated:YES completion:nil]; 

प्रलेखन से::

एक मीडिया आइटम पिकर के लिए डिफ़ॉल्ट व्यवहार हाँ है, जो पिकर उपलब्ध iCloud आइटम से पता चलता मतलब है मैं IOS 6 जीएम के अंतर्गत निम्नलिखित कोड है। एक मीडिया आइटम को iCloud आइटम माना जाता है यदि यह आईट्यून्स मिलान के माध्यम से उपलब्ध है और डिवाइस पर संग्रहीत पहले से नहीं है।

मैं इसका मतलब यह मानता हूं कि यदि आईट्यून्स मैच सक्षम है, तो डिवाइस पर डाउनलोड किए गए आइटम केवल पिकर में दिखाए जाएंगे, हालांकि मैं हमेशा पूरी आईट्यून्स मैच लाइब्रेरी देखता हूं। मैंने इसके लिए एक रडार दायर किया, क्योंकि यह एक गंभीर बग की तरह लगता है। अगर कोई मुझे अन्यथा बता सकता है, तो मुझे यह जानना अच्छा लगेगा कि मैं यहां क्या खो रहा हूं।

+0

रडार संख्या क्या है? मैं इसे डुप्लिकेट करूंगा। यह अभी भी 6.0.1 पर टूट गया है। –

+0

अभी भी 3/6/2013 में टूटा हुआ है। यह खुद से लड़ रहा था। देखकर खुशी हुई कि मैं अकेला नहीं हूँ। – MarqueIV

+0

अभी भी 6.1.2 पर टूट गया है। लेकिन जब यह एक आईक्लाउड/आईट्यून्स मैच आइटम है तो MPMediaItem की संपत्ति MPMediaItemPropertyAssetURL शून्य वापस आनी चाहिए। –

उत्तर

1

मुझे यह समस्या थी। हालांकि मैं वस्तुओं को छिपाने में असमर्थ था, यहां एक अच्छा कामकाज है जिसका उपयोग मैंने लोगों को चुनने में सक्षम होने से रोकने के लिए किया था। didPickMediaItems के अंदर, आप अस्थायी रूप से यह एक AVPlayerItem में लोड करना चाहिए और फिर बस इतना की तरह है कि आइटम की वैधता की जांच:

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection 
{ 
    MPMediaItem *selectedItem = [[mediaItemCollection items]objectAtIndex:0]; 
    NSURL *tempURL = [selectedItem valueForProperty:MPMediaItemPropertyAssetURL]; 
    AVPlayerItem *playerItem = [[AVPlayerItem alloc]initWithURL:tempURL]; 

    if(playerItem.loadedTimeRanges==NULL) 
    { 
    UIAlertView *alert=[[[UIAlertView alloc]initWithTitle:NSLocalizedString(@"Invalid Song Choice",NULL) message:NSLocalizedString(@"Please choose a song that is local to your phone.",NULL) delegate:self cancelButtonTitle:NSLocalizedString(@"Okay",NULL) otherButtonTitles:nil]autorelease]; 
    [alert show]; 
    [playerItem release]; 
    } 
    else 
    { 
     NSLog(@"Your good to go...do whatever you want with the local song"); 
    } 
} 
+0

woooooah में देख रहा हूं .. क्या कोई "महंगा" कह सकता है? – abbood

4

एक बेहतर समाधान का परीक्षण करने के लिए है कि कोई आइटम didPickMediaItems प्रतिनिधि में iCloud से आता है:

 MPMediaItem *selectedItem = [selectedItems objectAtIndex:0]; 

    if (![[selectedItem valueForProperty:MPMediaItemPropertyIsCloudItem] boolValue]) 

आपको इसे खेलने की ज़रूरत नहीं है, MPMediaItem में एम्बेड की गई संपत्ति का उपयोग करना अधिक कुशल है।

-1

ऐसा प्रतीत होता है आईओएस 7.

निम्नलिखित कोड काम करता है में लगाई जानी; iCloud आइटम नहीं दिख रहे हैं:

MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeMusic]; 
picker.delegate = self; 
picker.allowsPickingMultipleItems = NO; 
picker.showsCloudItems = NO; 
+0

बस एक नोट: ऐसा लगता है कि यदि आपका परिनियोजन लक्ष्य ≥ 7.0 है तो यह केवल तभी काम करता है। –

+0

अभी भी मेरे साथ काम नहीं कर रहा है – thisiscrazy4

+0

यह तैनाती लक्ष्य 6 के साथ मेरे लिए काम कर रहा है। CocoaAficionado के लिए धन्यवाद – user3344173

8

यह एक ओएस समस्या प्रतीत होता है।

picker.showsCloudItems = NO; का उपयोग सही ढंग से, कम गीत से पता चलता बजाय पूरी सूची की ... गीत सूचीबद्ध गाने कि या तो स्वयं संगीत एप्लिकेशन या गीत में डाउनलोड किया गया है कि स्ट्रीम किया गया और उसके बाद कैश की गई हैं।

समस्या, कम से कम मेरे मामले में, कैश वाले लोगों से निपट रही है।

यदि मैं मैन्युअल रूप से डाउनलोड किया गया एक गीत चुनता हूं जोका मान NO है, जो सही है। मैं MPMediaItemPropertyAssetURL संपत्ति के माध्यम से संपत्ति के यूआरएल तक भी पहुंच सकता हूं।

दूसरी ओर, एक गाना है कि रिटर्न MPMediaItemPropertyAssetURL पर MPMediaItemPropertyIsCloudItem और nil पर YES कैश्ड किया गया था, गाना लगभग मेरे लिए बेकार बनाने का चयन।

क्षमा करें मेरे पास कोई वास्तविक उत्तर नहीं है लेकिन मेरे पास बस टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है।

आशा है कि मेरे 2 सेंट किसी भी तरह से मदद करें, लेकिन यह वास्तव में मुझे लगता है कि इस मुद्दे को केवल भविष्य के अपडेट में ऐप्पल द्वारा हल किया जा सकता है।

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

  • कोई संबंधित समस्या नहीं^_^