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?
I might file a bug report …
Obviously I can’t stop you from filing a bug but I wouldn’t get your hopes up here. GKSession has been deprecated for three OS releases now (iOS 7 through 9). It’s time to move on.
Also, keep in mind that engineering resources within Apple are constrained in the same way that they are everywhere else. The folks working on Multipeer Connectivity are the same folks who would fix your GKSession bug. And if I had my choice, I’d rather have those folks working to make Multipeer Connectivity better than reanimating the corpse of GKSession (-;
To answer your specific questions:
Does MCSession show similar issues with Bluetooth since iOS 9?
I’ve not seen any reports of that.
Can MCSession and GKMatch coexist (i.e. be active at the same time) on the same device (as GKSession and GKMatch do)?
Yes (subject to the usual coexistence caveats related to Bluetooth, Wi-Fi, and peer-to-peer Wi-Fi).
Does anybody still use Bluetooth succesfully with GKSession in iOS 9?
I’m going to skip this one.
Can GKSession and MCSession on different devices connect to each other?
No. GKSession and MCSession use different protocols that do not interoperate.
Can GKSession and MCSession coexist on the same device?
Yes (with the same coexistence caveat).
Is this Bluetooth issue a bug in GKSession that might still get fixed or a first step to switch it off completely?
IMO it’s time to move away from GKSession.
Share and Enjoy
—
Quinn "The Eskimo!"
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"