Generally, this is a bit of an unsolved problem.

While plugins have platform tags, I believe we install all plugins for all
platforms.  This is because the platform tag was used for optional
configuration initially and was never mandated.  So, you can use that as a
signal which says "should support platform x" but there are surely examples
of plugins that blindly added all platform tags, and plugins which haven't
added any platform tags at all, yet support some platforms.

With feature detection, this will only work if the plugin has not blindly
clobbered the js api for all platforms (which isn't uncommon).  Some
plugins provide no-op stubs, or just execute calls that won't work.

Not quite sure we gave enough guidance on proper multi-platform plugin
development, and some of the guidance we are still just learning.

-Michal


On Tue, Feb 10, 2015 at 12:18 PM, Horn, Julian C <julian.c.h...@intel.com>
wrote:

> The natural way to determine whether some functionality is available is to
> use the "feature detection" pattern.  That is, if you want to call some
> function normally found at "myobj.myfunc", you write code like this:
>
> If (myobj && (typeof myobj.myfunc === 'function')) ...
>
> For this to work you must take care to remove plugins that don't support
> your platform before you build for that platform.  For example, before you
> build for firefoxos, you must remove the barcodescanner plugin (and then
> add it back when you build for supported platforms).  Granted, this is
> awkward, but I think it's worse to read the package.json file.
>
> Really the CLI should make the feature detection pattern work without
> having to exclude plugins on unsupported platforms.  That is, if a plugin
> doesn't support a platform, then it should contribute nothing when you
> build for that platform.
>
>     Julian
>
> -----Original Message-----
> From: Axel Nennker [mailto:ignisvul...@gmail.com]
> Sent: Tuesday, February 10, 2015 11:48 AM
> To: dev
> Subject: Re: Does this plugin support the current platform?
>
> And then the app has to load that package.json ?
> On Feb 10, 2015 5:28 PM, "Steven Gill" <stevengil...@gmail.com> wrote:
>
> > Plugin.xml has a platforms tag for what platforms it supports. That
> > info gets uploaded to the Cordova plugins registry when publishing.
> >
> > Soon this info will be available in package.json file each plugin has.
> > On Feb 10, 2015 7:25 AM, "Axel Nennker" <ignisvul...@gmail.com> wrote:
> >
> > > Hi,
> > >
> > > is there a way how an app can determine whether a plugin supports
> > > the current  platform?
> > >
> > > E.g.: the barcodescanner plugin is not supporting firefoxos How
> > > could an app know that which out hardcoding this into the app?
> > >
> > > If there is a standard way in Cordova then this is a userland question.
> > > If not then this is a feature request to add this info to e.g.
> > > cordova/plugin_list exports.metadata ?!
> > >
> > > -Axel
> > >
> >
>

Reply via email to