objective-c – 接收无音频的遥控事件

前端之家收集整理的这篇文章主要介绍了objective-c – 接收无音频的遥控事件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这是一些背景信息,否则以粗体方式跳过问题.我正在构建一个应用程序,我希望它可以访问遥控器/锁屏幕事件.棘手的部分是这个应用程序不会播放音频,它控制附近的另一个设备的音频.当应用程序在前台时,设备之间的通信不是问题.正如我刚刚发现的,应用程序在播放音频与播放音频会话之前不会控制遥控器,而是最后一个.这是一个问题,因为像我说的,应用程序控制其他设备的音频,不需要自己玩.

我的第一个倾向是每次打开应用程序时都会播放一个静音剪辑,以便控制遥控器.我必须这样做的事实让我想知道,如果我甚至被苹果允许这样做,或者如果有另一种方式来实现这一点,而不用假的音频剪辑欺骗系统.

问题:苹果是否会批准播放静音音频剪辑的应用程序,以便控制远程/锁定屏幕控件,以控制其他设备的音频?在没有音频会话的情况下是否有任何方式来控制遥控器?

附:我更喜欢在iOS 4.0及更高版本上使用此功能.

我看到了this similar question,它已经让我头脑风暴,但提供的答案并不是我需要知道的具体内容.

解决方法

注意:从iOS 7.1开始,您应该使用 @L_404_1@而不是下面的答案.

您创建的MPRemoteCommand多种系统提供的子类,并将其分配到[MPRemoteCommandCenter sharedCommandCenter]的性质.

我保持这个周围人的休息历史参考,但下面不保证最近的iOS版本.事实上,它可能不会.

您绝对需要音频播放器,但不一定是显式会话来控制遥控器事件. (AVAudioSession对任何播放音频的应用程序都是隐含的).我花了大量的时间玩这个来确认这一点.

我在互联网上看到了很多关于在哪里设置removeControlEventRecievedWithEvent:方法和响应者链的各种方法的混乱.我知道这种方法适用于iOS 6和iOS 7.其他方法没有.不要浪费时间处理应用程序委托(他们曾经工作的地方)中的远程控制事件,或者在应用程序的生命周期内可能会消失的视图控制器.

我做了a demo project来展示如何做到这一点.

这是一个很快就会发生什么:

>您需要创建一个UIApplication的子类.当文档说UIResponder时,这意味着UIApplication,因为你的应用程序类是UIResponder的子类.在这个子类中,你将要实现remoteControlReceivedWithEvent:和canBecomeFirstResponder方法.你想从canBecomeFirstResponder返回YES.在遥控方法中,您可能希望通知您的音频播放器有所改变.
>您需要告诉iOS使用自定义类来运行应用程序,而不是默认的UIApplication.要这样做,打开main.m并更改:

return UIApplicationMain(argc,argv,nil,NSStringFromClass([RCAppDel`egate class]));

看起来像这样:

return UIApplicationMain(argc,NSStringFromClass([RCApplication class]),NSStringFromClass([RCAppDelegate class]));

在我的情况下,RCApplication是我的自定义类的名称.使用您的子类的名称.不要忘记#import输入相应的标题.
>可选:您应该配置音频会话.这不是必需的,但如果没有,如果手机静音,音频将不会播放.我在演示应用程序的代表中做到这一点,但是在适当的时候这样做.
>玩东西直到你这样做,遥控器将忽略你的应用程序.我刚刚拿起一个AVPlayer,并给出了我期待的流媒体网站的URL.如果你发现它失败了,把你自己的URL放在那里,并用它来处理你的心脏的内容.

这个例子有一些更多的代码来注销远程事件,但并不是那么复杂.我只是定义并传递一些字符串常量.

我敢打赌,一个无声循环的MP3文件将有助于实现您的目标.

猜你在找的C&C++相关文章