ionic2 推送通知错误:5 秒后设备未触发

Posted

技术标签:

【中文标题】ionic2 推送通知错误:5 秒后设备未触发【英文标题】:ionic2 push notification error : device has not fired after 5 seconds 【发布时间】:2017-01-31 14:54:23 【问题描述】:

我正在尝试在最新的 ionic2 版本中实现推送通知,这是我遵循此文档的代码:https://medium.com/@ankushaggarwal/push-notifications-in-ionic-2-658461108c59#.2oe9zk3z5

app.component.ts

import  Component, ViewChild  from '@angular/core';
import  Platform, Nav, AlertController  from 'ionic-angular';
import  StatusBar, Splashscreen, AdMob, Push  from 'ionic-native';

import  HomePage  from '../pages/home/home';
import  Config  from '../providers/config';

import  DownloadPage  from '../pages/download/download'

@Component(
  templateUrl: 'app.html'
)
export class MyApp     
  @ViewChild(Nav) nav: Nav;
  rootPage = HomePage;

  constructor(public platform: Platform, public conf: Config, public alertCtrl: AlertController) 

    platform.ready().then(() => 
      StatusBar.styleDefault();
      Splashscreen.hide();

        AdMob.createBanner(adId : this.conf.admobBanner, isTesting:true).then(() =>    AdMob.showBanner(8); );

      this.initPushNotification();


    );

  

    initPushNotification()
    if (!this.platform.is('cordova')) 
      console.warn("Push notifications not initialized. Cordova is not available - Run in physical device");
      return;
    
    let push = Push.init(
      android: 
        senderID: "xxxxxx" // I have senderID
      ,
      ios: 
        alert: "true",
        badge: false,
        sound: "true"
      ,
      windows: 
    );

    push.on('registration', (data) => 
      console.log("device token ->", data.registrationId);
      //TODO - send device token to server
    );
    push.on('notification', (data) => 
      console.log('message', data.message);
      let self = this;
      //if user using app and push notification comes
      if (data.additionalData.foreground) 
        // if application open, show popup
        let confirmAlert = this.alertCtrl.create(
          title: 'New Notification',
          message: data.message,
          buttons: [
            text: 'Ignore',
            role: 'cancel'
          , 
            text: 'View',
            handler: () => 
              //TODO: Your logic here
              self.nav.push(DownloadPage);
            
          ]
        );
        confirmAlert.present();
       else 
        //if user NOT using app and push notification comes
        //TODO: Your logic on click of push notification directly
        self.nav.push(DownloadPage);
        console.log("Push notification clicked");
      
    );
    push.on('error', (e) => 
      console.log(e.message);
    );
  

我已经获得了 FCM 服务器密钥和 senderID 并设置了 ionic Icloud

所以当我在我的 android 设备上运行它时,它会在控制台中显示此错误:

[14:41:35]  console.log: deviceready has not fired after 5 seconds. 
[14:41:35]  console.log: Channel not fired: onPluginsReady 
[14:41:35]  console.log: Channel not fired: onCordovaReady 
[14:41:36]  error opening ws message: "category":"console","type":"log","data":["DEVICE READY FIRED AFTER",4182,"ms"] 
[14:41:47]  error opening ws message: "category":"console","type":"log","data":["device token 
            ->","cJ5Iw6b9OpW:APA91bHmplWN80qKFld0wtcfnFCmO5kjFHj1tuCwMkCOMKYcZ-HbMC4i7Vg1hIbdL9d0eDdl2c7MWsJ79XrLQ3m4cnEwj6I7E3s2eDO58yrqg9C_xGsLkLWYWQ"]

【问题讨论】:

我已经使用 OneSignal API 做了推送通知,离子云的推送通知有很多问题,我认为现在已经解决了。 【参考方案1】:

你可以改变:

console.log("device token ->", data.registrationId);

到:

console.log("device token:");
console.log(JSON.stringify(data));

希望对你有帮助

【讨论】:

以上是关于ionic2 推送通知错误:5 秒后设备未触发的主要内容,如果未能解决你的问题,请参考以下文章

Ionic 2:iOS 推送通知 - 注册 ID 错误

iOS 本地推送通知未唤醒设备

iOS,电话间隙推送插件('通知')未触发

设备上未收到 iOS 推送通知

当应用程序未连接到 xcode 时,iOS 8 静默推送通知不会触发 didReceiveRemoteNotification 方法

Android 解析推送通知和新 GCM 生成错误的设备令牌并解析推送通知不起作用