【发布时间】: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必须具有振动权限:<uses-permission android:name="android.permission.VIBRATE" /> -
我将此插件安装到我的 Ionic 当前项目中,并在 iphone 6 上运行它,没有任何问题。您是否使用以下方法安装了插件:cordova plugin add org.apache.cordova.vibration?另一件事是振动插件不使用承诺,因此将 .then() 放在 vibrate() 之后不会做任何事情。
-
得到这个工作。非常感谢大家。我在 github 存储库中创建了一个工作示例。 github.com/manvick/vibration
标签: angularjs cordova ionic ngcordova