ios - Ionic 3.x : Push notification on iOS not working (works on Android? ) Ionic Native 插件推送

标签 ios push-notification ionic3 firebase-cloud-messaging phonegap-plugins

我正在使用/尝试使用 Ionic Native PushFirebase Cloud Messaging .

(我相信)我正确安装了 Ionic Native Push Plugin。至少当我测试发送推送通知时它在 Android 上运行。

这是我的代码:

import { Injectable } from '@angular/core';
import { Push, PushObject, PushOptions } from '@ionic-native/push';
import { AlertController } from 'ionic-angular';

@Injectable()
export class FcmProvider {

  constructor(private push: Push,
              private alertCtrl: AlertController) {
    this.getPermission();
  }

  getPermission() {
    this.initPush();
    this.push.hasPermission().then((res: any) => {
      if (res.isEnabled) {
        console.log('We have permission to send push notifications');
      } else {
        console.log('We do NOT have permission to send push notifications');
        this.presentErrorAlert();
      }
    });
  }

  private initPush() {
    const options: PushOptions = {
      android: {},
      ios: {
          alert: 'true',
          badge: true,
          sound: 'false'
      },
      windows: {},
      browser: {
          pushServiceURL: 'http://push.api.phonegap.com/v1/push'
      }
    };
    const pushObject: PushObject = this.push.init(options);

    pushObject.on('notification').subscribe((notification: any) => {
      console.log('Received a notification', notification);
      this.presentSuccessAlert(notification.message);
    });

    pushObject.on('registration').subscribe((registration: any) => console.log('Device registered', registration));

    pushObject.on('error').subscribe(error => console.error('Error with Push plugin', error));
  }

  private presentErrorAlert(): void {
    let errorAlert = this.alertCtrl.create({
      title: "Error",
      subTitle: "Wir bekamen kein Token.",
      buttons: ["Mies..."]
    });
    errorAlert.present();
  }

  private presentSuccessAlert(message: string): void {
    let alert = this.alertCtrl.create({
      title: "Neue Benachrichtigung",
      message: message,
      buttons: [
        {
          text: "Abbrechen",
          role: "cancel",
          handler: () => {
            console.log("Cancel clicked");
          }
        },
        {
          text: "Ansehen",
          handler: () => {
            console.log("Show clicked");
          }
        }
      ]
    });
    alert.present();
  }

}

当我在 iOS 上使用 XCode 进行调试时,我收到以下消息:

Push Plugin VoIP missing or false
Push Plugin register called
PushPlugin.register: setting badge to false
PushPlugin.register: clear badge is set to 0
PushPlugin.register: better button setup
FCM Sender ID <my-id>
Using FCM Notification
4.11.0 - [Firebase/Core][I-COR000003] The default Firebase app has not yet been configured. Add `[FIRApp configure];` (`FirebaseApp.configure()` in Swift) to your application initialization. Read more: <some-shortened-url>.
4.11.0 - [Firebase/Analytics][I-ACS023007] Firebase Analytics v.40100000 started
4.11.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see <some-shortened-url>)
4.11.0 - [Firebase/Messaging][I-FCM001000] FIRMessaging Remote Notifications proxy enabled, will swizzle remote notification receiver handlers. If you'd prefer to manually integrate Firebase Messaging, add "FirebaseAppDelegateProxyEnabled" to your Info.plist, and set it to NO. Follow the instructions at:
https://firebase.google.com/docs/cloud
-messaging/ios/client#method_swizzling_in_firebase_messaging
to ensure proper integration.
FCM Registration Token: <my-token>
We have permission to send push notifications
Push Plugin register success: <some-id>
Device registered [object Object]

就我而言,一切似乎都很好。为什么推送通知不通过?

此外,这是我的系统的一些规范:

pdate: After some googling, here is additional information. Still can’t get it to work though!

- FirebaseInstanceID (2.0.10)
- FirebaseMessaging (2.0.8):
cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.19.2
    ionic (Ionic CLI) : 3.20.0

global packages:

    cordova (Cordova CLI) : 7.1.0 

local packages:

    @ionic/app-scripts : 3.1.8
    Cordova Platforms  : android 7.1.0 ios 4.5.4
    Ionic Framework    : ionic-angular 3.9.2

System:

    ios-deploy : 1.9.2 
    ios-sim    : 6.1.2 
    Node       : v9.4.0
    npm        : 5.8.0 
    OS         : macOS High Sierra
    Xcode      : Xcode 9.3 Build version 9E145 

Environment Variables:

    ANDROID_HOME : not set

Misc:

    backend : pro

最佳答案

想通了! 我没有配置 iOS key 。 以下是此问题的 future 访问者的说明:) https://firebase.google.com/docs/cloud-messaging/ios/certs

关于ios - Ionic 3.x : Push notification on iOS not working (works on Android? ) Ionic Native 插件推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715743/

相关文章:

ios - 垂直 ScrollView 内的水平 ScrollView 不起作用

ios sqlite 插入数据,如果之前没有插入

ios - ionic3 - Apple Mach -O Linker (Id) 错误?

android - ionic 3 deployment --release build 比 --prod 慢得多

ios - 如何向选定的 iPhone 用户发送推送通知?

javascript - Ionic 构建不会更新 Assets 文件夹的内容 (Ionic 3.5)

IOS Core Data 异步保存

ios - Cocoa/iOS 错误处理风格,没有 NSError

android - 使用 Phonegap 时是否需要 AndroidManifest.xml?

php - 从我们的服务器发送推送通知时的关键结果