2014-09-28 2 views
3

Я использую класс VLCMediaPlayer из библиотеки MobileVLCKit, чтобы сделать приложение для потоковой передачи звука. Моя проблема заключается в том, что когда происходит ошибка (например, неправильный URL-адрес потока), он автоматически предупреждает о своем собственном сообщении об ошибке. В моем случае я хотел бы отключить это предупреждающее сообщение и отобразить его собственное.Как отключить ошибку VLCMediaPlayer AlertView?

VLCMediaPlayer Error Message

ответ

11

Не нужно удалить этот параметр из источника! Просто передайте вариант игрока, как это:

NSArray *options = @[@"--extraintf="]; 
VLCMediaPlayer *player = [[VLCMediaPlayer alloc] initWithOptions:options]; 
+0

Спасибо большое !! Может быть, вы можете еще раз помочь :) Как я могу поймать ошибку с делегатом, если это произойдет? Я попробовал '- (void) mediaPlayerStateChanged: (NSNotification *) aNotification', но не смог получить ошибку ... Спасибо – oleynikd

+0

Я хочу купить вам пиво – MrBr

0

Я решил эту проблему, перейдя в VLCLibrary.m в исходном коде VLC, и удаление этой строки:

@"--extraintf=ios_dialog_provider"]; 

от _defaultOptions позвонить.

удалите его, скомпилируйте библиотеку, и вы больше не увидите никаких сообщений.

0

с недавним (MobileVLCKit-прод 2.7.9) из MobileVLCKit вы можете реализовать VLCCustomDialogRendererProtocol на какой-либо объект после этого

... 
@property (nonatomic, strong) VLCDialogProvider * dialogProvider; 
.... 
     //dump information 
     VLCLibrary * lib=[VLCLibrary sharedLibrary]; 

     //configure dialog provider 
     self.dialogProvider=[[VLCDialogProvider alloc] initWithLibrary:lib customUI:YES]; 
     self.dialogProvider.customRenderer=self; 

... 

вашей реализации Диалог поставщика может показать любой диалог, который ему нравится, или вообще ничего. Пример «просто войти, но ничего не показывают вообще» версия методов делегата

#pragma mark - VLCCustomDialogRendererProtocol methods 

/** 
* called when VLC wants to show an error 
* \param the dialog title 
* \param the error message 
*/ 
- (void)showErrorWithTitle:(NSString * _Nonnull)error 
        message:(NSString * _Nonnull)message { 
    CLogERROR(LOGDOMAIN_MINIPLAYER,@"VLC Error:%@:%@",error,message); 
} 

/** 
* called when user logs in to something 
* If VLC includes a keychain module for your platform, a user can store stuff 
* \param login title 
* \param an explaining message 
* \param a default username within context 
* \param indicator whether storing is even a possibility 
* \param reference you need to send the results to 
*/ 
- (void)showLoginWithTitle:(NSString * _Nonnull)title 
        message:(NSString * _Nonnull)message 
      defaultUsername:(NSString * _Nullable)username 
      askingForStorage:(BOOL)askingForStorage 
      withReference:(NSValue * _Nonnull)reference { 

    CLogWARN(LOGDOMAIN_MINIPLAYER,@"VLC login request:title:%@,message:%@,username:%@ reference:%@",title,message,username,reference); 
    //we should respond with postUsername... but we can't...and we are not supposed to so anyway 

} 

/** 
* called when VLC needs the user to decide something 
* \param the dialog title 
* \param an explaining message text 
* \param a question type 
* \param cancel button text 
* \param action 1 text 
* \param action 2 text 
* \param reference you need to send the action to 
*/ 
- (void)showQuestionWithTitle:(NSString * _Nonnull)title 
         message:(NSString * _Nonnull)message 
         type:(VLCDialogQuestionType)questionType 
       cancelString:(NSString * _Nullable)cancelString 
       action1String:(NSString * _Nullable)action1String 
       action2String:(NSString * _Nullable)action2String 
       withReference:(NSValue * _Nonnull)reference { 

    NSString * questionTypeString; 
    switch (questionType) { 
     case VLCDialogQuestionNormal: 
      [email protected]"VLCDialogQuestionNormal"; 
      break; 
     case VLCDialogQuestionWarning: 
      [email protected]"VLCDialogQuestionWarning"; 
      break; 
     case VLCDialogQuestionCritical: 
      [email protected]"VLCDialogQuestionCritical"; 
      break; 
    } 
    CLogWARN(LOGDOMAIN_MINIPLAYER,@"VLC Question:Type:%@ Title:%@ Message:%@, cancel:%@,action1:%@,action2:%@,reference:%@", 
       questionTypeString, title,message,cancelString,action1String,action2String,reference); 
    //just cancel 
    [self.dialogProvider postAction:3 forDialogReference:reference]; 
} 

/** 
* called when VLC wants to show some progress 
* \param the dialog title 
* \param an explaining message 
* \param indicator whether progress indeterminate 
* \param initial progress position 
* \param optional string for cancel button if operation is cancellable 
* \param reference VLC will include in updates 
*/ 
- (void)showProgressWithTitle:(NSString * _Nonnull)title 
         message:(NSString * _Nonnull)message 
       isIndeterminate:(BOOL)isIndeterminate 
        position:(float)position 
       cancelString:(NSString * _Nullable)cancelString 
       withReference:(NSValue * _Nonnull)reference { 
    CLogWARN(LOGDOMAIN_MINIPLAYER,@"VLC Progress:Title:%@ Message:%@, cancel:%@, position:%f,reference %@",title,message,cancelString,position,reference); 
    //just try to cancel 
    [self.dialogProvider dismissDialogWithReference:reference]; 

} 

/** called when VLC wants to update an existing progress dialog 
* \param reference to the existing progress dialog 
* \param updated message 
* \param current position 
*/ 
- (void)updateProgressWithReference:(NSValue * _Nonnull)reference 
          message:(NSString * _Nullable)message 
          postion:(float)position { 
    CLogWARN(LOGDOMAIN_MINIPLAYER,@"VLC Progress update:Message:%@, position:%f,reference:%@",message,position,reference); 
    //just try to cancel 
    [self.dialogProvider dismissDialogWithReference:reference]; 
} 

/** VLC decided to destroy a dialog 
* \param reference to the dialog to destroy 
*/ 
- (void)cancelDialogWithReference:(NSValue * _Nonnull)reference { 
    CLogWARN(LOGDOMAIN_MINIPLAYER,@"VLC cancel dialog,referecne %@... ok",reference); 
} 
Смежные вопросы