Skip to content

Incompatibility with some Cordova Plugins #35

@IstoraMandiri

Description

@IstoraMandiri

I've been trying to use https://github.com/petermetz/cordova-plugin-ibeacon to add iBeacon support to one of my projects, but I ran into issues which I believe are caused by the DOM replacement of MeteorRider.

The iBeacon package provides a didRangeBeaconsInRegion method that should fire about every second. It uses uses a delegate pattern (https://github.com/petermetz/cordova-plugin-ibeacon/blob/master/www/LocationManager.js#L41), which for some reason will break after MeteorRider is initialised.

Here's a sample implementation:

delegate = new cordova.plugins.locationManager.Delegate().implement
  didRangeBeaconsInRegion: (pluginResult) ->
    console.log pluginResult

cordova.plugins.locationManager.setDelegate delegate

beaconRegion = new cordova.plugins.locationManager.BeaconRegion(identifier, uuid);
cordova.plugins.locationManager.startRangingBeaconsInRegion beaconRegion 

And here are a few scenarios I tried out, all including the startup.js script for Hot Code Push:

  1. Initialise cordova.plugins.locationManager (iBeacon plugin) in meteor app on Metoer.startup. Result: No errors, but delegate callbacks are not fired.
  2. Initialise the plugin in the Cordova project index.html before MeteorRider (within onDeviceReady), init MR after a 3 second setTimeout. Result: plugin methods are fired successfully for 3 seconds, and then stop.
  3. Don't init MR at all. Result: Plugin works as expected, but obviously Meteor doesn't load.

The strange thing is that in the first two scenarios, if I update the Meteor project to cause a hot code push, all of the delegate methods are fired as the project reloads -- they seemed to have queued up in the background, and I get the all of the previously expected logs flooding the console at once.

I eventually switched to packmeteor and had no issues, but I would prefer to use MeteorRider if this issue is resolved.

This may be too much of a fringe case to look into, but I figured I should flag it. If anyone has any potential solutions I'd be happy to try them out.

Cheers!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions