我的第一个倾向是每次打开应用程序时都会播放一个静音剪辑,以便控制遥控器.我必须这样做的事实让我想知道,如果我甚至被苹果允许这样做,或者如果有另一种方式来实现这一点,而不用假的音频剪辑欺骗系统.
问题:苹果是否会批准播放静音音频剪辑的应用程序,以便控制远程/锁定屏幕控件,以控制其他设备的音频?在没有音频会话的情况下是否有任何方式来控制遥控器?
附:我更喜欢在iOS 4.0及更高版本上使用此功能.
我看到了this similar question,它已经让我头脑风暴,但提供的答案并不是我需要知道的具体内容.
解决方法 注意:从iOS 7.1开始,您应该使用 MPRemoteCommandCenter而不是下面的答案.您创建的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文件将有助于实现您的目标.
总结以上是内存溢出为你收集整理的objective-c – 接收无音频的遥控事件全部内容,希望文章能够帮你解决objective-c – 接收无音频的遥控事件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)