【问题标题】:ionic ng-cordova vibrate plugin not working离子 ng-cordova 振动插件不起作用
【发布时间】:2015-05-11 11:47:00
【问题描述】:

我是 ionic 和 cordova 的新手,这个振动插件不起作用。 能指出错误吗?

这是 index.html:

<body ng-app="starter">
    <ion-pane>
        <ion-header-bar class="bar-stable">
            <h1 class="title">Ionic Blank Starter</h1>
        </ion-header-bar>
        <ion-content ng-controller="myCtrl">
            <button ng-click="toggle()">Toggle</button>
        </ion-content>
    </ion-pane>
</body>

这是 js 文件夹中的 app.js:

var ionicApp = angular.module('starter', ['ionic', 'ngCordova'])

ionicApp.controller("myCtrl", function($scope, $cordovaVibration)) {

    $scope.toggle = function() {
        $ionicPlatform.ready(function() {
            $cordovaVibration.vibrate(100).then(function() {
                console.log("Phone vibrating");
            })

        });

    }

}

.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.Keyboard) {
            cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
        if (window.StatusBar) {
            StatusBar.styleDefault();
        }
    });
})

我添加了ng-cordova振动插件。

【问题讨论】:

  • 您有机会为我们提供更多调试信息吗?如果您在 Android 上,来自 logcat 的消息,或者如果从 chrome devtools 运行 4.4+。
  • 它给出了以下 java 脚本错误。错误:[$injector:unpr] 未知提供程序:ionic.bundle.js:8762 处 ionic.bundle.js:12696 处的 $cordovaVibrationsProvider [as get] (ionic.bundle.js:12843) 处 ionic.bundle .js:12701 在 getService (ionic.bundle.js:12843) 在 Object.invoke (ionic.bundle.js:12875) 在 extend.instance (ionic.bundle.js:17153) 在 ionic.bundle.js:16399 在nodeLinkFn (ionic.bundle.js:16398) 处的 forEach (ionic.bundle.js:9030)
  • 您有更新版本的 ngCordova 和 Ionic 吗?您的应用是否具有振动权限?并且您的AndroidManifest.xml 必须具有振动权限:&lt;uses-permission android:name="android.permission.VIBRATE" /&gt;
  • 我将此插件安装到我的 Ionic 当前项目中,并在 iphone 6 上运行它,没有任何问题。您是否使用以下方法安装了插件:cordova plugin add org.apache.cordova.vibration?另一件事是振动插件不使用承诺,因此将 .then() 放在 vibrate() 之后不会做任何事情。
  • 得到这个工作。非常感谢大家。我在 github 存储库中创建了一个工作示例。 github.com/manvick/vibration

标签: angularjs cordova ionic ngcordova


【解决方案1】:

我遇到了同样的问题,我的问题通过添加 Cordova 插件得到了解决,看来您已经解决了这个问题:这是我与您的项目的不同之处:


我使用了这个版本的平台准备好了

    $scope.toggle = function() {
      document.addEventListener( "deviceready", function() {
           $cordovaVibration.vibrate( 2000 ); }, false );
    };

我的 ionic App 定义我首先放置了 ngCordova 连接。虽然这可能不是问题

var ionicApp = angular.module('starter', ['ngCordova','ionic' ])

对我来说解决问题的是正确安装插件:尝试:

 cordova plugin add cordova-plugin-vibration

而不是官方网站说:

cordova plugin add org.apache.cordova.vibration

我将权限添加到 /platforms/android/AndroidManifest.xm。虽然这似乎没有必要,因为我相信 ionic build 或 ionic run 发现您正在使用振动并为自己添加它

  <uses-permission android:name="android.permission.VIBRATE" />

【讨论】:

    【解决方案2】:

    在设备上进行测试时,请确保设备未静音。许多(大多数)设备将“静音”振动和音频。如果您在浏览器中进行调试,您应该会看到“Vibrating for Xms”。在控制台中,“X”是您提供给振动功能的毫秒数。这告诉你插件正在工作(显然你不能振动你的电脑)。但是,同样,在设备上进行测试时,请确保它没有处于静音状态。

    【讨论】:

      【解决方案3】:

      已解决科尔多瓦/离子 v5/v6

      安装:

      ionic cordova plugin add cordova-plugin-vibration
      npm install @ionic-native/vibration
      

      示例函数:

      selectTypeVehicle(type) {
        navigator.vibrate(1000);
      }
      

      【讨论】:

        猜你喜欢
        • 2023-03-31
        • 2018-03-11
        • 2017-08-05
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-23
        • 2016-09-21
        相关资源
        最近更新 更多