V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
kisscat2013
V2EX  ›  iDev

iOS 耳机 BLE 命令能实现接听/挂断系统电话吗?

  •  
  •   kisscat2013 · 3h 54m ago · 196 views
    现在是有这么一个场景,我们自己的蓝牙耳机通过双击/三击是可以接听和挂断系统电话的,然后我们 leader 希望能在 App 中通过指令来实现接听/挂断。
    耳机使用的是纯自定义 BLE 协议 ,没有实现标准 HFP 协议连接的蓝牙耳机,非来电情况下,BLE 指令执行的都没问题,来电时音频路由被系统自动切换了,不是 A2DP ,这就导致我们的 BLE 指令执行了但是没效果,无法实现接听和拒接。

    耳机厂商回复的是,耳机通过 sco 传输音频,来电场景和正常场景有冲突,所以不做通话按键指令。安卓表示非 sco 模式下可以挂断接听,现在问题压力给到我们 iOS 了。
    怎么办呀?
    v1
        1
    v1  
       2h 0m ago
    没有办法,ios 根本没有办法,只能强制走 HFP 协议才行

    你就是使用 CallKit 来接管系统通话界面,然后通过 BLE 指令触发 CallKit 的接听/挂断动作,也只能控制 App 发起的 VoIP 通话,无法控制系统自带的电话来电。
    v1
        2
    v1  
       1h 59m ago
    就直白告诉 leader ,iOS 系统出于安全和隐私考虑,禁止 App 通过自定义 BLE 指令接听/挂断系统电话。
    这是系统架构层面的限制,不是实现问题。
    如果一定要实现,需要耳机侧支持标准 HFP 协议。
    kisscat2013
        3
    kisscat2013  
    OP
       1h 44m ago
    @v1 是的,现在问题抛给耳机厂商了,看他们那边怎么回吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3478 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 11:39 · PVG 19:39 · LAX 04:39 · JFK 07:39
    ♥ Do have faith in what you're doing.