【问题标题】:Getting PhoneGap plugins working让 PhoneGap 插件工作
【发布时间】:2015-10-27 05:41:14
【问题描述】:

我昨天在tutorials 之后使用PhoneGap Developer App 创建了我的第一个phonegap 应用程序。现在我正在尝试让插件正常工作,我不确定我是在某处遗漏了一步还是完全错误。

在 OSX 上,我使用 brew install nodejs 后跟 sudo npm install -g phonegap 安装了 nodejs。

安装 phonegap 后,我创建了一个示例项目 phonegap create sample-app,然后是 cd sample-appphonegap serve。我现在可以在 phonegap android 应用程序中看到示例应用程序,如果我对 html / js 进行更改,我可以看到它立即反映在我的手机上。

现在我已经尝试安装手电筒插件,看看是否可以让插件工作。

phonegap cordova plugin add https://github.com/EddyVerbruggen/Flashlight-PhoneGap-Plugin.git
phonegap cordova prepare

在我的 index.html 中,我包含了 flashligh.js:

    <script type="text/javascript" src="cordova.js"></script>
    <script type="text/javascript" src="js/plugins/Flashlight.js"></script>
    <script type="text/javascript" src="js/index.js"></script>

在生成的index.js 中,我添加了一行来切换手电筒:window.plugins.flashlight.toggle();

// Update DOM on a Received Event
receivedEvent: function(id) {

    window.plugins.flashlight.toggle();

    var parentElement = document.getElementById(id);
    var listeningElement = parentElement.querySelector('.listening');
    var receivedElement = parentElement.querySelector('.received');

    listeningElement.setAttribute('style', 'display:none;');
    receivedElement.setAttribute('style', 'display:block;');
    receivedElement.innerHtml = navigator.geolocation.getCurrentPosition;

    console.log('Received Event: ' + id);

}

我已重新启动应用程序以确保(终止进程并再次运行phonegap serve),但我没有看到任何手电筒开启。

输入phonegap plugins list,我得到以下结果:

cordova-plugin-flashlight 3.0.0 "Flashlight"
cordova-plugin-geolocation 1.0.1 "Geolocation"
cordova-plugin-whitelist 1.0.0 "Whitelist"

我是否遗漏了任何步骤或有其他方法可以做到这一点?

【问题讨论】:

  • 您不必手动添加脚本,它在插件安装时完成。 &lt;script type="text/javascript" src="js/plugins/Flashlight.js"&gt;&lt;/script&gt;。但是 3rd 方插件在 phonegap android 应用上不起作用(我想你正在使用它,对吧?)
  • 你能推荐任何可以在 Phonegap 上工作的插件,以便我可以测试他们的开发者应用程序是否与插件一起工作?
  • 所有核心插件都可以工作docs.phonegap.com/plugin-apis
  • 我也尝试过振动插件,但没有任何运气(它也列在该列表中),做了phonegap cordova plugin add cordova-plugin-vibration 并将navigator.vibrate(3000); 添加到onDeviceReady。如果他们的开发者应用无法使用插件(这是开发应用:play.google.com/store/apps/details?id=com.adobe.phonegap.app),我还应该如何测试它?
  • 如果你有 cordova.js 而不是 phonegap.js 没关系。 phonegap run android --device 也应该可以工作

标签: cordova phonegap-plugins cordova-plugins


【解决方案1】:

您能否确认您已将插件添加到您的 config.xml 中?

应该看起来像这样。

<gap:plugin name="cordova-plugin-flashlight" source="npm />

【讨论】:

    【解决方案2】:

    我摆脱了phonegap,直接使用cordova,插件工作正常。

    cordova create app za.co.mycee.app "MyCee App"
    cd app
    cordova platforms add android
    cordova platforms add ios
    
    # add plugins
    cordova plugin add cordova-plugin-device
    cordova plugin add cordova-plugin-console
    cordova plugin add cordova-plugin-dialogs
    cordova plugin add cordova-plugin-geolocation
    
    # run on phond
    cordova run android
    

    在生成的index.js上我只是从网页上复制了代码sn-ps:

    // onSuccess Callback
    //   This method accepts a `Position` object, which contains
    //   the current GPS coordinates
    //
    function onSuccess(position) {
        var element = document.getElementById('geolocation');
        element.innerHTML = 'Latitude: '  + position.coords.latitude      + '<br />' +
                            'Longitude: ' + position.coords.longitude     + '<br />' +
                            '<hr />'      + element.innerHTML;
    }
    
    // onError Callback receives a PositionError object
    //
    function onError(error) {
        alert('code: '    + error.code    + '\n' +
              'message: ' + error.message + '\n');
    }
    

    onDeviceReady 里面我添加了这一行:

    var watchID = navigator.geolocation.watchPosition(onSuccess, onError, { timeout: 30000 });
    

    index.html我添加了这个html:

    <div id="geolocation">
                    GEO Location Goes Here
                </div>
    

    现在每次我运行cordova run android 时,我都可以看到正在添加的 GPS 坐标。不知道为什么我不能让它在 Phonegap 中工作,Cordova 工作完美。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-15
      • 1970-01-01
      相关资源
      最近更新 更多