Hey Tony
I'm not an iMedia developer but have spent the last couple weeks working on an app that heavily uses the framework. To my knowledge there exists no tutorial or formal documentation, if I remember correctly there are some docu fragments on the old Google groups wiki but I personally didn't find them very helpful when getting started. Below are some pointers that should give you a quick start:
- Obviously get the git repo from github and compile the test app to see the framework in action. Note that the Objective-Flickr framework is a direct dependency and must be included in every application that uses iMedia (even if you're not using the Flickr parts of it). From what I have seen the framework is pretty much built to use the iMedia Test application, eg. you will find methods related to the GUI of the iMedia application in many controllers of the framework. The .framework build also includes the gui (I guess in case people want to use it as a visual selection tool for users to pick media) but its easy to just use the underlying model stuff.
- The overall structure of the framework appears to be like this:
- Libraries: These are media type specific, take a look at the IMBLibraryController. If you eg. want to read images you instantiate an IMBLibraryController with the media type kIMBMediaTypeImage. Each media type can/should only have one library controller and each library controller can have a delegate, whose protocol is described in IMBLibraryController.h
- Parsers: For every source type there is a parser, eg. there is an IMBiPhotoParser, an IMBApertureParser etc. All parsers are managed by the IMBParserController (a singleton) which is responsible for loading and managing parsers. It again can have a delegate which allows you to specify the parsers the controller should load and get notified when parser change.
- Nodes: One of the main objects you will interact with are nodes. They describe any "object" a parser loads, eg. an album in iPhoto, the iPhoto root node, a project in iMovie etc. The corresponding class is IMBNode and provides access to sub nodes (if there are any), as well as various metadata of the album/project/etc. Nodes get created by parsers and the library controller's delegate can be informed every time a new node is created (if you implement the appropriate method). Note that nodes loaded are (most of the time) just stubs with a little meta information but no sub nodes array or objects array (more on that in the next point) loaded, you need to request the loading of these separately by invoking populateNode: on the appropriate library controller and passing the node you want to get populated.
- Objects: Encapsulated by IMBObject, these are the gold you are here for: An object either represents an image, movie, bookmark, song or whatever else it is your node contains. Note again that upon initial retrieval of objects from an IMBNode they may only be stubs containing very little metadata, if you need the full information you need to populate them as well (different method though than for nodes, can't remember right now but its not too hard to find once you take a look at the IMBObject class)
As you might have guessed I only really dealt with the image part of iMedia yet so above might be a little bit biased towards how iMedia works with images, not entirely sure how it is with other media types (though the classes appear to be the same, hence I guess the workflow is similar). From my experience the framework is pretty solid and very well thought through with a clean and well commented code base (many many thanks for the hard work!) so looking at the source along with above should give you a good head start into developing with it.
I hope this gets you started and helps others who want to use the framework, in case anybody finds the above to be inaccurate please let me know. Have fun!
Best,
Robin
Ps. Usually this mailing list is very active, I think people are still recovering from new years eve ;)