如何禁用VLCMediaPlayer错误AlertView?

我正在使用MobileVLCKit库中的VLCMediaPlayer类来创buildaudiostream应用程序。 我的问题是,当错误发生(如不正确的streamurl),它会自动提醒自己的错误信息。 在我的情况下,我想禁用该警报消息,并显示我自己的。

VLCMediaPlayer错误消息

无需从源代码中删除此选项! 只需传递这样的播放器选项:

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

我通过VLC源代码中的VLCLibrary.m解决了这个问题,并删除了这一行:

 @"--extraintf=ios_dialog_provider"]; 

从_defaultOptions调用。

删除它,再次编译库,你不会看到更多的消息。

与MobileVLCKit的最近(MobileVLCKit-prod 2.7.9)你可以在一些对象上实现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; ... 

您的Dialog Provider的实现可以显示任何对话框,或根本没有。 “只logging但不显示任何”版本的委托方法的例子

 #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); }