如何为可变特征创建描述符?

2024-04-06

的文档CBMutableDescriptor:initWithType:value:表示为类型参数传递“标识特征的 128 位 UUID”。然后它继续说你应该只使用其中之一CBUUIDCharacteristicUserDescriptionString or CBUUIDCharacteristicFormatString对于类型参数。最后,没有方法将描述符添加到可变特征。

看来该参数正在做两件互斥的事情。一方面,它用于告诉操作系统描述符适用于哪个特征,另一方面,它用于设置描述符的类型。第二个更有意义,但是如何将描述符添加到特征中呢?

无论您传递特征的 UUID 还是CBUUIDCharacteristicUserDescriptionString, iOS 崩溃

Assertion failure in -[CBMutableDescriptor initWithType:value:], /SourceCache/CoreBluetooth_Sim/CoreBluetooth-59.3/CBDescriptor.m:25

创建 CBMutableDescriptor 并将其添加到 CBMutableCharacteristic 的正确方法是什么?


您对文档的看法是正确的。但为了让大家清楚,以下是 CBDescriptor.h 中的引用:

...只有特征用户描述和特征 当前支持表示格式描述符。这 特征扩展属性和客户端特征 配置描述符将自动创建 父服务的发布,取决于父服务的属性 本身的特点。

换句话说,除非您设置这些描述符,否则系统将阻止您(这就是您断言失败的原因)。

假设您想使用特征用户描述描述符,您可以这样做:

CBUUID *yourCharUUID = [CBUUID UUIDWithString:@"c07c5050-15a0-11e3-8ffd-0800200c9a66"];//whatever UUID your using

CBMutableCharacteristic *yourCharacteristic = [[CBMutableCharacteristic alloc]initWithType:yourCharUUID properties:CBCharacteristicPropertyWriteWithoutResponse value:nil permissions:perms];

CBUUID *userDescriptionUUID = [CBUUID UUIDWithString:CBUUIDCharacteristicUserDescriptionString];//or set it to the actual UUID->2901

CBMutableDescriptor *yourDescriptor = [[CBMutableDescriptor alloc]initWithType:userDescriptionUUID value:@"myDescriptorValue"];

yourCharacteristic.descriptors = @[yourDescriptor];

如果您有任何疑问,请告诉我。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何为可变特征创建描述符? 的相关文章

随机推荐

  • Android:定时器/延迟替代方案

    我想让一个图像在 60 毫秒内可见 然后不可见 然后我想让另一个图像执行相同的操作 等等 我认为我没有正确使用计时器 因为当我运行该应用程序时 两个图像会同时打开 并且当我按下使用此功能的按钮时 两个图像不会消失 这是一些示例代码 time
  • Ionic / Leaflet - 无法获取 Tiles 404 Not Found(从缓存)

    我被一个非常奇怪的问题所困扰 我在用着leaflet http leafletjs com with 角度传单指令 https github com tombatossals angular leaflet directive 在之前的应用
  • 在 Jetty 7 中将 JSESSIONID cookie 设置为 httpOnly

    我们正在运行 grails 2 0 jetty 7 6 6 并且需要将 JSESSIONID cookie 设置为 httpOnly stackoverflow 上的所有答案似乎都涉及 Servlet 3 0 需要 jetty 8 或 to
  • 正则表达式匹配 3 到 4 位数字

    我正在学习正则表达式 我正在尝试找到这个字符串 day1otlk XXXX gif 其中 4 个 X 是 3 到 4 个随机数字 这就是我到目前为止所拥有的 我接近了吗 qr day1otlk d gif i 您可以指定 3 或 4 位数字
  • Quartz 2D 与 OpenGL ES 学习曲线

    我开发 iPhone 应用程序已有几个月了 我想知道您对 Quartz 与 OpenGL ES 1 x 或 2 0 学习曲线的看法 你可以说出你的观点 我的问题是 我是一名想成为游戏开发者的人 所以先用quartz开发然后再迁移是个好主意吗
  • 如何记录 ActiveResource 使用的 URL?

    Rails ActiveResource 很棒 除了一件事 据我所知 无法查看它在幕后使用的 URL 例如 假设我有一个名为 Issue 的 ActiveResource 用于 myIssues com issues xml 上的 Web
  • 使原始的 Angular 表单控件变脏[重复]

    这个问题在这里已经有答案了 Angular 4 中有一种反应式形式 一些控制应该在某个时刻以编程方式设置 this form formBuilder group foo this form controls foo setValue foo
  • getJSON 和 $.ajax 之间的区别

    从一开始我就想说我知道THIS https stackoverflow com questions 1076013 difference between getjson and ajax in jquery问题与我的标题相同 但该用户提出了
  • 嵌套列表中特定项目的求和

    我有一个数据文件 例如 1 123 something else 2 234 something else 3 500 something else 1 891 something else 2 234 something else 3 5
  • CLDC 1.0 / MIDP 2.0 应用中的三角学

    如何在 CLDC 1 0 MIDP 2 0 应用程序中使用三角函数 我需要标准数学库中的 sin cos tan asin acos atan atan2 函数 Thanks 蚊子知道 http forums sun com thread
  • 在 IE11 中按计算机名称访问站点时显示“对象不支持属性或方法‘querySelector’”

    我在防火墙内的 Windows Server 2012 R2 主机上将 Angularjs 站点部署到 IIS 当我 RDP 进入服务器并从那里导航到 http localhost Foo 在 IE11 中 一切都按照人们的预期运行 我的页
  • 当我尝试运行 npx react-native run-android 时,任务:app:mergeDebugAssets 失败

    我正在使用 vscode 和物理 Android 设备在 React Native 上开发 Android 应用程序 在尝试使用 npx React Native Run Android 进行构建时 它不断显示以下错误 Task app m
  • 渠道有什么用?

    在查看一些 Go 代码时 我发现了以下内容 ch make chan int 我在在线教程中查找了 Go Channels 的工作原理 https tour golang org concurrency 2 https tour golan
  • jquery回调

    我需要能够在准备好后对函数的执行进行回调 jQuery document ready function execute function 1 only when finish do function 2 这样做的好方法是什么 加载文档后执行
  • Oracle InvalidOperationException - 尝试从表中选择时

    我有一个参数表 其中有一个参数来说明我的程序是否应该运行 我试图获取该值来检查函数 这是函数 private static bool shouldRun OracleCommand c conn CreateCommand c Comman
  • 如何在单个查询中使用不同参数执行多个联接

    我有两个表 问题 question id 和question exclusion question type question sub type question id 如果我指定 Question type 和 Question sub
  • 如何以编程方式调用视图控制器?

    我已经查看了我能找到的所有关于此问题的教程 但仍然没有答案 我需要从代码中调用另一个视图 我在用UIStoryboards 我通过控制拖动多次改变了视图UIButtons 但现在它必须来自代码 如果这是用户第一次打开应用程序 我尝试从主菜单
  • 加速 matplotlib 散点图绘制

    我正在尝试制作一个交互式程序 主要使用 matplotlib 来制作相当多的点 10k 100k 左右 的散点图 现在它可以工作 但是更改需要很长时间才能呈现 少量的点还可以 但是一旦数量增加 事情就会很快变得令人沮丧 所以 我正在研究加速
  • Activity 和 JobIntentService 生命周期

    我正在运行一个JobIntentService在后台执行任务 使用理由JobIntentService这样用户就可以在操作发生时最小化屏幕 即使 Android 操作系统破坏了该 ActivityJobIntentService仍将继续运行
  • 如何为可变特征创建描述符?

    的文档CBMutableDescriptor initWithType value 表示为类型参数传递 标识特征的 128 位 UUID 然后它继续说你应该只使用其中之一CBUUIDCharacteristicUserDescription