gpt4 book ai didi

ios - iOS 中的背景音频

转载 作者:行者123 更新时间:2023-12-01 17:09:59 26 4
gpt4 key购买 nike

我正在尝试构建一个 iOS 应用程序(iOS > 5.0)。它应该在用户设置的计时器结束时播放音乐文件。这是我的设置,如果到目前为止完成:

  • 我使用 avplayer
  • 我已将 plist 中的背景模式设置为“应用程序播放音频”
  • 在我的 appDelegate 我有:
    NSError *sessionError = nil;
    [[AVAudioSession sharedInstance] setDelegate:self];
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
  • 在将要播放一首歌曲之前:
    [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&sessionError];
    [[AVAudioSession sharedInstance] setActive:YES error:&sessionError];
  • 我在“playerItemDidPlayToEnd”上通知我的应用程序,停止播放器并告诉其他应用程序(如 music.app)再次激活
    _avPlayer = nil;
    NSError *sessionError = nil;
    [[AVAudioSession sharedInstance] setActive:NO withFlags:AVAudioSessionSetActiveFlags_NotifyOthersOnDeactivation error:&sessionError];

  • 这工作正常。您可以让您的音乐应用在后台播放。我的应用程序开始播放音乐应用程序逐渐消失的歌曲。我的歌曲已播放,如果完成,音乐应用程序将继续播放。但只要我的应用不在后台。

    在后台我得到错误:

    Error Domain=NSOSStatusErrorDomain Code=560161140 "The operation couldn\u2019t be completed. (OSStatus error 560161140.)"



    是否有可能在后台播放(在自定义事件上)和在 f.e. 之间切换这两种组合? music.app 和我的后台应用程序是不可能的?

    这是我的播放器型号的代码: http://pastie.org/4830995

    最佳答案

    我认为您的问题可能与后台处理有关。您需要在应用委托(delegate)上覆盖此功能。

      - (void)applicationDidEnterBackground:(UIApplication *)application
    {
    __block UIBackgroundTaskIdentifier task = 0;
    task=[application beginBackgroundTaskWithExpirationHandler:^{
    NSLog(@"Expiration handler called %f",[application backgroundTimeRemaining]);
    [application endBackgroundTask:task];
    task=UIBackgroundTaskInvalid;
    }];

    }

    除非播放声音,否则您的应用程序将在 6 分钟后被终止。如果您的用户将计时器设置为超过 6 分钟,您可以做的是每 5.5 分钟播放一次简短的声音,以使您的应用程序保持活力并开始新的后台任务。此外,您还必须考虑很多事情不会在后台执行。我做了一些与您正在做的事情有些相似的事情。我所做的是创建 NSObject 的自定义子类来处理音乐播放和应用程序过期的东西。并使其成为我委托(delegate)的强大属性,因为许多功能和通知不会在后台运行在您的 VC 上。

    尽管如果您只想播放声音,这可能不是最好的方法。也许只发送本地通知就可以了。

    希望这有帮助。

    关于ios - iOS 中的背景音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12619227/

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