现在 CBPeripheralManager.authorizationStatus() 被弃用了,如何检查其状态?

5

CBPeripheralManager.authorizationStatus()CBPeripheralManagerAuthorizationStatus已经在苹果文档中被弃用。现在检查用户是否授予后台使用蓝牙的权限的正确方法是什么?

CBPeripheralManagerDelegate具有peripheralManagerDidUpdateState,但无论用户是否授予了权限,它都不会返回unauthorized,而只会返回poweredOnpoweredOff

2个回答

7
请注意,苹果在13.0和13.1之间更改了CBManager API。
  • 在13.0中,authorization是实例属性。
  • 在13.1中,authorization是类型(class)属性。

13.0的实例属性已被标记为弃用


7

CBCentralManagerCBPeripheralManager继承自CBManager

从iOS 13开始,CBManager有一个authorization属性。您可以检查此属性是否为.allowedAlways

您可以使用if #available(iOS 13.0, *)在iOS 13及更高版本条件下使用authorization


1
没有请求授权的方法。我能以任何方式请求Core Bluetooth授权吗? - Michał Ziobro
当您实例化CBCentralManager对象时,您的应用程序会自动请求蓝牙权限。 - Paulw11
好的,我看到了这个弹出窗口,但是我总是收到“蓝牙未开启”的错误提示,尽管它已经打开了。 - Michał Ziobro
你在哪里遇到了这个错误?是在 didUpdateState 的回调函数里吗?如果有必要,也许你应该提出一个问题,包括相关的代码和屏幕截图。 - Paulw11
在didUpdateState中,我得到了.poweredOn,但是我正在使用来自Estimote的nearable贴纸,然后我返回蓝牙已关闭。我有一个单独的问题。https://stackoverflow.com/questions/58137280/ios-13-estimote-sdk-beacon-ranging - Michał Ziobro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接