How to disable VLCMediaPlayer error AlertView?

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

I am using VLCMediaPlayer class from the MobileVLCKit library to make an audio streaming application. My problem is that when error happens (e.g. incorrect stream url) it automatically alerts its own error message. In my case, I would like to disable that alert message and display my own one.

回答1:

No need to remove this option from source! Simply pass the player option like this:

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


回答2:

I solved this by going to VLCLibrary.m in the VLC source code, and removing this line:

@"--extraintf=ios_dialog_provider"]; 

from the _defaultOptions call.

remove it, compile again the library, and you wont see any more messages.



回答3:

with recent (MobileVLCKit-prod 2.7.9) of MobileVLCKit you can implement VLCCustomDialogRendererProtocol on some object after that

... @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;  ... 

your implementation of Dialog Provider can show any dialog it likes or nothing at all. Example of "just log but show nothing at all" version of delegate methods

#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:             questionTypeString=@"VLCDialogQuestionNormal";             break;         case VLCDialogQuestionWarning:             questionTypeString=@"VLCDialogQuestionWarning";             break;         case VLCDialogQuestionCritical:             questionTypeString=@"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); } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!