Ионная подача - Ошибка выполнения: Push-плагин не найден (IONIC 2)

Я использую push-уведомление в приложении ionic 2 с кодом ниже.

import { Push, PushToken } from '@ionic/cloud-angular';
   @Component({...})
   export MyPage {     
    constructor(public platform: Platform, public menu: MenuController, public push: Push){
     this.initializeApp();
    }
    initializeApp() {
      this.platform.ready().then(() => {
       if (this.push) {
        this.push.register().then((t: PushToken) => {
          return this.push.saveToken(t);
        }).then((t: PushToken) => {
          console.log('Token saved:', t.token);
          window.localStorage.setItem("deviceToken", t.token);
        });

        this.push.rx.notification()
          .subscribe((msg) => {
            alert(msg.title + ': ' + msg.text);
            console.log('notification msg', msg);
          });
        }
      }
    }
}

когда я бегу на устройстве, он работает нормально. но я делаю ионную подачу, это дает ошибку ниже из-за внедрения Push в конструкторе

error_handler.js:53 TypeError: platform.toLowerCase is not a function
    at Insights.normalizeDevicePlatform (http://localhost:8100/build/main.js:70460:25)
    at Insights.markActive (http://localhost:8100/build/main.js:70450:33)
    at Insights.checkActivity (http://localhost:8100/build/main.js:70439:22)
    at http://localhost:8100/build/main.js:70415:27
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:9723)
    at Object.onInvokeTask (http://localhost:8100/build/main.js:41825:37)
    at t.invokeTask (http://localhost:8100/build/polyfills.js:3:9659)
    at e.runTask (http://localhost:8100/build/polyfills.js:3:7083)
    at invoke (http://localhost:8100/build/polyfills.js:3:10836)
    at e.args.(anonymous function) (http://localhost:8100/build/polyfills.js:2:30123)
ErrorHandler.handleError @ error_handler.js:53

Любая помощь оценивается

2 ответа

Решение

Проверьте, есть ли у вас линия "@ionic/cloud-angular":"^ 0.9.0" в package.json файл внутри dependencies,

Если это так, переключите его на ^0.9.1, сохраните файл и запустите npm install в корневой папке проекта. Это должно обновить @ionic/cloud-angular в 0.9.1 И его @ionic/cloud зависимость от 0.15.1,

Тогда беги ionic serve и это должно работать.

Вы должны проверить, существует ли объект Cordova, прежде чем выполнять операции Cordova.

Он не существует на службе, так как браузер не является мобильным устройством

initializeApp() {
      this.platform.ready().then(() => {
       if(!(<any>window).cordova) return;
       ...the native code you want to execute...
      });
    }
Другие вопросы по тегам