0

我们有一个 Phonegap 应用程序(目前仅适用于 iPhone),它同时使用 HTML5 Audio 标签(用于流式传输)和 Media 对象(用于播放本地存储的 mp3)。它们都提供到 iTunes 商店的网络链接。

过去的情况是(至少使用 Media 对象),即使由于启动了另一个应用程序或加载了 iTunes 链接,即使应用程序在后台运行,音频也会继续播放。只需在项目配置中向 UIBackgroundModes 添加“音频”即可实现这一点。(信息.plist)

我知道随着 iOS6 的出现,这种情况发生了变化:UIWebView: HTML5 audio pauses in iOS 6 when app enters background

这解决了 HTML5 音频的问题(即,当我使用网络链接启动 iTunes 时,流式音频继续播放),但对于媒体对象 - 当我点击 iTunes 链接时,音频仍然中断)。奇怪的是,当我使用 itms-apps:// 而不是 http:// 时,音频不会中断,但随后它会启动应用商店而不是 iTunes。换句话说,iTunes 是唯一会导致音频中断的应用程序,但只有在从 Media 对象播放音频时才会如此。

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

4

1 回答 1

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()

于 2013-03-19T23:26:42.067 回答