Плагин вибрации ionic ng-cordova не работает

Я новичок в 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>

Это app.js в папке 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 плагин вибрации.


person Manvick Paliwal    schedule 11.05.2015    source источник
comment
Есть ли шанс, что вы можете бросить нам больше информации об отладке? Если вы используете Android, сообщения от logcat или если вы используете 4.4+ из chrome devtools.   -  person laughingpine    schedule 11.05.2015
comment
Это дает следующие ошибки java-скрипта. Ошибка: [$injector:unpr] Неизвестный провайдер: $cordovaVibrationsProvider в ionic.bundle.js:8762 в ionic.bundle.js:12696 в Object.getService [как получено] (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 в forEach (ionic.bundle.js:9030) в nodeLinkFn (ionic.bundle.js:16398)   -  person Manvick Paliwal    schedule 12.05.2015
comment
У вас есть обновленные версии ngCordova и Ionic? И есть ли у вашего приложения разрешения на вибрацию? И ваш AndroidManifest.xml должен иметь разрешение на вибрацию: <uses-permission android:name="android.permission.VIBRATE" />   -  person Keval    schedule 12.05.2015
comment
Я установил этот плагин в свой текущий проект Ionic и без проблем запустил его на iphone 6. вы установили плагин, используя: плагин Cordova добавить org.apache.cordova.vibration? Другое дело, что плагин вибрации не использует промисы, поэтому установка .then() после vibrate() ничего не делает.   -  person Android Noob    schedule 15.05.2015
comment
Получил это работает. Большое спасибо всем. Я создал рабочий пример в репозитории github. github.com/manvick/vibration   -  person Manvick Paliwal    schedule 16.05.2015
comment
Где была проблема? Сейчас сравниваю свой проект с вашим и не нахожу разницы. Конечно, у вас работает, а у меня нет.   -  person David Slavík    schedule 29.05.2015
comment
Дэвид Славик проверьте этот рабочий пример плагина вибрации. github.com/manvick/vibration Или пришлите мне свой код на [email protected]   -  person Manvick Paliwal    schedule 17.06.2015


Ответы (2)


У меня были те же проблемы, моя была решена добавлением плагина Cordova, кажется, вы уже позаботились об этом: вот мои различия с вашим проектом:


Я использовал эту версию платформы Готов

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

В моем определении ионного приложения я первым поставил подключение 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. Хотя это кажется необязательным, потому что я считаю, что ионная сборка или ионный бег обнаружат, что вы используете вибрацию, и добавите ее для себя.

  <uses-permission android:name="android.permission.VIBRATE" />
person Diego Fortes    schedule 20.09.2015

При тестировании на устройстве убедитесь, что на устройстве включен звук. Многие (большинство) устройств «отключают» вибрацию, а также звук. Если вы выполняете отладку в браузере, вы должны увидеть «Вибрация для Xms». в консоли, где «X» — это количество миллисекунд, которое вы указали для функции вибрации. Это говорит о том, что плагин работает (очевидно, вы не можете вибрировать свой компьютер). Но опять же, при тестировании на устройстве убедитесь, что оно не отключено.

person John Shipp    schedule 14.04.2016