iOS-App后台运行蓝牙断开连接播放音乐解决方案

       最近在做蓝牙项目,当蓝牙断开连接时需要播放音乐提示。有以下几种情况需要考虑:  

       1、app在前台运行,蓝牙断开播放音乐。

       2、app在前台运行、蓝牙断开播放音乐,锁屏或者是进入后台也能播放。

       3、app在后台运行、蓝牙断开播放音乐。

       前台运行播放音乐比较简单,直接调用播放音乐代码就行,主要是app进入后台运行播放音乐解决方案,ios像后台播放声音就很苦逼了,因为ios的应用切换到后台,应用会被挂起,非特别的应用不能在播放声音。查找了相关资料有以下几种解决方案:

      1、把应用设置成后台播放程序,需要在info.plist文件中加属性值,增加required background modes这个key项,并选择App plays audio or streams audio/video using AirPlay这个value项.如下图

设置截图

或者选中Targets-->Capabilities-->BackgroundModes-->ON,并勾选Audio and AirPlay选项,如下图

iOS-App后台运行蓝牙断开连接播放音乐解决方案_第1张图片
设置截图

       使用后台播放声音测试:

       当你的应用在正播放音乐时进入后台后,继续播放音乐。

       当你的应用进入后台前不播放音乐,那么你的应用在后台播放音乐,对不起你的应用没有任何音乐放出。

        看来后台播放声音就为了播放器专做的,你的应用没事开启这个功能徒增被驳回的风险。为了解决当你的应用进入后台前不播放音乐,那么你的应用在后台播放音乐,没有任何声音放出。我们使用- (void)applicationDidEnterBackground:(UIApplication *)application方法,当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可。具体的做法就是在此方法中发送通知给控制器,让控制器播放音乐,将声音设置成0,当蓝牙断开连接是,将声音设置成1就有声音播放出来,- (void)applicationWillEnterForeground:(UIApplication *)application方法,当程序从后台将要重新回到前台时候调用,在此方法中发送给控制器结束音乐的播放。

       2、通过APNS推送过来的消息中包含有小的声音文件。你的应用收到后会播放这个声音。APNS是针对整个手机的,就是你的手机关机,只要应用不解绑定和服务的PUSH连接,那么你的手机也能收道通知。通过APNS推送过来的消息中设置的大都是default,所以收到的都是一样的声音,你可以修改发送的声音文件的名称,但是它肯定不支持.mp3(已经测试过)。若通过APNS发送声音文件的方式,收到响应超延迟不是一般的大,延迟几分钟也有可能,必定你的声音经过一大圈传输。再加上APNS本来就有漏包率,通过个推丢失和延迟更大些。若你受得了这种延迟可以采用这种方式。

       3、弹出本地通知,并在本地通知中播放音乐。

你可能感兴趣的:(iOS-App后台运行蓝牙断开连接播放音乐解决方案)