Я пытаюсь найти хороший способ для моего приложения iOS сканировать три разных типа периферийных устройств Bluetooth LE, каждый из которых представлен уникальным сервисом/UUID. Методы CBCentralManager scanForPeripheralsWithServices:options принимают массив UUID служб, и в документации говорится, что «центральный менеджер возвращает только периферийные устройства, которые рекламируют указанные вами службы», когда это предоставляется. Однако я обнаружил, что на самом деле это означает, что если вы укажете 3 UUID службы, вы получите только те периферийные устройства, которые рекламируют все три этих службы. то есть это И, а не ИЛИ: он не вернет все периферийные устройства, которые рекламируют ЛЮБУЮ из этих служб в массиве.
Единственный другой вариант, который я вижу, - это передать «ноль» для массива сервисных UUID, и согласно документации «все обнаруженные периферийные устройства возвращаются независимо от их поддерживаемых сервисов (не рекомендуется)». Затем я мог бы отфильтровать любой из трех сервисных UUID, которые я ищу. Но Apple, кажется, отговаривает меня от этого, говоря мне, что это не рекомендуется. Кто-нибудь знает, почему?