web-dev-qa-db-ja.com

Ionic 3.x:iOSでのプッシュ通知が機能しない(Androidで動作しますか?)Ionicネイティブプラグインプッシュ

みなさん、こんにちは:slight_smile:

Ionic Native Push with Firebase Cloud Messaging を使用しています/使用しようとしています。

(私は信じています)Ionicネイティブプッシュプラグインを正しくインストールしました。少なくともプッシュ通知の送信をテストしたときは、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();
  }

}

また、XCodeを使用してiOSでデバッグすると、次のメッセージが表示されます。

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
5
J. Hesters

理解した! iOSキーを設定しませんでした。この質問の今後の訪問者向けの手順は次のとおりです:) https://firebase.google.com/docs/cloud-messaging/ios/certs

3
J. Hesters

まず、デバイス登録トークンが受信されているかどうかを確認し、受信されていない場合は、FirebaseAppDelegateProxyEnabledをYESに追加してから、郵便配達員を介してプッシュ通知を送信しようとします

  "notification":{
    "title":"Notification title",
    "body":"Notification body",
    "sound":"default",
    "click_action":"FCM_PLUGIN_ACTIVITY",
    "icon":"fcm_Push_icon"
  },
  "data":{
    "param1":"value1",
    "param2":"value2"
  },
    "to":"<token>",
    "priority":"high",
    "restricted_package_name":""
}

エラーInvalidApnsCredentialを取得した場合、問題はプラグインではありません

Appleプッシュ通知権限のある開発キー https://developer.Apple.com/account/ios/authkey/ )を追加(作成)する必要があります

およびアプリIDプレフィックス https://developer.Apple.com/account/ios/identifier/bundle

firebase iOSアプリへ:Firebaseコンソール->プロジェクト->設定->クラウドメッセージング-> iOSアプリの設定

0
Manthan Vaghani