美文网首页
iOS 蓝牙开发弹窗问题记录

iOS 蓝牙开发弹窗问题记录

作者: 静守幸福 | 来源:发表于2023-01-06 19:11 被阅读0次

App蓝牙权限弹窗一直有问题,最近做了修复做下记录:

开发环境 Xcode14.2 swift 5.0 CoreBluetooth

蓝牙主要有2个参数状态

CBManager 下的 state 和 authorization

state 
public enum CBManagerState : Int, @unchecked Sendable {

    case unknown = 0         //未知状态,即将更新

    case resetting = 1          //与系统服务的连接暂时丢失,即将更新

    case unsupported = 2   // 该平台不支持低功耗蓝牙中央/客户端角色 (还没遇到过)

    case unauthorized = 3   // 该应用程序未被授权使用低功耗蓝牙角色 (拿到这个情况的时候 肯定是用户禁止了你的蓝牙权限 要弹窗 设置权限;)

    case poweredOff = 4      // 蓝牙关闭 (关闭了蓝牙或者在控制中心关闭了蓝牙连接的时候 你获取到的是这个状态 )

    case poweredOn = 5    // 蓝牙打开并且可以连接 (可以愉快的开始开发了)
}

authorization 13.0 到 13.1 是实例方法;13.1 之后是类方法
public enum CBManagerAuthorization : Int, @unchecked Sendable {

    case notDetermined = 0  // 用户还没做出选择

    case restricted = 1    // 此应用程序无权使用蓝牙。 用户无法更改此应用程序的状态,这可能是由于活动限制(例如家长控制到位)所致。

    case denied = 2     // 用户已明确拒绝此应用程序使用蓝牙。 对应用授权不允许(在此种状态下拿到的 state 是 unauthorized 并不能知道当前蓝牙是打开还是关闭的)

    case allowedAlways = 3  // 用户已授权此应用程序始终使用蓝牙 (可以愉快的开始开发了)
}

蓝牙可能的系统弹窗

  • 授权弹窗 应用访问蓝牙的时候会去进行授权弹窗 第一次安装使用蓝牙的时候弹出 在Info.plist 配置权限
    说明: 必弹出
  • 提示打开蓝牙的弹窗
    跟 CBCentralManagerOptionShowPowerAlertKey 这个Key 有关系
    如果在实例化 CBCentralManager 时蓝牙关闭,系统应该显示给用户的警告对话框,弹出一次
    说明:可以关闭 关闭方法 在初始化CBCentralManager 设置options(见下面) 关闭之后 需要自己弹窗了
CBCentralManagerOptionShowPowerAlertKey 默认 是 true 设置成 false 就不提示了
CBCentralManager(delegate: self,  queue: DispatchQueue.main, options:   [CBCentralManagerOptionShowPowerAlertKey: false])

蓝牙权限流程图

按照这个顺序检查弹窗就不会有问题

如果你想先检查蓝牙的状态 state;

  • 当是 poweredOn 或者 poweredOff 的时候,你已经肯定得到了授权;
  • 当是 unauthorized 的时候 证明用户关闭了你的蓝牙授权权限,这时候 你是肯定不知道蓝牙是开启还是关闭的,要先请求权限,获取权限之后,再判断 是poweredOn 或者 poweredOff

相关文章

  • iOS13的蓝牙变化

    一、弹窗逻辑 1.蓝牙权限弹窗 在iOS13中初次调用蓝牙功能系统会调出权限弹窗,提示是否允许使用蓝牙,增加了一...

  • 【Objective-c】_蓝牙开发

    ios蓝牙开发学习笔记(一)蓝牙概述 ios蓝牙开发学习笔记(二)central角色的实现 ios蓝牙开发学习笔记...

  • iOS蓝牙开发(四):BabyBluetooth蓝牙库介绍

    iOS蓝牙开发(四):BabyBluetooth蓝牙库介绍 iOS蓝牙开发(四):BabyBluetooth蓝牙库介绍

  • iOS开发蓝牙4.0初识

    iOS开发蓝牙4.0初识转载 2015-09-20 15:26:44标签:ios开发蓝牙ios开发蓝牙4.0ios...

  • iOS蓝牙开发(一)蓝牙相关基础知识

    iOS蓝牙开发一 iOS蓝牙开发(一)蓝牙相关基础知识 蓝牙常见名称和缩写 MFI ======= make fo...

  • iOS蓝牙开发

    这篇文章主要包括iOS蓝牙开发的简介以及如果进行蓝牙开发, 具体的蓝牙知识不再详细介绍了. iOS蓝牙开发的实现基...

  • iOS蓝牙开发

    iOS蓝牙开发

  • iOS 蓝牙授权自定义弹窗提示

    1、自定义弹窗的初衷? 蓝牙授权位置如下图: 2、解决授权重复弹窗、不弹窗的问题. (1) 蓝牙授权需在info....

  • iOS蓝牙开发学习笔记 - 系列

    详见我的csdn: iOS蓝牙开发学习笔记(一)蓝牙概述 iOS蓝牙开发学习笔记(二)central角色的实现 i...

  • iOS蓝牙开发记录

    在公司待的一年多时间里,做了几个蓝牙、Wi-Fi通讯的项目,碍于时间关系一直没有做整理工作,现在稍微闲下来...

网友评论

      本文标题:iOS 蓝牙开发弹窗问题记录

      本文链接:https://www.haomeiwen.com/subject/zmwscdtx.html