Bluetooth 触觉不';当蓝牙耳机连接到Apple Watch时,请勿在后台播放

Bluetooth 触觉不';当蓝牙耳机连接到Apple Watch时,请勿在后台播放,bluetooth,apple-watch,watchos,watchos-3,haptic-feedback,Bluetooth,Apple Watch,Watchos,Watchos 3,Haptic Feedback,我有一个使用触觉通知的watchOS3锻炼应用程序。它设置正确,可以在后台运行训练课程和触觉工作。但是,如果将蓝牙耳机连接到apple watch,则仅会收到触觉振动或触觉的音频蜂鸣音,具体取决于应用程序当前是显示在手表表面还是在后台运行 我是这样玩触觉的: WKInterfaceDevice.current().play(.notification) 详情如下: 苹果手表Nike+未配对耳机:触觉和蜂鸣音会激活,无论手表表面是开着还是关着。钟声响亮而清晰 苹果手表Nike+与蓝牙耳机配对:

我有一个使用触觉通知的
watchOS3
锻炼应用程序。它设置正确,可以在后台运行训练课程和触觉工作。但是,如果将蓝牙耳机连接到apple watch,则仅会收到触觉振动或触觉的音频蜂鸣音,具体取决于应用程序当前是显示在手表表面还是在后台运行

我是这样玩触觉的:

WKInterfaceDevice.current().play(.notification)
详情如下:

  • 苹果手表Nike+未配对耳机:触觉和蜂鸣音会激活,无论手表表面是开着还是关着。钟声响亮而清晰

  • 苹果手表Nike+与蓝牙耳机配对: 触觉功能仅在表面波打开、音频蜂鸣音关闭时激活。当手表面关闭时,音频蜂鸣音开启,触觉关闭。钟声响亮而清晰

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

有人知道这是否是watchOS 3的一个限制,一个bug,或者我还需要做些什么吗

谢谢,
杰夫

还有另一个要考虑的因素,那就是主表静音开关是开还是关。

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

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

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

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

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback,带:.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)

根据苹果公司的说法,问题中记录的行为就是它应该是的样子。给出的原因是使用蓝牙耳机时,触觉敲击和触觉音频之间存在延迟。我希望这种行为在将来会有所改变……

下面是我在后台玩触觉游戏的方式,这在最新的WatchOS 6中是否仍然有效?当应用程序以蓝牙耳机为背景播放音乐时,我似乎无法触发任何触觉