iOS 10 上的 Cordova 媒体插件是不是仍可使用后台播放?

Posted

技术标签:

【中文标题】iOS 10 上的 Cordova 媒体插件是不是仍可使用后台播放?【英文标题】:Does background playback still work with cordova media plugin on iOS 10?iOS 10 上的 Cordova 媒体插件是否仍可使用后台播放? 【发布时间】:2017-06-19 20:16:53 【问题描述】:

当蓝牙设备超出范围并且 ios 设备处于待机状态(屏幕锁定)或应用程序最小化到后台时,我正在尝试在 Ionic/Cordova 应用程序中播放音频样本。

我正在使用与Cordova media plugin documentation 中的示例类似的功能,具有更正android 设备的音频文件路径的功能:

function getMediaURL(url) 
    if(device.platform.toLowerCase() === "android") return "/android_asset/www/" + url;
    return url;
;

function soundAlarm() 
    var mediaUrl = getMediaURL('sounds/alarm.wav');

    alarmSound = new Media( mediaUrl, null,
    // error callback
    function (err) 
        console.log("playAudio():Audio Error: " + angular.toJson(err));
    );

    alarmSound.play( playAudioWhenScreenIsLocked : true, numberOfLoops: 3 );

当应用程序在前台时,这可以正常工作,但是当我锁定手机或最小化应用程序时,我收到以下错误:

"message":"","code":4

根据Cordova media plugin documentation,错误码4表示

MEDIA_ERR_NONE_SUPPORTED

我传递给 play 方法的“playAudioWhenScreenIsLocked”选项应该可以解决我遇到的问题,但是我每次都遇到上述错误。此外,该属性默认设置为true。

我不想使用后台模式插件,因为该功能应该通过 cordova 媒体插件开箱即用,而后台模式插件可能会导致应用被 App Store 拒绝。

有没有人在应用处于后台或设备处于待机模式时成功触发音频?

【问题讨论】:

你有想过这个吗?我现在面临同样的问题。 【参考方案1】:

我必须启用“背景模式”并检查 Xcode 中的“音频、Airplay 和画中画”才能使其正常工作。

【讨论】:

您在哪里找到“音频、Airplay 和画中画”选项?我不得不使用背景模式插件,只是暂时启用它以允许播放声音。我之所以能够这样做,是因为我的应用程序部分地被来自与应用程序交互的蓝牙设备的事件唤醒,但是在没有背景模式插件的帮助下,应用程序似乎没有足够清醒来播放声音。 I submitted a bug report 但这只是对文档的补充。 它在 XCode 中,在 Project Navigator 中单击您的项目文件。在主窗格中,您现在应该会在顶部看到“常规”、“功能”等。单击“功能”,然后启用并展开“后台模式”。如果这对您有用,请接受未来访问者的答案。 :)

以上是关于iOS 10 上的 Cordova 媒体插件是不是仍可使用后台播放?的主要内容,如果未能解决你的问题,请参考以下文章

ionic Cordova 使用媒体插件在 IOS 上录制音频失败

ios 上的 Cordova 和 Ionic - 设备插件不起作用

Cordova 插件和依赖项

iOS 上的 Cordova 地理围栏和 iBeacon 插件冲突

IOS 11上的Cordova插件地理位置超时

cordova/ios 媒体查询方向从不报告“风景”