iOS казва, че BLE Characteristic не уведомява

Използвам Adafruit Feather BLE модул, с който да се занимавам.

Заедно с него идва наборът от AT команди, който използвам, за да създам персонализирана услуга и характеристика с нея. Използвам го като опция за уведомяване. Страничният код на iOS казва, че характеристиката не уведомява. Направих малко гугъл и някои хора казаха, че е необходим дескриптор, за да може дадена характеристика да уведомява. Така че добавих един, но все още няма успех.

Ето страната на Adafruit на кода --

AT+GATTADDSERVICE=UUID128= 3d-e8-3e-34-dc-98-43-d0-87-de-3d-97-73-8b-ba-b6
AT+GATTADDCHAR=UUID=0xABCD, PROPERTIES=0x10, MIN_LEN=2, VALUE='01', DATATYPE=1, DESCRIPTION=TEST, PRESENTATION=17-00-AC-27-01-00-00

Виждам в серийния монитор, че е успешен. След това пиша на модула BLE на всеки няколко милисекунди.

От страна на iOS, ето регистрационния файл, който получавам --

Characteristics: [<CBCharacteristic: 0x2817a4180, UUID = ABCD, properties = 0x10, value = (null), notifying = NO>] 

Използвам стандартен код, който идва с примерите. Стойността на свойството, което използвам, не е ли правилната? В документацията на Adafruit се казва, че 0x10 трябва да го направи уведомяващ.


person SFlow    schedule 08.10.2020    source източник


Отговори (1)


уведомяване = не в описанието за отстраняване на грешки показва, че не сте активирали известия за тази характеристика (т.е. нейното isNotifying свойство е false). Това не означава, че характеристиката не поддържа известия.

Трябва да се обадите на setNotifyValue(true, for: characteristic), за да активирате известията.

След това ще получите обаждане до didUpdateNotificationState делегат обратно извикване, за да ви каже дали известията са били активирани успешно или не.

person Paulw11    schedule 08.10.2020
comment
Мислех, че когато създавам характеристиката за моята услуга, трябва да уточня дали ще уведомява или не. не е ли Това notifying = no е свойството на характеристиката, прочетена от модула след първото свързване. Извиквам setNotify на него, но didUpdateNotfucationState никога не се извиква. Може би не го разбирам правилно. Искам да изпращам данни, използвайки тази характеристика на всеки 100 ms. Имам нужда от известието и didUpdateNotificationState да бъдат извикани за това, нали? - person SFlow; 08.10.2020
comment
Вие правите и имате. Това показва свойствата = 0x10. Уведомяване = не означава, че не сте активирали успешно известяването от страна на iOS. Задали ли сте делегата на периферното устройство, за да получите обратното извикване на състоянието didUpdateNotification? Трябва да покажете повече от вашия iOS код - person Paulw11; 08.10.2020
comment
Ах благодаря! Всъщност не знам какво направих. Презаредих Arduino и приложението за iOS и сега работи. Много благодаря за твоята помощ. За съжаление не съм го проверил в git, за да видя какви промени съм направил по невнимание. - person SFlow; 08.10.2020