Swift: BLE Peripheral DidupdateValueForCharacteristic обратный вызов, не называемый в SDKIOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Swift: BLE Peripheral DidupdateValueForCharacteristic обратный вызов, не называемый в SDK

Сообщение Anonymous »

Я интегрирую стороннюю нативную SDK в свое нативное приложение React, используя API Expo-Modules. SDK используется для связи с устройством BLE. Я являюсь новичком в Swift и Objective-C, так что это может быть ошибка новичка. Например, когда я пытаюсь получить историю упражнений и никаких упражнений не доступно, обратный вызов внутри метода SDK не запускается.

Код: Выделить всё

public func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
print("Received: \(String(describing: characteristic.value))")

guard let writeCharacter = writeCharacter else {
print("No write characteristic found")
return
}

let nsError = error as NSError? ?? NSError(domain: "", code: 0, userInfo: nil)

STBlueToothData.sharedInstance().notifyRunmefit(
peripheral,
writeCharacter: writeCharacter,
characteristic: characteristic,
error: nsError,
complete: { (error, revType, errorType, responseObject) in

let nsError = error as NSError
if nsError.code != 0 {
print("Error: \(error)")
} else {
let dict: [String: Any] = [
ST_RevType_Key: NSNumber(value: revType.rawValue),
ST_ErrorType_Key: NSNumber(value: errorType.rawValue)
]

NotificationCenter.default.post(
name: NSNotification.Name(Nof_Revice_Data_Key),
object: responseObject,
userInfo: dict
)
}
}
)
}
< /code>
 определение заголовка SDK: < /strong>
Это определение функции SDK: < /p>
-(void)notifyRunmefit:(CBPeripheral *)peripheral
WriteCharacter:(CBCharacteristic *)writeCharacter
Characteristic:(CBCharacteristic *)characteristic
Error:(NSError *)error
Complete:(void(^)(NSError *error, REV_TYPE revType, ERROR_TYPE errorType, id responseObject))complete;
< /code>
демо-код из SDK:
Вот как демонстрация SDK вызывает метод: < /p>
-(void)peripheral:(CBPeripheral *)peripheral didUpdateValueForCharacteristic:(CBCharacteristic *)characteristic error:(NSError *)error {
NSLog(@"Received: %@", characteristic.value);
if (error) {
NSLog(@"Error: %@", error);
} else {
[STBlueToothData.sharedInstance notifyRunmefit:peripheral WriteCharacter:self.writeCharacter Characteristic:characteristic Error:error Complete:^(NSError * _Nonnull error, REV_TYPE revType, ERROR_TYPE errorType, id  _Nonnull responseObject) {
if (error) {
NSLog(@"Error: %@", error);
} else {
NSDictionary *dict = @{ST_RevType_Key:@(revType),
ST_ErrorType_Key:@(errorType)};

[[NSNotificationCenter defaultCenter] postNotificationName:Nof_Revice_Data_Key object:responseObject userInfo:dict];
}
}];
}
}
< /code>
Что я попробовал:
Я также пытался использовать тот же подход, что и в демонстрации, но я продолжаю получать следующую ошибку: < /p>
Value of optional type '(any Error)?' must be unwrapped to a value of type 'any Error'
Я подозреваю, что проблема может быть связана с тем, как параметр ошибки обрабатывается, но я не уверен, как ее исправить.
Любая помощь или предложения будут высоко оценены!

Подробнее здесь: https://stackoverflow.com/questions/794 ... led-in-sdk
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»