Я пытаюсь выяснить, как сделать определенные триггеры обратных вызовов. На периферии peripheralManager:central:didSubscribeToCharacteristic:
вызывается правильно и отправляет кусок (первый из двух) данных в центральный, который принимает его в peripheral:didUpdateValueForCharacteristic:error:
, как и ожидалось.Процедура обратного вызова Bluetooth Core Framework периферийнаяManagerIsReadyToUpdateSubscribers: не называется
Теперь есть один кусок слева, который должен быть отправлен в обратном вызове периферии peripheralManagerIsReadyToUpdateSubscribers:
в соответствии с Apple's test application.
Я проверял и проверял, и он отлично работает. Это немного подозрительно, хотя, согласно документам, это только должно быть вызвано, когда updateValue:forCharacteristic:onSubscribedCentrals:
периферийного менеджера терпит неудачу.
Как сделать периферийную передачу оставшегося фрагмента? Я могу предоставить вам код, но он почти идентичен (я использую массив узлов NSData вместо одной большой NSData, такой как пример) к приложению, к которому я привязан, мне более любопытно, как цепочка обратного вызова работает и что должно быть на месте для запуска различных селекторов.
Спасибо, мне удалось впитаться в то, что мне нужно возвращаться каждый раз, когда он не отправляет кусок для срабатывания обратного вызова. – MdaG
@MdaG Да, это не очень хорошо сформулировано в документации, и пример самого приложения показывает очень плохую практику. (Конгломерация всех функций в одной функции.) Я просто подумал, что вам будет полезно получить некоторые отзывы о том, что вы делаете это более или менее правильно. – allprog
Итак, в нетривиальном примере с несколькими характеристиками нужно было бы поддерживать набор очередей, по одному для каждого признака? Или, может быть, очередь, содержащая словари, связывающие данные с характеристикой? – Gorm