Got Plugins?


After being dragged out of the house to enjoy a glorious Spring afternoon (which made for some great photo opportunities), I am feeling quite better, even if still with a touch of the sniffles and some discomfort in my inner ear.

So much so that I decided to tackle the changes in iSync 2.2:

For starters, it seems that iSync is quite pickier about what a .phoneplugin should contain - not only does it check the CFBundleShortVersionString in Info.plist, it also checks if the CFBundleVersion is (or isn't) identical to the one on PhoneModelsSync.phoneplugin (424.0 at the moment) and seems to require IPHPhoneConduitVersion to be set as well.

Then again, everything I know about plugins could be wrong.

For instance, this console message:

23:28:20.823 [iSync:601] ERROR (.plugin): Plugin com.apple.phoneplugin.phonemodelsync at /Applications/iSync.app/Contents/PlugIns/ApplePhoneConduit.syncdevice/Contents/PlugIns/PhoneModelsSync.phoneplugin (with version 424.0) is also present at /Users/rcarmo/Library/PhonePlugins/Test.phoneplugin (with version 424.0): will use the one in /Users/rcarmo/Library/PhonePlugins/Test.phoneplugin

...suggests that by declaring:

        <key>CFBundleExecutable</key>
        <string>PhoneModelsSync</string>
        <key>CFBundleIdentifier</key>
        <string>com.apple.phoneplugin.phonemodelsync</string>
        <key>CFBundleName</key>
        <string>PhoneModelsSync</string>

...as usual, I have actually been overriding the internal Apple plugin in a rather brute-force fashion.

My concern at this point is that plugins created in this way won't co-exist with one another, but lacking official Apple documentation on how to create plugins, I don't know what else I can use in CFBundleName and CFBundleIdentifier to have the plugin load and not clash with anything.

Anyway, I got one of my old plugins to load by adding the following lines to Info.plist:

        <key>CFBundleVersion</key>
        <string>424.0</string>
        <key>IPHPhoneConduitVersion</key>
        <string>400.0</string>

...plus I managed to create a brand new, working plugin for a (as yet unreleased) phone by using such an Info.plist and the new family.com.vendor namespace.

So despite my qualms about there being still a lot of unknowns regarding this, I picked up on David Bourke's suggestion and re-cast my 9300 plugin in the new model, but using the family.com.nokia.serie60.syncml family.

The updated file is attached to this page (it now includes both the old and the new-style plugin), and I would appreciate some feedback on whether it works - I have since returned my 9300 and can't test it at all.

In the meantime, if anyone has found any sort of official Apple documentation on this, do drop me a note so that I can update my HOWTO accordingly.

My current bet is that everyone (including me) has been creating plugins the wrong way, and I would very much like to know the right way to go about doing things.

In the meantime, people curious about Series 40 support can read this Apple KB article. There are some caveats, but yes, there is a Series 40 conduit in there now.