【问题标题】:use cordova plugins inside ionic project在 ionic 项目中使用 cordova 插件
【发布时间】:2015-12-11 10:14:19
【问题描述】:

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

1.使用"ionic start myproj"创建了一个离子应用

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

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

3.在ionic 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();
  });
})

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

" 无法读取行 navigator.helloworld.say();

的未定义属性 'type'

请让我知道我是否需要在任何 xml 中添加任何条目以手动添加插件,或者我是否遗漏了什么?

【问题讨论】:

  • 您没有导航器,因为您是在浏览器中测试您的应用程序。

标签: cordova ionic-framework ionic cordova-plugins


【解决方案1】:

插件只能在真实设备或模拟器上工作,因为它们需要cordova.js 才能正常工作,这仅在您在设备或模拟器上运行应用程序时可用。看到这条线你的index.html

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

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

【讨论】:

    【解决方案2】:

    第一个解决方案: 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;
              },
    

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

    第 4 个解决方案将此 js 代码复制并粘贴到您的 Angular 代码中,然后使用 helloworld.say();

    【讨论】:

      【解决方案3】:

      在您的浏览器中开发时,Cordova 插件不起作用,因为每个插件都访问您的浏览器中不可用的特定 API(例如摄像头、麦克风、加速度计)。另外,有些插件不能在模拟器中运行,比如Camera插件,所以需要在你的物理设备上开发。

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

      【讨论】:

        猜你喜欢
        • 2020-08-29
        • 2018-05-10
        • 1970-01-01
        • 1970-01-01
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-08
        相关资源
        最近更新 更多