Paulw11
Мои извинения за публикацию комментария в качестве ответа - слишком много, чтобы сказать.
Спасибо за предложения.Я использовал ваши ключевые вещи, и немного приправил мои не упомянутые особенности.Я полагаю, что у меня есть рабочее решение, основанное на ваших рекомендациях.
Вместо retievePeripheralWithIdentifiers я просто получаю и сохраняю CBUUID при первом подключении.
Затем при подключении я фильтрую входящие периферийные устройства для соответствияисходный CBUUID.
Полагаю, мне нужно использовать сканирование, а не просто подключиться, потому что я не знаю, когда гонщик снова начнет движение.Я не хочу просить гонщика нажать кнопку.Мне нужно продолжать сканирование, чтобы обнаружить его движение.
Вот краткий список моего добавленного кода:
...in implementation
bool preferredPeripheralExists = false;
...in peripheral didDiscoverCharacteristicsForService
NSString *founduuid = [NSString stringWithFormat:@"%@", [peripheral.identifier UUIDString]] ;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject:founduuid forKey:@"rememberFoundUUID"];
[prefs synchronize];
preferredPeripheralExists = true ;
... in didDiscoverPeripheral
NSString *newuuid = [NSString stringWithFormat:@"%@", [peripheral.identifier UUIDString]] ;
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSString *olduuid = [prefs objectForKey:@"rememberFoundUUID"] ;
if ((!preferredPeripheralExists) || (preferredPeripheralExists && [newuuid isEqualToString:olduuid])){
if (self.discoveredPeripheral != peripheral) {
self.discoveredPeripheral = peripheral;
[self.centralManager connectPeripheral:peripheral options:nil];
} // if self
} // if !preferred
Что касается вашего комментария об экране настройки и пользовательского выбораПериферийные устройства -
Моя схема работы основана на примере проекта xcode на сайте разработчика Apple.Это не упоминает интерфейс настройки.Кроме того, проект «Монитор сердца» Ray Wenderlich с поддержкой Bluetooth не позволяет пользователю выбирать устройство.
Считается ли плохой практикой не включать экран выбора устройства?
Спасибо
J.Day