Hi all,
We're developing an app which involves BTLE communication between Android and iOS.
We have Android5.0+ in Peripheral mode and iOS in Central.
We've been developing this for a few months, I've been testing the iOS side on phones from 4S to 6S from iOS8.1 to the iOS10.0.1 release. All was good.
This week we got our first iPhone 7. It's lovely, but to my horror, we're unable to complete our data transfer to the Android BTLE Peripherals. After scanning and successfully connecting to the peripheral we set the delegate and call -discoverServices as normal but the delegate method never gets called back.
I tested both iOS10.0 14A346 (that it shipped with) and current 10.0.1 14A403.
My didConnectPeripheral implementation looks like:
func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
DLog("Connected: \(peripheral)")
self.lastPeripheral = peripheral
if peripheral.services == nil {
peripheral.discoverServices([lockServiceUUIDBase])
assert(peripheral.delegate != nil)
} else {
DLog("Services already exist, shortcutting")
self.peripheral(peripheral, didDiscoverServices: nil)
}
}
Nothing too fancy. This method gets called, the assert doesn't throw, but -didDiscoverServices never gets called. I have tried removing the specific service UUID's but it made no difference.
Has anyone else run into this?
Thanks in advance.
Alex Kent