Ionic push notification : Uncaught ReferenceError: PushNotification is not defined

Ionic push notification : Uncaught ReferenceError: PushNotification is not defined

您好,我是 Ionic 的新手。 我想为 android phone.

使用离子推送通知

我遵循了 ionic website

的所有指示

为了调试,我输入了ionic serve

我看到了

"Uncaught ReferenceError: PushNotification is not defined"

在 Chrome 控制台中。

当然,通知不起作用。

我错过了什么?

任何评论都会很helpful.Thank你。

下面是我所做的

我已经在终端输入了下面的代码

ionic add ionic-platform-web-client

ionic plugin add phonegap-plugin-push

ionic io init

我的离子配置信息

dev_push is false,

There is 'app_id'

There is 'api_key'

There is 'gcm_key'

Node.js v5.2.0(我也试过 v4.2.2)

离子客户端 v1.7.12

以下代码在$ionicPlatform.ready

var io = Ionic.io();

        var user = Ionic.User.current();

        if (!user.id) {
          user.id = Ionic.User.anonymousId();
        };

        // Just add some dummy data..
        user.set('name', 'moka');
        user.set('bio', 'This is my little bio');
        user.save();

        var push = new Ionic.Push({
          "onNotification": function(notification) {
            alert('Received push notification!');
          },
          "pluginConfig": {
            "android": {
              "iconColor": "#0000FF"
            }
          }
        });


        var callback = function(data) {
          push.addTokenToUser(user);
          user.save();
        };


        push.register(callback);

// 编辑

我改变了形式

ionic config set dev_push false

ionic config set dev_push true

不再显示

"Uncaught ReferenceError: PushNotification is not defined"

但是我不确定这是否正确。 因为写在this tutorial

to turn off your development mode

ionic push --google-api-key your-google-api-key
ionic config set gcm_key your-gcm-project-number
ionic config set dev_push false

所以 "Uncaught ReferenceError: PushNotification is not defined",如果我想在真正的 android 设备上测试,没关系?

不,没关系。

事实上,正如您所提到的,dev_push 在实际设备中进行测试时一定是错误的。

您可以手动将其设置为 false ionic config set dev_push false 或不在任何地方提及(默认情况下为 false):)

Cordova 和 Phonegap 插件仅适用于模拟器和设备。它们不适用于任何浏览器。

尽管使用 Ionic 您可以消除这些错误,但一个好的做法是像这样包装您的代码:

if (typeof PushNotification === "defined") {
   // your code here
}

这样在编写 BDD 或 E2E 测试时就不会抛出任何错误。

您还可以在以下位置添加您的代码:

document.addEventListener("deviceready", function () {

}

我能够修复以下错误:

  1. ionic remove ionic-platform-web-client
  2. cordova plugin remove phonegap-plugin-push
  3. ionic add ionic-platform-web-client
  4. ionic plugin add phonegap-plugin-push
  5. ionic io init