こんにちは!先日、ひさしぶりに AWS AmplifyのFlutterページ を見ていると、なにやら見慣れぬ Push Notification が追加されていました。AWSのこの手の機能を実装する際に意外に大変なのは環境構築。ここでつまづく方も多いのではないでしょうか。そんな方のために、この記事ではFlutterとAWS Amplifyを使用したPush Notification(プッシュ通知)の環境構築の手順を記載したいと思います。
※Flutterの環境構築は完了しているものとします。
Amplify CLIの設定
- Node.js, npm, gitをインストール。
- npm install -g @aws-amplify/cli
- amplify configure
 コマンドプロンプトでENTERを押してIAMの設定をします。
 上記URLの通り手順を進めアクセスキーを作成。
 ※Option項目は今回スキップ。
- ②で作成したアクセスキーとシークレットアクセスキーを入力。
Firebaseプロジェクトの作成
※「プロジェクトを作成から」作成。

Firebaseにアプリを登録
※FlutterFire CLIを使えば簡単にAndroid, iOSの環境構築が出来ます。今回はAndroidだけで実装する為個別で登録します。
- Androidのアイコンをクリック。
- Android パッケージ名の箇所にアプリのパッケージ名(アプリケーションID)を入力。
 ※プロジェクト/android/build.gradleの中に書いてあるアプリケーションID。
- google-services.jsonをダウンロードしてFlutterアプリに追加。
 配置場所:Flutterプロジェクト/android/app/
- /android/build.gradle/に以下を追加。dependencies {
 classpath 'com.android.tools.build:gradle:7.3.0'
 classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
 classpath 'com.google.gms:google-services:4.4.0' //Google Services plugin
 }
- 以下が存在することを確認する。allprojects {
 repositories {
 google() //これがあるか確認
 mavenCentral()
 }
 }
- プロジェクト/android/app/build.gradle/に以下を追加。apply plugin: 'com.google.gms.google-services'
Firebase Cloud Consoleにアプリを登録
- プロジェクトを作成していない場合は新規作成します。
- 画面左上の歯車アイコンをクリックし「プロジェクトの設定」をクリック。
- Cloud Messagingタブをクリック。
- 「Cloud Messaging API (Legacy)」の横にある 3 つの縦のドットを選択し、「Google Cloud Console で API を 管理」を選択。
- 新規タブが開き「有効にする」をクリック。
- 元のページに戻り画面を更新する。
- サーバーキーをコピー。
バックエンドリソースのセットアップ
- プロジェクトのディレクトリで以下のコマンドを実行。amplify add notifications
- FCMを選択しサーバー キーの入力を求めるプロンプトが表示されるので「Firebase Cloud Consoleにアプリを登録」の7で発行されたサーバーキーを貼り付ける。正常完了するとamplifyconfiguration.dart が更新される。
Amplifyライブラリのインストール
プロジェクトのpubspec.yamlのdependenciesに以下を追加する。
dependencies: 
    amplify_auth_cognito: ^1.0.0 
    amplify_flutter: ^1.0.0 
    amplify_push_notifications_pinpoint: ^1.0.0Amplify Push Notificationの初期化
import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
import 'package:amplify_flutter/amplify_flutter.dart';
import 'package:amplify_push_notifications_pinpoint/amplify_push_notifications_pinpoint.dart';
import 'package:flutter/cupertino.dart';
import 'amplifyconfiguration.dart';
void main() {
  runApp(const MyApp());
}
class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);
  @override
  State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    _configureAmplify();
  }
  Future<void> _configureAmplify() async {
    try {
      final authPlugin = AmplifyAuthCognito();
      final pushPlugin = AmplifyPushNotificationsPinpoint();
      await Amplify.addPlugins([authPlugin, pushPlugin]);
      await Amplify.configure(amplifyconfig);
    } on Exception catch (e) {
      safePrint('An error occurred configuring Amplify: $e');
    }
  }
  @override
  Widget build(BuildContext context) {
    // Your application UI
  }
}以上、みなさんの参考になれば幸いです。
参考記事
https://docs.amplify.aws/lib/project-setup/prereq/q/platform/flutter/#configure-the-amplify-cli
https://docs.amplify.aws/lib/push-notifications/setup-push-service/q/platform/flutter/
 
                        