It doesn't work.
Really, without details of your code, of what you expect, of what you get, this is useless.
Even with a nil predicate, the showBluetoothAccessoryPicker brings up an empty screen
Show the code
it logs this nasty message about "This NSLayoutConstraint is being configured with a constant that exceeds internal limits" (that people have been complaining about for a couple of years)
Show the messages
The picker views only unpaired MFi devices.
The EAAcessory framework does not provide an API to connect to a device.
The MFi device can initiate connection to the iPhone - so if your device can supports GATT you can use CoreBluetooth to connect to the device and ask it to connect over iAP.
Another options is the "bridging" feature mentioned in the last WWDC session about CoreBluetooth - with this feature the iPhone connects to the classic bluetooth device when it discover this device over BLE.
thanks for your reply. This function would not be useful at all if it only finds unpaired devices. So it finds an unpaired device (which I first had to manually put into pairing mode), lists the device, I select it (which causes it to pair) and then it never shows up again? The doc does say "pairs the device" so you are probably right.
So I tried it that way. Did "Forget This Device" on one of them, put it into pairing mode (which causes it to show up at the bottom of my Bluetooth Settings in "Other Devices"), ran the picker, and it still gives me a screen with no items.
I've opened trouble ticket FB7545602.
For your other suggestions, good ideas, but these devices don't do BLE and so no GATT.