Я сталкивался с подобными проблемами, с которыми вы столкнулись здесь, поэтому я постараюсь поделиться тем, что я видел.
didWriteValueForCharacteristic — это не то, что вам нужно, когда вы пытаетесь получить данные с периферийного устройства. Хотя вы говорите, что пытаетесь куда-то записать данные, я не уверен, какое это имеет отношение к получению уведомления об обновлении.
Если вы используете параметр уведомления, вам следует сосредоточиться на didUpdateValueForCharacteristic.
Когда вызывается didUpdateValueForCharacteristic, это не обязательно означает, что значение передано полностью. Вы должны иметь в виду, что отправляемые данные могут быть отправлены только в небольших количествах (20 байт, если я правильно помню), поэтому может быть случай, когда данные, которые вы просматриваете, являются неполными.
Еще я заметил, что на периферийной стороне, когда вы звоните
[peripheralManager updateValue:dataToSent forCharacteristic:aCustomCharacteristic onSubscribedCentrals:nil];
он возвращает BOOL, который сообщает вам, были ли данные успешно отправлены. Если он не был успешно отправлен, он прекращает попытки отправить последующие, что может быть проблемой.
Когда я пытался отправить значение int в виде данных с периферийного устройства клиенту, я использовал iPad и iPhone. У меня были проблемы, когда iPhone был клиентом, а iPad — периферийным устройством. Я получил нулевые значения, очень похожие на то, с чем вы имели дело, но когда я поменял их местами, я получил правильные значения, которые должен был получить. Это также может быть проблема с вашими устройствами, которые вы используете, так как я не совсем уверен, что вы можете использовать iPad в качестве периферийного устройства.
person
bolnad
schedule
03.05.2013