从Web链接启动iTunes时,Phonegap Media Object停止播放

时间:2013-03-13 14:25:04

标签: cordova audio ios6 uiwebview itunes

我们有一个Phonegap应用程序(目前仅限iPhone),它使用HTML5音频标签(用于流媒体)和Media对象(用于播放本地存储的mp3)。它们都提供了到iTunes商店的网络链接。

过去情况(至少使用Media对象)即使应用程序由于另一个应用程序正在启动或者正在加载itunes链接而背景化,音频也会继续播放。这只是通过在项目配置中向UIBackgroundModes添加“audio”来实现的。 (info.plist中)

据我所知,随着iOS6的出现,这已经发生了变化:UIWebView: HTML5 audio pauses in iOS 6 when app enters background

这解决了HTML5音频的问题(即当我使用网络链接启动itunes时,流音频继续播放)但是对于Media对象 - 当我按照itunes链接时音频仍然会被切断。奇怪的是,当我使用itms-apps://而不是http://时,音频不会被切断,但它会启动应用程序商店而不是iTunes。换句话说,itunes是导致音频切断的唯一应用程序,但是当它从Media对象播放时仅

有谁知道为什么启动iTunes可能会削减Media对象产生的音频,而其他应用却没有?

1 个答案:

答案 0 :(得分:0)

似乎问题只发生在通过Cordova WebView启动iTunes时,即使用以下方法之一:

url = 'https://itunes.apple.com/gb/album/elliphant-ep/id590384846'

1. window.location.href = url
2. window.open(url);
3. window.open(url , '_self');

解决方案是让它使用另一个应用程序启动itunes:

window.open(url , '_system');

将打开系统浏览器中的url,系统拦截itunes链接,itunes通过系统浏览器启动。

w = window.open(url, '_blank');

将强制url在InAppBrowser中启动,系统再次拦截itunes链接,并通过InAppBrowser启动itunes。这是一个更丑陋的解决方案,因为InAppBrowser不会自动关闭,当用户返回应用程序时,InAppBrowser仍然可见。要关闭它,需要调用w.close()