Leap Bun
Leap Bun

Reputation: 2295

How to disable VLCMediaPlayer error AlertView?

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.

VLCMediaPlayer Error Message

Upvotes: 3

Views: 1865

Answers (3)

Tauri
Tauri

Reputation: 1299

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

Upvotes: 1

NSLeader
NSLeader

Reputation: 354

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

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

Upvotes: 12

shaish
shaish

Reputation: 1499

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.

Upvotes: 0

Related Questions