1

我有两种方法,每种方法都向外围管理器添加服务。当我收到didAddService回调时,我将[manager startAdvertisingServices:]方法与已添加的服务一起使用(因此用作CBAdvertisementDataServiceUUIDsKey键值的数组中包含 1 个或 2 个服务 UUID。)

当我添加第二个服务并尝试宣传它们时,我总是收到错误Advertising has already started.

我尝试使用[manager stopAdvertising]然后添加新服务,但是 stopAdvertising 方法是异步的,所以有时它仍然失败(在我startAdvertisingServices再次调用时它还没有停止广告。)

我单独做广告/阅读/编写它们没有问题,如果我在调用 stopAdvertising 后等待,我可以开始一起做广告,但这似乎是一种黑客行为。

我能想到的安全方法是isAdvertising在外设管理器的属性上进行 KVO,并持有每个服务是否应该做广告的标志,这样我就可以准确地知道广告何时停止并且我可以安全地重新开始。如果我开始和停止广告只是为了添加新服务,我也不确定这是否会对现场的 Centrals 产生影响。

使用外设管理器宣传多个服务的正确方法是什么?

4

0 回答 0