gpt4 book ai didi

ios - 切换音乐应用后应用不再接收来自锁屏的控制事件

转载 作者:行者123 更新时间:2023-11-29 11:33:50 26 4
gpt4 key购买 nike

我正在构建一个使用 AVPlayer 的应用程序,并设置为在应用程序处于后台时使用锁定屏幕控件进行操作。我已经适本地实现了以下内容:

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

[[AVAudioSession sharedInstance] setActive: YES error: &error];

并且我已经正确配置了 MPNowPlayingInfoCenter

我遇到的一个错误是,当我希望在从另一个应用程序(例如 Spotify)播放音乐后继续播放时,锁定屏幕的控件无法工作。为了重现此错误,我开始从我的应用程序播放音频,其中 setActive 在我的 AVPlayer 播放时被调用。然后我切换到 Spotify 并播放歌曲,此时我的音频逐渐减弱并暂停。几秒钟后,我切换回我的应用程序并恢复我的音频。当我锁定我的设备并按下锁定屏幕上的按钮时,我会在屏幕上看到我的音频信息,但我的所有控件都无法正常工作。

beginReceivingRemoteControlEvents 在启动时在我的 appDelegate 的 applicationDidBecomeActive

中调用

我的 appDelegate 的 dealloc 方法中确实有 endReceivingRemoteControlEvents(这是我继承的遗留代码),但在这种情况下不会调用它。

编辑:我忘了注意,我正在运行 iOS11.4 的 iPad 上进行测试

编辑 2:抱歉,我没有提到这在更新到 iOS11.4 之前工作正常

编辑 3: 我发现了问题,这是一个埋在我们遗留代码中的 bool 标志,没有被重置

最佳答案

我们商店里有音乐播放器,所以我想试试你的问题。

尝试 MyApp > Spotify > MyApp 您定义的路由后,我无法重现该错误。信息中心按钮工作正常。

我们在 applicationDidEnterBackground 调用 beginReceivingRemoteControlEvents。此时我们还调用了 addTargetWithHandler。和 endReceivingRemoteControlEventsapplicationDidBecomeActive。像这样:

- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

MPRemoteCommandCenter *remoteCommandCenter = [MPRemoteCommandCenter sharedCommandCenter];

[remoteCommandCenter.playCommand addTargetWithHandler:^MPRemoteCommandHandlerStatus (MPRemoteCommandEvent *event) {
//....
}];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
}

当您的应用程序在后台运行时,会使用 MPRemoteCommandCenter 的性质。

问题可能出在事物的顺序上。

关于ios - 切换音乐应用后应用不再接收来自锁屏的控制事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51065881/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com