检查 CBPeripheralManager.authorizationStatus() 现已弃用

Checking CBPeripheralManager.authorizationStatus() now that it is deprecated

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

CBPeripheralManagerDelegateperipheralManagerDidUpdateState 但永远不会 returns unauthorized 无论用户是否授予权限,而只有 returns poweredOnpoweredOff

CBCentralManagerCBPeripheralManager 继承自 CBManager

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

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

上有条件地使用 authorization

请注意,Apple 在 13.0 和 13.1

之间更改了 CBManager API
  • 在 13.0 中 authorization 是一个实例 属性。
  • 在 13.1 中 authorization 是一个类型 (class) 属性。

13.0 实例属性has been marked as deprecated.