首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Siri将“暂停”而不是“播放”AVPlayer

Siri将“暂停”而不是“播放”AVPlayer
EN

Stack Overflow用户
提问于 2020-04-22 12:33:19
回答 1查看 381关注 0票数 0

我正在制作一个iOS无线电应用程序。我希望能够使用Siri暂停和播放,一旦它已经在播放(Siri不需要启动应用程序,只要控制音频,一旦它已经启动)。现在,“暂停”从我的手机(但不是从我的手表)在iOS工作,但我不能让它“播放”,一旦它暂停,即使我仍然看到我的锁定屏幕上的播放器。锁定屏幕控制在点击时工作良好。

以下是一些可能相关的代码:

代码语言:javascript
复制
func setupRemoteCommandCenter() {
    let commandCenter = MPRemoteCommandCenter.shared()


    // MARK: PLAY/PAUSE
    commandCenter.togglePlayPauseCommand.addTarget { event in
        self.togglePlayPause()
        return .success
    }


    // MARK: Skip
    func skipBackward(_ event: MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus {
        guard let command = event.command as? MPSkipIntervalCommand else {
            return .noSuchContent
        }

        goBackward15()

        return .success
    }

    let skipBackwardCommand = commandCenter.skipBackwardCommand
    skipBackwardCommand.isEnabled = !playingLivestream
    skipBackwardCommand.addTarget(handler: skipBackward)
    skipBackwardCommand.preferredIntervals = [-15]

    func skipForward(_ event: MPRemoteCommandEvent) -> MPRemoteCommandHandlerStatus {
        guard let command = event.command as? MPSkipIntervalCommand else {
            return .noSuchContent
        }

        goForward30()

        return .success
    }

    let skipForwardCommand = commandCenter.skipForwardCommand
    skipForwardCommand.isEnabled = !playingLivestream
    skipForwardCommand.addTarget(handler: skipForward)
    skipForwardCommand.preferredIntervals = [30]        
}

@objc func handleInterruption(notification: Notification) {
    guard let userInfo = notification.userInfo,
        let typeValue = userInfo[AVAudioSessionInterruptionTypeKey] as? UInt,
        let type = AVAudioSession.InterruptionType(rawValue: typeValue) else {
            return
    }

    if type == .began {
        print("Interruption began")
        // Interruption began, take appropriate actions
    }
    else if type == .ended {
        if let optionsValue = userInfo[AVAudioSessionInterruptionOptionKey] as? UInt {
            let options = AVAudioSession.InterruptionOptions(rawValue: optionsValue)
            if options.contains(.shouldResume) {
                // Interruption Ended - playback should resume
                print("Interruption Ended - playback should resume")
                play()
            } else {
                // Interruption Ended - playback should NOT resume
                print("Interruption Ended - playback should NOT resume")
                playerPaused = true
            }
        }
    }
}

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-23 02:15:49

我注意到您在命令中心实现了playpause,但没有实现playpause。你可能需要他们三个人。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61365219

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档