问题描述
我想从 Custom Keyboard Extension
中访问蓝牙设备。
但是,CBCentralManager
将始终处于 .unsupported
状态。我在 RequestsOpenAccess
中启用了 info.plist > NSExtension
。
有没有其他人遇到过同样的问题?
我的代码如下。它基于 Apple 的默认 Custom Keyboard Extension
目标代码。
class KeyboardViewController: UIInputViewController {
@IBOutlet var nextKeyboardButton: UIButton!
internal var manager: BLManager?
override func viewDidLoad() {
super.viewDidLoad()
// Perform custom UI setup here
self.nextKeyboardButton = UIButton(type: .system)
self.nextKeyboardButton.setTitle(NSLocalizedString("Next Keyboard",comment: "Title for 'Next Keyboard' button"),for: [])
self.nextKeyboardButton.sizetoFit()
self.nextKeyboardButton.translatesAutoresizingMaskIntoConstraints = false
self.nextKeyboardButton.addTarget(self,action: #selector(handleInputModeList(from:with:)),for: .allTouchEvents)
self.view.addSubview(self.nextKeyboardButton)
self.nextKeyboardButton.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
self.nextKeyboardButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("> BL - Keyboard")
manager = BLManager.shared
}
override func viewWillLayoutSubviews() {
self.nextKeyboardButton.isHidden = !self.needsInputModeSwitchKey
super.viewWillLayoutSubviews()
}
}
带有相应的 BLManager
对象。
internal class BLManager: NSObject,CBCentralManagerDelegate {
public static var shared: BLManager = BLManager()
public var manager: CBCentralManager
override init() {
manager = CBCentralManager(delegate: nil,queue: nil)
super.init()
manager.delegate = self
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if central.state == .poweredOn {
manager.scanForperipherals(withServices: nil,options: nil)
}
print("> BL \(central.state)")
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)