2016-09-20 13 views
4

Модернизированного iPhone 6+ до версии IOS 10. по зову scanForPeripheralsWithServices со списком услуг Ids не получая никакого обратный вызов centralManager: didDiscoverPeripheral: advertisementData: RSSIPost IOS 10 scanForPeripheralsWithServices обновление не открывать любое устройство

Пока на прошивке 9 , тот же код работает нормально.

по вызову scanForPeripheralsWithServices с nil (идентификаторы служб) работает на переднем плане, но в фоновом режиме, сканирование не работает в обоих случаях с идентификаторами обслуживания и без служебных идентификаторов.

+0

Если вы указали нуль в параметрах 'scanForPeripheralsWithServices: options', вы найдете свои устройства? Какие варианты вы положили? Если установлено значение «nil», службы, рекламируемые периферийными устройствами, и найденные вашим «centralManager» одинаковы (может ли это быть проблемой с регистрацией NSString?) – Larme

+0

Ввод нулей в параметры scanForPeripheralsWithServices: параметры, работа в то время как приложение находится на переднем плане, но не работает, когда приложение находится в фоновом режиме. –

+0

Можете ли вы добавить свой код к своему вопросу. Я хотел бы посмотреть, как вы настроили свой список UUID и позвонить. Благодарю. – Marc

ответ

0

Мне повезло с передачей пустого массива, он сделал фильтр, основанный на опции CBCentralManagerScanOptionSolicitedServiceUUIDsKey. Я еще не тестировал фоновое сканирование, но я надеюсь, что он сработает.

NSArray *uuids = @[[CBUUID UUIDWithString:@"7905F431-B5CE-4E99-A40F-4B1E122D00D0"]]; 
[self.cm scanForPeripheralsWithServices:@[] 
           options:@{CBCentralManagerScanOptionAllowDuplicatesKey:@(YES), 
            CBCentralManagerScanOptionSolicitedServiceUUIDsKey:uuids}]; 

Я думаю, что это ошибка яблока, и она будет исправлена ​​в обновлении.

+0

, передавая пустой массив, он фильтрует на основе параметра CBCentralManagerScanOptionSolicitedServiceUUIDsKey. –

+0

, передавая пустой массив, он фильтрует на основе параметра CBCentralManagerScanOptionSolicitedServiceUUIDsKey. Не работал для меня. В обоих случаях приложение не могло обнаружить устройство. –

2

Я пытался понять это в течение нескольких дней. И только что нашел ответ, похоже, что у вас тоже есть, поэтому отправляйте его сюда, просто заставляя кого-то спотыкаться по этой теме и пропускает ваш комментарий.

iOS 9 позволил вам неявно отобразить NSUUID на CBUUID - это явно не допускается в iOS10.

Вы можете использовать метод [CBUUID UUIDWithNSUUID:anNSUUID] при инициализации сканирования с помощью scanForPeripheralsWithServices.

0

На iOS 10.1 этот вопрос снова повторился.

[centralManager scanForPeripheralsWithServices:[NSArray arrayWithObjects:[CBUUID UUIDWithString:AUUID], nil] options:nil]; 

Сканирование не работает в фоновом режиме.

Мои периферийные устройства:
iPhone 6, IOS 10,1
IPad мини 2, IOS 10.0.2

Центральное устройство
iPhone 5S, IOS 9.3.5

и оба периферийные устройства в фоновом режиме , iPhone 5S только обнаружил, что iPad mini 2.

+0

С iOS 10.1 beta я не сталкивался с проблемой сканирования в фоновом режиме. Будет chck с iOS 10.1 и обновления. –

+0

Для меня сканирование работает в фоновом режиме с iOS 10.1. @ user3221820 Вы можете добавить свой код? Также вы добавили NSBluetoothPeripheralUsageDescription в Info plist. –

+0

NSDictionary * options = @ {CBCentralManagerScanOptionAllowDuplicatesKey: @ (YES)}; CBUUID * uuid = [CBUUID UUIDWithString: @ "6476B13F-4486-4723-AD1E-0B66B50B765B"]; [self.centralManager scanForPeripheralsWithServices: @ [uuid] options: options]; И я использую iPhone6 ​​для рекламы в фоновом режиме. – user3221820