This has been a super fun thing in our house: http://scratch.mit.edu/ It's also something a 7 year old can use on his or her own to learn concepts and make fun stuff.
In addition to basic I/O and animations, it's able to deal with a lot of the device capabilities, including SMS, GPS, dealing with the camera, and so forth.
Unfortunately, I don't know of any similar environment for programming iThings --- Apple fairly famously rejected a Scratch port from the app store in 2010:
http://wiki.scratch.mit.edu/wiki/Scratch_Viewer
although a "Scratch player" for Android is in alpha, and apparently, people are also working on pure HTML versions.
learn.code.org has quite a few interesting facets, including using Angry Birds and Plants vs. Zombies artwork; they also integrate light-bot as one of the avenues for learning.