For a couple weeks we've been trying to release a Bluetooth version of our game (iSamurai), but have been experiencing strange network problems ever since compiling for the 3.0 GM (gold master) Seed of Apple's iPhone 3.0 software. We've now had enough breakthroughs on our network struggles to share some (hopefully) useful info.
We submitted a bug report to Apple and answered one of their follow-up questions, and started an official support request - and have been going back and forth with an Apple rep on this. He has provided some good direction and interesting tests.
To cut right to the main issue:
- With the release of the iPhone software 3.0 GM seed, a service discovery process is now running that will look for other computers over EITHER WiFi or Bluetooth, (switching back and forth using the single antenna available for both).
- When that process is actively looking, various problems are caused with a current network connection that has already been established. Lags, and sometime even big lags and dropped packets of data being sent between the computers.
- To stop the service discovery, you do something like [self.netServiceBrowser stop] after you've made the connection, but it doesn't stop network problems from happening during the initial discovery process, which sometimes hangs one or both of the phones.
- When you turn off either WiFi or Bluetooth on the phones, the other type of connection (that you didn't turn off) is great, probably because the discovery process doesn't even try - no lags, no problems. Unfortunately this is something the user must do in their Settings (Right? Not sure what other options there are here.).
That leads to the amazing fact:
A bluetooth connection can be made using the 2.2.1 and earlier WiFi Picker, on iPhones running 3.0, regardless of whether the new GameKit framework is used or not. People can get a Bluetooth connection with 2.2.1 apps just by upgrading to iPhone Software 3.0!
I have verified that a Bluetooth connection is possible with our currently available 2.2.1 app (iSamurai compiled for iPhone OS 2.2.1) with phones that (now) have iPhone OS software 3.0 -- although not obvious, the Bluetooth connection is made using the WiFi Picker interface, and then our Apple-mandated "No Network Found" message comes up, but the connection is there.
To make absolutely sure, this last test was done and works even with WiFi off on both phones and all possible wireless access points (WAPS) turned off - it IS a Bluetooth connection, being made with an app compiled to run on iPhone software 2.2.1 but running on Apple's iPhone software 3.0.