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