2012-11-21 34 views
8

मेरे पास AVQueuePlayer आधारित ऑडियो स्ट्रीमिंग प्लेयर है जिसे पृष्ठभूमि में चलाने की आवश्यकता है। खिलाड़ी को तब तक चलने की जरूरत है जब तक कि वह सभी सूची खेलना समाप्त न करे। बेशक इसे रोकना होगा यदि नेटवर्क कनेक्शन खराब हो जाता है, लेकिन नेटवर्क कनेक्शन वापस आने पर इसे स्वचालित रूप से फिर से शुरू करना चाहिए।जब नेटवर्क सक्रिय हो जाता है (और खेलने के लिए तैयार है) AVQueuePlayer/AVPlayerItem से कॉलबैक कैसे प्राप्त करें?

इस के लिए, मैं

  • AVPlayerItem.status
  • AVPlayerItem.playbackLikelyToKeepUp
  • AVPlayer.currentItem
  • AVPlayer.status
  • AVPlayer.error

निगरानी कर रहा हूँ केवी का उपयोग कर ओ उदाहरण के लिए, यदि नेटवर्क कनेक्शन अस्थायी त्रुटि से ठीक हो जाता है, तो मुझे उम्मीद है कि currentAVPlayerItem.statusAVPlayerStatusItemReadyToPlay बन जाएगा, जो मेरे प्लेयर को सूचित किया जाएगा और मैं उस बिंदु पर [AVQueuePlayer play] जारी कर सकता हूं।

यह तंत्र (तर्क) कुछ मामलों में काम करता प्रतीत होता है, लेकिन ऑफ़लाइन वातावरण में अक्सर, AVPlayerItem.statusAVPlayerItemStatusFailed बन जाता है, जो आइटम AVQueuePlayer स्वचालित रूप से छोड़ने लगता है। नतीजतन, कतार खाली हो जाएगी और AVPlayerItem से कोई कॉलबैक प्राप्त नहीं किया जा सकता है।

मुझे उम्मीद थी कि AVPlayer में कुछ संपत्ति बदलेगी जब नेटवर्क कनेक्शन खराब हो जाएगा/ठीक हो जाएगा, लेकिन कुछ भी नहीं बदलता है (status, error आदि)।

स्पष्ट रूप से मैं Reachability पर निगरानी रख सकता हूं, लेकिन यह तब काम नहीं करता जब ऐप पृष्ठभूमि में चल रहा हो।

मुझे कैसे पता चलेगा कि नेटवर्क कब बैक अप आता है और AVQueuePlayer इस स्थिति में फिर से बजाने योग्य है?

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

+0

एक ही समस्या होने के बाद। क्या आपको इसका कोई समाधान मिला? – adamsfamily

उत्तर

0

आप AVPlayerItemPlaybackStalledNotification पर नजर रखने को पता है सकते हैं जब आइटम अपने बफर लेकिन संपूर्ण फ़ाइल को चलाते समय समाप्त हो गया:

[[NSNotificationCenter defaultCenter] 
     addObserver:self 
     selector:@selector(AVPlayerItemPlaybackStalledNotification:)             
     name:AVPlayerItemPlaybackStalledNotification object:playerItem]; 

वहाँ जारी रखने के लिए पर्याप्त बफर के बाद, आपको एक अधिसूचना playbackLikelyToKeepUp को भेजी जिसमें यह आप की तरह लगता है मिलना चाहिए पहले से ही निगरानी कर रहा हूँ।