在离子项目中使用cordova插件

时间:2015-09-15 08:27:35

标签: cordova ionic-framework ionic cordova-plugins

我是Ionic和Cordova的新手。我正在尝试添加插件

1.使用"ionic start myproj"

处理离子应用程序

2.使用以下评论添加了cordova插件

cordova plugin add https://github.com/domaemon/org.apache.cordova.plugin.helloworld.git

3.在离子app.js中添加navigator.helloworld.say();,如下所述

.run(function($ionicPlatform) {
  $ionicPlatform.ready(function() {
    // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
    // for form inputs)


    if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
      cordova.plugins.Keyboard.disableScroll(true);

    }
    if (window.StatusBar) {
      // org.apache.cordova.statusbar required
      StatusBar.styleLightContent();
    }

    navigator.helloworld.say();
  });
})

当我通过“离子服务”运行代码时..我没有收到问候语警报,但我在控制台中收到以下错误,如下所示

“无法读取 navigator.helloworld.say();

行的未定义属性'type'

请告诉我,我是否需要在任何xml中添加任何条目以添加mannual插件或者我是否会错过任何内容?

3 个答案:

答案 0 :(得分:2)

插件仅适用于真实设备或模拟器,因为它们需要cordova.js才能正常运行,只有在设备或模拟器上运行应用程序时才能使用。请参阅此行index.html

<!-- cordova script (this will be a 404 during development) -->
        <script src="cordova.js"></script>

cordova.js包含应用程序的所有插件js。 有关详细信息,请参阅此answer

答案 1 :(得分:0)

第一个解决方案:  1.检查此插件是否被http://ngcordova.com/包裹。

第二种解决方案: 2.写包装器=角度工厂:

.factory('factoryname', ['$q', '$window','$state', function ($q, $window, $state) {
return {
callStateListener: function () {
            var q = $q.defer();

            if (!$window.cordova) {
              q.reject('Not supported without cordova.js');
            } else {
              navigator.helloworld.say();
             return q.promise;
          },

第3个解决方案: 将['$ window']依赖项添加到您想要使用插件的模块中。并使用navigator.helloworld.say();

第4个解决方案将此js代码复制并粘贴到其顶部的角度代码中并使用helloworld.say();

答案 2 :(得分:0)

Cordova插件在浏览器中进行开发时不起作用,因为每个插件都会访问浏览器中没有的特定API(如摄像头,麦克风,加速度计)。此外,某些插件在模拟器中不起作用,例如Camera插件,因此需要在物理设备上进行开发。

http://forum.ionicframework.com/t/can-not-use-cordova-plugins-inside-ionic-project/32459/4