PhoneGap Media Streaming не работает на iOS

Я использую класс Media телефонного промежутка для потоковой передачи аудио с URL-адреса, формат которого - IP-адрес с портом. На андроиде работает нормально, звук играет. На iOS не играет и не знаю почему. Может кто-нибудь сказать мне, что я делаю не так? Вот функция моего потокового воспроизведения.

function playAudio(src) {
    // Create Media object from src
    setAudioPosition("Please wait...");
    my_media = new Media(src, onSuccess, onError);

    // Play audio
    myMedia.play({ playAudioWhenScreenIsLocked : false })
    $('.jp-play').hide();
    $('.jp-pause').show();
    // Update my_media position every second
    if (mediaTimer == null) {
        mediaTimer = setInterval(function() {
            // get my_media position
            my_media.getCurrentPosition(
                // success callback
                function(position) {
                    if (position > -1) {
                        setAudioPosition("Playing");
                    }
                },
                // error callback
                function(e) {
                    console.log("Error getting pos=" + e);
                    setAudioPosition("Error: " + e);
                }
            );
        }, 1000);
    }
}

В xml проекта я добавил ip сервера в белый список, но опять не работает. Как я могу это исправить?

2 ответа

Здравствуйте, я нашел решение. Я использовал библиотеку devgeeks. Вот ссылка для всех, кто будет иметь ту же проблему https://github.com/devgeeks/ExampleHTML5AudioStreaming

Несколько месяцев назад у меня была та же проблема, проигрыватель телефонной щели не работал на ios, но он работал на андроиде, что сделал для того, чтобы сделать мой проигрыватель нативным (Objetive c) и назвать его со стороны телефонной щели (javascript).

сделав плагин

- (void)play:(CDVInvokedUrlCommand *)command{

NSString* scr = [command.arguments objectAtIndex:0];

CDVPluginResult* pluginResult = nil;
NSString* javaScript = nil;

@try {

    if (scr != nil) {

        if (player.isPreparedToPlay) {


            player.contentURL = [NSURL URLWithString:scr];
            [player play];

        }else {


            MPMoviePlayerController* objplayer =[[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:scr]];

            self.player = objplayer;
            [self.player prepareToPlay];

            player.movieSourceType = MPMovieSourceTypeStreaming;
            player.view.hidden = YES;
            player.useApplicationAudioSession = YES;
            [player play];


        }
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
        javaScript = [pluginResult toSuccessCallbackString:@"respuesta"];
    }
} @catch (id exception) {
    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_JSON_EXCEPTION messageAsString:[exception reason]];
    javaScript = [pluginResult toErrorCallbackString:@"respuesta con error"];
}

[self writeJavascript:javaScript];
}

После этого вы вызываете плагин в config.xml

тогда в вашем JavaScript

Cordova.exec(null, null, "playMusic", "Play", [url,url]);
Другие вопросы по тегам