Push通知をIonic + Angularアプリ上でFirebaseとともに使う
Webフレームワーク: Angular プラットフォーム: iOS, Android
アプリケーション開発者がユーザーに提供する最も一般的な機能の 1 つは、プッシュ通知です。このチュートリアルでは、 Firebase Cloud Messaging を iOS と Android で動作させるために必要なすべての手順について説明します。
Firebase からのプッシュ通知の登録とモニタリングを行うために、Ionic+Angular アプリケーションで Push Notification API for Capacitor を利用します。
要件
Capacitor を使用して iOS および Android アプリケーションを構築およびデプロイするには、少しばかりのセットアップが必要です。先に進む前に、 指示に従って必要な Capacitor の依存関係をここにインストールしてく ださい 。
iOS でプッシュ通知をテストするためには、Apple は、 有料の Apple Developer Account を要求します。
また、プッシュ通知には Firebase を使用していますので、Firebase SDK を使用している他の Cordova プラグインを使用している場合は、それらが最新バージョンであることを確認してください。
Ionic Capacitorアプリの準備
既存のIonicアプリがある場合は、このセクションをスキップしてください。ない場合は、まずIonicアプリを作成しましょう。
お好みのターミナルで、最新バージョンのIonic CLIをインストールします:
npm install -g @ionic/cli
次に、CLIを使用してblankスタータープロジェクトに基づいた新しいIonic Angularアプリを作成し、capAppと呼びます:
ionic start capApp blank --type=angular
アプリケーションが正常に作成されたら、新しく作成されたプロジェクトディレクトリに移動します:
cd capApp/
最後に、capacitor.config.tsのappIdを編集します。
const config: CapacitorConfig = {
- appId: 'io.ionic.starter',
+ appId: 'com.mydomain.myappnam',
appName: 'capApp',
webDir: 'www'
};
アプリのビルドとプラットフォームの追加
このプロジェクトにネイティブプラットフォームを追加する前に、アプリを少なくとも1回ビルドする必要があります。Webビルドにより、Capacitorが必要とするWebアセットディレクトリ(Ionic Angularプロジェクトではwwwフォルダ)が作成されます。
ionic build
次に、iOSとAndroidプラットフォームをアプリに追加しましょう。
ionic cap add ios
ionic cap add android
これらのコマンドを実行すると、プロジェクトのルートにandroidとiosの両方のフォルダが作成されます。これらは完全に独立したネイティブプロジェクトの成果物であり、Ionicアプリの一部と見なす必要があります(つまり、ソース管理にチェックインします)。
Capacitorプッシュ通知APIの使用
まず、Capacitorプッシュ通知プラグインをインストールする必要があります
npm install @capacitor/push-notifications
npx cap sync
次に、Firebaseに進む前に、Capacitor Push Notification APIを使用してアプリケーションがプッシュ通知に登録できることを確認する必要があります。また、通知が届いてアプリがデバイスで開いているときに通知のペイロードを表示するalertを追加します(代わりにconsole.log文を使用することもできます)。
アプリでhome.page.tsファイルに移動し、import文とconstを追加してCapacitor Push APIを使用します:
import {
ActionPerformed,
PushNotificationSchema,
PushNotifications,
Token,
} from '@capacitor/push-notifications';
次に、プッシュ通知の登録と監視のためのAPIメソッドを含むngOnInit()メソッドを追加します。また、何が起きているかを監視するために、いくつかのイベントにalert()を追加します:
export class HomePage implements OnInit {
ngOnInit() {
console.log('Initializing HomePage');
// プッシュ通知の使用許可を要求
// iOSはユーザーに許可を求め、許可されたかどうかを返す
// Androidは許可を求めずにそのまま許可する
PushNotifications.requestPermissions().then(result => {
if (result.receive === 'granted') {
// Apple / Googleに登録してAPNS/FCM経由でプッシュを受信
PushNotifications.register();
} else {
// エラーを表示
}
});
// 成功した場合、通知を受信できるはず
PushNotifications.addListener('registration',
(token: Token) => {
alert('Push registration success, token: ' + token.value);
}
);
// セットアップに問題があり、プッシュが動作しない
PushNotifications.addListener('registrationError',
(error: any) => {
alert('Error on registration: ' + JSON.stringify(error));
}
);
// アプリがデバイスで開いている場合、通知ペイロードを表示
PushNotifications.addListener('pushNotificationReceived',
(notification: PushNotificationSchema) => {
alert('Push received: ' + JSON.stringify(notification));
}
);
// 通知をタップしたときに呼び出されるメソッド
PushNotifications.addListener('pushNotificationActionPerformed',
(notification: ActionPerformed) => {
alert('Push action performed: ' + JSON.stringify(notification));
}
);
}
}
home.page.tsの完全な実装は以下の通りです:
import { Component, OnInit } from '@angular/core';
import {
ActionPerformed,
PushNotificationSchema,
PushNotifications,
Token,
} from '@capacitor/push-notifications';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss'],
})
export class HomePage implements OnInit {
ngOnInit() {
console.log('Initializing HomePage');
// プッシュ通知の使用許可を要求
// iOSはユーザーに許可を求め、許可されたかどうかを返す
// Androidは許可を求めずにそのまま許可する
PushNotifications.requestPermissions().then(result => {
if (result.receive === 'granted') {
// Apple / Googleに登録してAPNS/FCM経由でプッシュを受信
PushNotifications.register();
} else {
// エラーを表示
}
});
PushNotifications.addListener('registration', (token: Token) => {
alert('Push registration success, token: ' + token.value);
});
PushNotifications.addListener('registrationError', (error: any) => {
alert('Error on registration: ' + JSON.stringify(error));
});
PushNotifications.addListener(
'pushNotificationReceived',
(notification: PushNotificationSchema) => {
alert('Push received: ' + JSON.stringify(notification));
},
);
PushNotifications.addListener(
'pushNotificationActionPerformed',
(notification: ActionPerformed) => {
alert('Push action performed: ' + JSON.stringify(notification));
},
);
}
}
この後、新しいビルドを生成し、Capacitorに変更を知らせます。以下で行えます:
ionic build
npx cap copy
FirebaseでアプリのプロジェクトCreate作成
Firebase Cloud Messagingをアプリケーションに接続してプッシュ通知を送信する前に、Firebaseでプロジェクトを開始する必要があります。
Firebaseコンソールに移動し、Add projectボタンをクリックします。
プロジェクトに名前を付け、Firebase利用規約に同意し、Create projectをクリックして続行します。プロジェクトIDは自動的に生成されます。