ios – remoteControlReceivedWithEvent在模拟器中工作,但不在设备中工作

ios – remoteControlReceivedWithEvent在模拟器中工作,但不在设备中工作,第1张

概述我正在开发一个将从iPod库播放音乐的应用程序.我正在通过MPMediaPlayerController播放音乐,方法是从表中检索所选项目并将其传递给详细视图控制器: MPMediaItem *item = (MPMediaItem *)self.detailItem;MPMediaItemCollection *collection = [[MPMediaItemCollection allo 我正在开发一个将从iPod库播放音乐的应用程序.我正在通过MPMediaPlayerController播放音乐,方法是从表中检索所选项目并将其传递给详细视图控制器:

MPMediaItem *item = (MPMediaItem *)self.detailitem;MPMediaItemCollection *collection = [[MPMediaItemCollection alloc] initWithItems:@[item]];[self.musicPlayer setQueueWithItemCollection:collection];[self.musicPlayer play];

哪个开始播放音乐.我在Info.pList中设置了以下值以启用后台使用:

uibackgroundmodes >Item 0 - audio

这很有效.当我关闭我的应用程序时,音乐一直在播放.所以现在我试图让控制中心的音频控件向我的应用程序发送消息,所以经过一些阅读后我发现我需要做一些事情.所以我创建了UIResponder的子类并添加了以下行:

- (BOol)canBecomeFirstResponder {    return YES;}- (voID)remoteControlReceiveDWithEvent:(UIEvent *)event {    NSLog(@"CustomApp:remoteControlReceiveDWithEvent:%@",event.description);}

我让我的AppDelegate成为自定义UIResponder的子类,我有这个:

- (BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions {        self.window = [[MainWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];    self.mainVIEwController = [[browserVIEwController alloc] initWithNibname:nil bundle:nil];    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootVIEwController:self.mainVIEwController];    self.window.rootVIEwController = navigationController;    self.window.backgroundcolor = [UIcolor whitecolor];    [self.window makeKeyAndVisible];    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];    [self becomeFirstResponder];    return YES;}

还有这个

- (voID)applicationDIDEnterBackground:(UIApplication *)application {    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];    [self becomeFirstResponder];}

现在,我在这里的原因是因为这可以在模拟器中工作,但不是设备,我无法弄清楚原因.如果我在模拟器中启动它并打开控制中心并开始按下音频控件,我的自定义UIResponder中的NSLog会显示在调试器中,但在设备上却没有.实际发生的是播放/暂停按钮什么都不做,然后如果我按下一个或上一个按钮,它会转到我的iPod应用程序上的下一个或上一个音轨并开始播放.

似乎这个等式中有一些小的遗漏,但我无法弄明白.我尽可能地搜索了文档,但找不到与此情况相关的任何内容,并且有关此特定功能的文档似乎非常有限.

解决方法 我知道这个答案很老但我在iOS 10中遇到了同样的问题.我的模拟器正确显示了锁屏音频控件,但实际设备却没有.对我来说,修复是为了确保在设置AVAudioSession的类别时我没有分配选项:AVAudioSessioncategoryOptionMixWithOthers.

这足以让我的设备无法显示我的锁屏音频控件.所以最后我的解决方案如下:

[[AVAudioSession sharedInstance] setcategory:AVAudioSessioncategoryPlayback withOptions:AVAudioSessioncategoryOptionDefaultToSpeaker|AVAudioSessioncategoryOptionAllowAirPlay|AVAudioSessioncategoryOptionAllowBluetooth|AVAudioSessioncategoryOptionAllowBluetoothA2DP error:&error];
总结

以上是内存溢出为你收集整理的ios – remoteControlReceivedWithEvent在模拟器中工作,但不在设备中工作全部内容,希望文章能够帮你解决ios – remoteControlReceivedWithEvent在模拟器中工作,但不在设备中工作所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1025766.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存