UnderTheHood

Latest

  • iPhoto Beaming: Under the hood

    by 
    Erica Sadun
    Erica Sadun
    03.09.2012

    Earlier today, Steve Sande showed you how to beam photos using the new iPhoto app. Now it's my turn, and I'll briefly discuss what's actually happening when you use this new feature. Beaming relies on two devices sharing the same Wi-Fi network. That's because the communication channel seems to be built on Zero Configuration (Bonjour) networking. Bonjour, Apple's branding for zeroconf/mDNS device discovery, allows computers and mobile devices to advertise services on a shared network. This lets Macs, PCs and iOS devices easily connect to printers, AirPlay servers, and so forth. iPhoto Beaming uses a UDP service called _mobileiphoto._udp. Devices that are ready to receive beams announce themselves in an easily discoverable way. A service appears on-network as soon as you enable Wireless Beaming. To beam, a source device searches for possible recipients. Once detected, iPhoto offers to connect to them. It negotiates a handshake, asks for permission at the far end to send data, and then transfers photos. The Bonjour device name seems to be made up of a hash filed by a local file name. This is quite similar to what goes on with GameKit peer-to-peer connectivity. Only properly hashed identifiers are recognized as valid destinations. To spoof iPhoto, a Mac client would need to provide a valid hash in this way. And, no, I was unable to get my GameKit hashing to match the iPhoto beaming hash in my initial attempts. Possibly operator error on my part, possibly they just used a different approach. What's more, the executable seems to be built using GKSession objects, so there's apparently some common genetic background between the two approaches. I didn't find other GameKit classes, so not all that much commonality. Before jumping into iPhoto, I had been hoping this would be some kind of AirDrop implementation that might later open up to other apps -- but from what my quick dive indicates, it looks like this is proprietary to iPhoto and not going to become a general solution yet. To summarize, the iPhoto beaming looks, at least from my initial scans, to be a jury-rigged solution proprietary to this one title rather than a general iOS file-sharing solution. The app-specific Bonjour name (mobileiphoto) and lack of custom framework classes suggest this isn't the future, it's just iPhoto. Pity.