How to disable VLCMediaPlayer error AlertView?

前端 未结 3 1120
走了就别回头了
走了就别回头了 2020-12-18 12:35

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 au

相关标签:
3条回答
  • 2020-12-18 13:21

    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.

    0 讨论(0)
  • 2020-12-18 13:34

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

    NSArray *options = @[@"--extraintf="];
    VLCMediaPlayer *player = [[VLCMediaPlayer alloc] initWithOptions:options];
    
    0 讨论(0)
  • 2020-12-18 13:37

    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);
    }
    
    0 讨论(0)
提交回复
热议问题