2

我有一个watchOS3使用触觉通知的锻炼应用程序。它正确设置为运行锻炼会话,并且在后台运行时触觉工作。但是,如果蓝牙耳机连接到 Apple Watch,那么您只能获得触觉振动或触觉的音频提示,具体取决于应用程序当前是显示在表盘上还是在后台运行。

这是我玩触觉的方式:

WKInterfaceDevice.current().play(.notification)

以下是详细信息:

  • Apple Watch Nike+ 未与耳机配对:无论表盘是打开还是关闭,触觉和提示音都会激活。钟声响亮而清晰。

  • Apple Watch Nike+ 与蓝牙耳机配对: 仅当表盘打开、音频铃声关闭时,触觉才会激活。当表盘关闭时,音频提示音打开,触觉关闭。钟声响亮而清晰。

我测试了将 Apple Watch 与 Platronic Backbeat Go 2(2013 年 7 月发布)和 Bose QuietControl 30(2016 年 10 月发布)配对的应用程序。结果是一样的。

任何人都知道这是一个限制watchOS 3,一个错误,还是我需要做的其他事情?

谢谢,杰夫

4

2 回答 2

0

还有一个因素需要考虑,即主 Watch 静音开关是打开还是关闭。

我发现以下是一个合适的解决方法。

如果您希望在蓝牙耳机上播放音乐时注意到您的音频/触觉,请设置此 AVAudioSession 类别:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)

然后,当您完成音频/触觉后,将 AVAudioSession 重置回:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)

我有这个帮助类来帮助管理状态:

import AVFoundation

enum AudioPlaybackState {
    case playback
    case playbackDuckOthers
}

class AVAudio {
    private init() {}   // strictly a helper class

    static func setAudioState(_ state: AudioPlaybackState) {
        DispatchQueue.main.async {
            do {
                deactivateAudioSession()
                switch state {
                case .playback:
                    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .mixWithOthers)
                case .playbackDuckOthers:
                    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: .duckOthers)
                }
                activateAudioSession()
            } catch {}
        }
    }

    static func deactivateAudioSession() {
        activateAudioSession(false)
    }

    private static func activateAudioSession(_ value: Bool=true) {
        do {
            try AVAudioSession.sharedInstance().setActive(value)
        } catch {}
    }
}

然后,我可以通过以下方式快速切换:AVAudio.setAudioState(.playbackDuckOthers)

于 2017-12-08T11:04:29.977 回答
0

根据 Apple 的说法,问题中记录的行为是其应有的方式。给定的原因是由于使用蓝牙耳机时触觉点击和触觉音频之间的延迟。我希望这种行为在未来有所改变......

于 2017-12-09T13:28:37.117 回答