Неперехваченная ошибка: [$injector: unpr] Неизвестный поставщик: $ cordovaPushV5Provider <- $cordovaPushV5

#angularjs #cordova #ionic-framework

#angularjs #кордова #ионный фреймворк

Вопрос:

Я работаю с плагином cordovaPushV5, чтобы иметь возможность реализовывать push-уведомления в моем приложении.

Я делаю точно так же, как в этом руководстве: https://github.com/yafraorg/yafra/wiki/Blog-Ionic-PushV5

Когда я запускаю приложение в своем браузере, я получаю указанную выше ошибку в консоли.

Я правильно установил плагин и включил необходимые строки кода в свой App.js файл, как показано ниже.

Может кто-нибудь помочь мне узнать, где я ошибаюсь?

 /****ENABLE RECEIVING OF PUSH NOTIFICATIONS****/
/*
 * start within Platform ready
 */
$ionicPlatform.ready(function() {
    // register push notification and get local push token
    localStorage.myPush = ''; // I use a localStorage variable to persist the token
    $cordovaPushV5.initialize(  // important to initialize with the multidevice structure !!
        {
            android: {
                senderID: "704649974960"
            },
            ios: {
                alert: 'true',
                badge: true,
                sound: 'false',
                clearBadge: true
            },
            windows: {}
        }
    ).then(function (result) {
        $cordovaPushV5.onNotification();
        $cordovaPushV5.onError();
        $cordovaPushV5.register().then(function (resultreg) {
            localStorage.myPush = resultreg;
            // SEND THE TOKEN TO THE SERVER, best associated with your device id and user
        }, function (err) {
            // handle error
        });
    });
});

/*
 * Push notification events
 */
$rootScope.$on('$cordovaPushV5:notificationReceived', function(event, data) {  // use two variables here, event and data !!!
    if (data.additionalData.foreground === false) {
        // do something if the app is in foreground while receiving to push - handle in app push handling
        
    } else {
       // handle push messages while app is in background or not started
    }
    if (Device.isOniOS()) {
        if (data.additionalData.badge) {
            $cordovaPushV5.setBadgeNumber(NewNumber).then(function (result) {
                // OK
            }, function (err) {
                // handle error
            });
        }
    }

    $cordovaPushV5.finish().then(function (result) {
        // OK finished - works only with the dev-next version of pushV5.js in ngCordova as of February 8, 2016
    }, function (err) {
        // handle error
    });
});

$rootScope.$on('$cordovaPushV5:errorOccurred', function(event, error) {
    // handle error
});
/****END ENABLE RECEIVING OF PUSH NOTIFICATIONS****/  

Комментарии:

1. Вы внедрили $cordovaPushV5 свой контроллер? Вы добавили ngCordova.plugins.push_v5 модуль в качестве зависимости в свое приложение?

2. @RaviTeja Я ввел его, и код находится внутри: .run(function ($rootScope,$cordovaPushV5,$ionicPlatform, $state, AuthService, AUTH_EVENTS) { //Code here } я не добавил зависимость, но я установил ngCordova. Как мне его добавить, пожалуйста?

Ответ №1:

Плывем в одной лодке. Увидел, что в моем файле отсутствует пара вещей index.html . Я использую ionic project.

 <!-- ionic/angularjs js -->
<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="lib/ionic-service-core/ionic-core.js"></script>
<script src="lib/ionic-service-push/ionic-push.js"></script>

<!-- ngCordova -->
<script src="lib/cordova/ng-cordova.min.js"></script>

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

Если вы видите, что для файла есть две папки ng-cordova.min.js . У lib/ngCordova/dist/ng-cordova.min.js него есть $cordovaPushV5 определение.

Надеюсь, это поможет.

Комментарии:

1. Спасибо. Я также решил ошибку, следуя тому, что сказал Рави выше.