Posts Tagged appMobi

GameKit Troubleshooting

EDIT August 19, 2009: Added information about server timeouts.

GameKit is a new feature in iPhone OS 3.0 that allows apps to easily exchange data over a Bluetooth Personal Area Networking (PAN). Apple did a great job making this functionality available, but there are a few issues users may see with these applications. If you are having problems connecting with a GameKit app such as PhotoBeamer and BeamCatcher, try the following steps to resolve the issue.

  1. Be sure you are using a supported device. The original iPhone (which has a silver back) and the original iPod Touch (which lacks hardware volume controls on the side) do not have the necessary hardware to support PhotoBeamer or other GameKit apps.
  2. Be sure Bluetooth is on. You should see a Bluetooth icon next to the battery icon like this: Bluetooth In Status Bar. It’s OK if it’s grey, but it must be there.[1]
  3. Turn off WiFi. The WiFi and Bluetooth radios operate on the same frequency band and share an antenna. Turning off WiFi ensures that the maximum bandwidth is available to the Bluetooth connection.[2]
  4. Be patient. The Bluetooth radio powers down if it has not been used for a while, and takes some time to start up. It can also take some time for two unpaired devices to synchronize and start to transfer data. Allow a minute or so before giving up on a connection. It’s often faster, but this is not something we have control over.
  5. (Added 8/19/09) If changing servers, be prepared to wait. Developers do not have direct control over the Bluetooth PAN. It is created automatically when a connection is made, and is torn down after it has been idle for some time. Unfortunately, each device can only have one outgoing (client mode) PAN active at a time. For PhotoBeamer, this means that if you are viewing photos from one friend, then try to disconnect and view another friend’s photos, it will take a long time for the second friend’s phone to show up. This can also happen when switching between different PAN apps.
  6. If all else fails, restart the app or even the device. Sometimes the resolver just stops seeing a particular device.[3] We expect this to improve with future iPhone OS updates as the technology matures.

Networking is easy in a perfect environment. It’s hard in the real world (at the OS level at least, modern operating systems shield the developer from much of this), and it’s even harder when it’s a decentralized, low-power wireless network like Bluetooth. I spent years working on this sort of thing at a very low level in very demanding environments. I definitely feel for the Apple engineers trying to make this a smooth, painless user experience, but it’s not quite there yet. Until it is, I’ll continue to look for new ways to improve the experience within the confines of the iPhone SDK.

  1. Apps that use the Apple-provided peer picker will offer to turn on Bluetooth for you. Apps such as PhotoBeamer which allow connections at any time or use a custom peer selection UI for another reason can warn you that Bluetooth is disabled but can not turn it on. You need to go to the Settings app and turn it on yourself. [BACK]
  2. See, you have to go to the Settings App anyway! [BACK]
  3. (Added 8/19/09) This is probably because of the limited number of outgoing PAN connections and idle timeout issue. [BACK]

Tags: , , ,

PhotoBeamer Coverage

Since PhotoBeamer went live, I’ve been watching the comments and reviews coming in and working on a number of updates and improvements. I’m just about ready to submit the 1.1 version to the App Store. The new version has a number of improvements I think you’ll like.

We’ve also sent out a number of promo codes to various review sites, so hopefully we’ll see some in-depth reviews soon. In the mean time, I found launch-day reviews from iSmashPhone and App Advice. If you know of another site that’s reviewed PhotoBeamer and BeamCatcher, let me know!

Update: PhotoBeamer was reviewed on iLounge today. They rated it a B-, and said “A legitimately useful tool”.. “Apple should add more features like this but until it does, PhotoBeamer is a fine option”. They did seem to miss that BeamCatcher is available as a free viewer though. (added July 22, 2009)

Tags: , , ,

PhotoBeamer Available in the App Store

A little over a month ago, the appMobi team was sitting outside around a table at our favorite bar/restaurant, enjoying the warm summer weather and a cold drink. We had just finished our last meeting before I headed off to WWDC, and we were sharing pictures on our iPhones by passing them around the table. That was when we realized “there should be an app for this!”

Sure, there are apps that let you upload images to Facebook, Flickr, and all sorts of other places…. Sure, you can email a picture, and with iPhone OS 3.0 coming soon even MMS one (assuming you’re not in the US and don’t care about quality). There are even apps that let you share photos on the spot, phone-to-phone, but only if you are all on the same WiFi network.

We knew that 3.0 would be out soon, possibly as soon as WWDC. We also knew that 3.0 had peer-to-peer Bluetooth networking support through the new GameKit framework. We decided this was a perfect opportunity to take advantage of the new OS.

I went home and got some sleep (long day and Crown don’t make for productive programming), then dived right into GameKit first thing in the morning. By lunch time I was able to share small images reliably, but clearly needed a lot of UI and networking polish. We knew we wouldn’t be the only ones with this idea, and that the quality of the app would be more important than being the first ones to market.

I spent the rest of the week polishing the prototype, and by the time I left for San Francisco had the core user interface pretty solid: translucent autohiding toolbars, a zooming and scrolling image view very much like the native Photos app, support for viewers coming and going mid-session, and more.

During the keynote at WWDC Apple announced that the 3.0 gold master was available immediately to developers. I updated from the Beta I was running and immediately found bugs in my apps. Not so much in PhotoBeamer, but in SpinSlide, which was already in the store with paying customers. I had to put PhotoBeamer aside and work on fixing the bugs in SpinSlide as quickly as possible, while attending 8+ hours of sessions and nearly as many parties through the week.

Once I got back from WWDC I was able to finish up the bug fixes and internationalization work on SpinSlide (now available in Spanish and Japanese!) and get back to work on PhotoBeamer. I updated the networking code to send arbitrary size images reliably, added a camera button to allow taking pictures right in the app, and continued with the visual polish, adding activity spinners and a status view with separate progress bars for each client and a multi-line status area to ensure the user has a chance to read messages as they come up. I created a free version called BeamCatcher and fought through some issues with my build scripts, and added the ability for the clients to save images to their Photo Album, but only if the sender allows.

A few beta test sessions using multiple devices at once uncovered some more bugs that were addressed, and the arrival of the 3GS showed some more room for improvement in both the networking and image display code, thanks to the larger images. Most importantly, I discovered how to detect when Bluetooth is not enabled without using the built-in peer picker controller, which doesn’t fit well with the PhotoBeamer app flow.

After all that, and an unusually long review at Apple (likely due to the massive influx of new and updated apps around 3.0), both PhotoBeamer and BeamCatcher went live June 12th. Get PhotoBeamer to share your pictures. If your friends won’t spring for the full app, they can download BeamCatcher to view for free.

PhotoBeamer MainSender decides if clients can save the shared imagesSender is prompted when a client tries to connectProgress is shown for each clientView in portrait or landscape mode

BeamCatcher is receive-onlyLooking for PhotoBeamers nearbyBeamCatcher receiving the initial imageImage received - save button is now activeAfter a few seconds the UI slides out allowing an unobstructed view

Tags: , ,

SpinSlide is Live!

SpinSlide is now live! The best damn slide tile puzzle ever!

Watch a video demo, read my previous post about it, or just go buy it!

Tags: ,