8

में नहीं, मैं SOAP web service का उपयोग कर अपने सर्वर में लॉगिन करता हूं। एक बार लॉग इन करने के बाद, मैं देख रहा हूं कि कई फाइलें केवल लॉग इन उपयोगकर्ता के लिए उपलब्ध हैं, इसलिए आईओएस को NSURL या कुछ में सत्र बनाना होगा।आईओएस: वीडियो चलाने के लिए जो प्रमाणीकरण की आवश्यकता है QuickLook में काम करता है लेकिन MPMoviePlayerViewController

जब एक वीडियो फ़ाइल MPMoviePlayerViewController का उपयोग कर यह काम नहीं करेगा पूर्वावलोकन करने के लिए कोशिश कर रहा है, यह सिर्फ ViewController अप लोड हो जाता है, तो यह खारिज।

यदि मैं QuickLook का उपयोग करता हूं तो यह काम करता है, शायद इसलिए कि मैं स्थानीय रूप से वीडियो डाउनलोड करता हूं, फिर इसे देखें।

लेकिन, मैं इसे इस तरह से करने के लिए नहीं करना चाहते, मैं वीडियो MPMoviePlayerViewController का उपयोग कर, क्योंकि मैं उपयोगकर्ता एक पूरे वीडियो फ़ाइल डाउनलोड करने के लिए है नहीं करना चाहती स्ट्रीम करने के लिए चाहते हैं। मैंने NSURLCredential का उपयोग करने के बारे में पोस्ट देखी हैं लेकिन यह मेरे लिए काम नहीं कर रहा है।

/** 
* Play media session 
* 
* @version $Revision: 0.1 
*/ 
- (void)playMediaWithURL:(NSString *)mediaURL { 

    // Authenticate 
    NSURLCredential *credential = [NSURLCredential credentialWithUser:@"myusername" 
                  password:@"mypassword" 
                  persistence:NSURLCredentialPersistenceForSession]; 

    NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] 
              initWithHost:@"mysite.com" 
              port:80 
              protocol:@"http" 
              realm:nil 
              authenticationMethod:NSURLAuthenticationMethodDefault]; 

    [[NSURLCredentialStorage sharedCredentialStorage] setDefaultCredential:credential forProtectionSpace:protectionSpace]; 

    // The movie player 
    NSURL *movieURL = [NSURL URLWithString:[mediaURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
    MPMoviePlayerViewController *tempPlayer = [[MPMoviePlayerViewController alloc]initWithContentURL:movieURL]; 

    // Add observer 
    [[NSNotificationCenter defaultCenter] 
     addObserver:self 
     selector:@selector(moviePlayBackDidFinish:) 
     name:MPMoviePlayerPlaybackDidFinishNotification object:nil]; 

    // Properties 
    tempPlayer.moviePlayer.allowsAirPlay = YES; 
    tempPlayer.moviePlayer.shouldAutoplay = YES; 
    tempPlayer.moviePlayer.useApplicationAudioSession = NO; 
    [self presentMoviePlayerViewControllerAnimated:tempPlayer]; 
    [tempPlayer.moviePlayer play]; 

}//end 

के बाद से इस वीडियो को केवल एक उपयोगकर्ता में लॉग इन करके देखा जा सकता है, अगर वीडियो URL एक सार्वजनिक उपयोगकर्ता द्वारा पहुँचा है, वे प्रवेश करने के लिए एक HTML फार्म के साथ प्रस्तुत कर रहे हैं है: मैं (अपने स्वयं के व्यक्तिगत जानकारी स्पष्ट रूप से जोड़ा) का इस्तेमाल किया । क्या NSURLCredential इस मामले में काम नहीं करता है?

मेरे लॉग इन क्रेडेंशियल्स (जैसे वीडियो डाउनलोड करने) का उपयोग करके NSURLConnection काम करने के लिए सभी कॉल क्यों करें, लेकिन MPMoviePlayerViewController उन समान प्रमाण-पत्रों का उपयोग नहीं करते हैं, और वीडियो चलाने से इनकार करते हैं (संभवतः क्योंकि यह लॉगिन प्राप्त करता है पृष्ठ)?

क्या इसका कोई समाधान है?

+0

+1 अच्छे प्रश्न के लिए +1 - उत्तर पर उत्सुक। आम तौर पर, MPMoviePlayerController (जैसे एवीप्लेयर जो पूर्व पर निर्भर करता है) ऐसा साझा, उच्च स्तरीय नेटवर्किंग कार्यक्षमताओं का अधिक उपयोग नहीं करता है। – Till

+0

मैं अपने आईओएस देव समर्थन टिकटों में से एक का उपयोग कर रहा हूं और इस सवाल को ऐप्पल को भेज दिया। देखेंगे कि वे क्या कहते हैं .. –

+0

इस पर कोई खबर? – Till

उत्तर

0

चेक अपने अपाचे config में AuthName, यह realm विशेषता

संपादित करें के लिए एक मूल्य के रूप में अपने NSURLProtectionSpace निर्माता में इसका इस्तेमाल सेट है यदि: क्षमा करें, अपनी टिप्पणी के बारे में फार्म प्रमाणीकरण नहीं देखा। उम्मीद है कि यह बेसिक प्रमाणीकरण

0

हाल ही में, मुझे एक ही समस्या थी जो MPMoviePlayerController को कुकीज़ पास करने में सक्षम नहीं था। मुझे स्टैक ओवरफ़्लो से मिला कि समाधान NSURLProtocol का उपयोग करना है। फिर भी, यह दर्दनाक लग रहा था कि इसे कैसे किया जाए, इसलिए मैंने सोचा कि मैं कोड किए गए समाधान को साझा करके लोगों को कुछ समय बचाऊंगा: https://stackoverflow.com/a/23261001/3547099

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