I've developed an application which gathers some information on presentations and monitors the behaviour of the presenter during the presentation. The applications is an OS X app build in Objective-C with the Cocoa Framework
In the past I've used Apple's very own ScriptingBridge.framework together with the API interface generated from sdef /Applications/Keynote.app/ | sdp -fh --basename Keynote
.
With versions prior to Keynote 6 (which has been released a couple of days ago), the interface contained classes and methods that could be used to gather useful information on the current state of the running Keynote application. Some examples I've used in my app:
- Check if keynote was in presenter mode
- Get the slide number of the currently active slide (in presenter mode)
- For every slide you could get some information (such as what was on it)
- ...
Looking at the newly generated header file of Keynote 6, it seems that Apple has written an entirely new API interface. It seems that everything I wrote above is no longer possible! Even worse, it seems like they made interactions with Keynote only one way! The API allows you to instruct Keynote to do certain actions (i.e. export, open, start presentation, ...), but the support to request information on the internal state of a running Keynote application seems to be left out.
I was wondering whether or not anyone else has noticed this? If so, is there are work around to still get internal state information from Keynote (which was possible < v6.0)? If ScriptingBridge is not the way to go anymore, is there another way to access this information?
Looking forward to your responses, as my application is currently useless and not working...