Я интегрирую стороннюю нативную 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'
Я подозреваю, что проблема может быть связана с тем, как параметр ошибки обрабатывается, но я не уверен, как ее исправить.
Любая помощь или предложения будут высоко оценены!
Я интегрирую стороннюю нативную SDK в свое нативное приложение React, используя API Expo-Modules. SDK используется для связи с устройством BLE. Я являюсь новичком в Swift и Objective-C, так что это может быть ошибка новичка. Например, когда я пытаюсь получить историю упражнений и никаких упражнений не доступно, обратный вызов внутри метода SDK не запускается.[code]public func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) { print("Received: \(String(describing: characteristic.value))")
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' [/code] Я подозреваю, что проблема может быть связана с тем, как параметр ошибки обрабатывается, но я не уверен, как ее исправить. Любая помощь или предложения будут высоко оценены!
Непрерывно отправлять данные в 1000 раз с использованием метода уведомления, с MTU 512, а каждый пакет составлял 244 байта.
В связи с ним получается только вызыв, и в этом моменте есть проблема, и существует проблема, когда статус = 129 происходит в...
Проблема
Я интегрирую RunMefit SDK в свое приложение RAGE, используя API Expo Modules для связи с устройством BLE. Когда устройство не отправляет никаких данных (например, пустая история упражнений), мое приложение сбоя с потоком 1: exc_bad_access...
Проблема
Я интегрирую RunMefit SDK в свое приложение RAGE, используя API Expo Modules для связи с устройством BLE. Когда устройство не отправляет никаких данных (например, пустая история упражнений), мое приложение сбоя с потоком 1: exc_bad_access...
Я профиляю какой -то код, используя библиотеку cppgraphgqlgen - которая широко использует C ++ 20 Coroutines во внутренних органах. Методы, которые имеют более высокий счет, чем их называют родителями
Я создаю приложение для Android, которое работает как периферийное устройство Bluetooth в Kotlin.
Есть ли способ создать периферийное устройство в качестве устройства A2DP?