GKSession has stopped to work over Bluetooth connections on iOS 9. It still works fine when connecting devices are attached to the same WLAN. When their WLAN connectivity is switched off or they are on different WLANs, however, something goes wrong. The devices still seem to find each other:
- the client switches to GKPeerStateAvailable and get's the server's name, and
- the server's console shows a message 'BTM: connection to service 0x00000800 on device "PDA" [MAC address] succeeded' with the client's MAC address).
However, when the client tries to connect, it immediately (within 100ms) receives a failure callback with error 30505 (Failed while pending outgoing invitation). I observed this behavior whenever at least one of the devices runs iOS 9.0 or iOS 9.0.1.
Now I know that GKSession is deprecated and that I will eventually have to bite the bullet and switch to its MultipeerConnectivity successor, MCSession. I did some experiments with MCSession before and know that it is not a big hero on stability, either. So before I switch, can anybody with iOS 9 experience on MultipeerConnectivity answer at least one of the following questions:
- Does MCSession show similar issues with Bluetooth since iOS 9?
- Can MCSession and GKMatch coexist (i.e. be active at the same time) on the same device (as GKSession and GKMatch do)?
- Does anybody still use Bluetooth succesfully with GKSession in iOS 9?
- Can GKSession and MCSession on different devices connect to each other?
- Can GKSession and MCSession coexist on the same device?
- Is this Bluetooth issue a bug in GKSession that might still get fixed or a first step to switch it off completely?