Amplify Analytics のセットアップ
Amplify を使用すると、アプリのアナリティクスデータを収集できます。Analytics を使用するには、AWS Cloud Development Kit (AWS CDK) を使用して Amazon Kinesis または Amazon Pinpoint を有効にする必要があります。Analytics カテゴリは Amazon Cognito ID プールを使用してアプリのユーザーを_識別_します。Cognito により、アプリの認証済みユーザーと未認証ユーザーからデータを受け取ることができます。
Amplify Flutter には、iOS (13.0)、Android (API レベル 24)、および macOS (10.15) の最小ターゲットプラットフォームが必要です。Web、Windows、または Linux をターゲットとする場合は、Flutter のサポートされている展開プラットフォームを参照してください。
Analytics バックエンドのセットアップ
AWS CDK を使用して、Amazon Pinpoint を搭載するアナリティクスリソースを作成します。
import { defineBackend } from "@aws-amplify/backend"import { auth } from "./auth/resource";import { data } from "./data/resource";import { Policy, PolicyStatement } from "aws-cdk-lib/aws-iam";import { CfnApp } from "aws-cdk-lib/aws-pinpoint";import { Stack } from "aws-cdk-lib/core";
const backend = defineBackend({ auth, data, // additional resources});
const analyticsStack = backend.createStack("analytics-stack");
// create a Pinpoint appconst pinpoint = new CfnApp(analyticsStack, "Pinpoint", { name: "myPinpointApp",});
// create an IAM policy to allow interacting with Pinpointconst pinpointPolicy = new Policy(analyticsStack, "PinpointPolicy", { policyName: "PinpointPolicy", statements: [ new PolicyStatement({ actions: ["mobiletargeting:UpdateEndpoint", "mobiletargeting:PutEvents"], resources: [pinpoint.attrArn + "/*"], }), ],});
// apply the policy to the authenticated and unauthenticated rolesbackend.auth.resources.authenticatedUserIamRole.attachInlinePolicy(pinpointPolicy);backend.auth.resources.unauthenticatedUserIamRole.attachInlinePolicy(pinpointPolicy);
// patch the custom Pinpoint resource to the expected output configurationbackend.addOutput({ analytics: { amazon_pinpoint: { app_id: pinpoint.ref, aws_region: Stack.of(pinpoint).region, } },});Amplify ライブラリのインストール
Flutter プロジェクトディレクトリで、pubspec.yaml を開きます。 これらのライブラリを依存関係ブロックに追加して、Analytics を追加します:
dependencies: amplify_analytics_pinpoint: ^2.0.0 amplify_auth_cognito: ^2.0.0 amplify_flutter: ^2.0.0Amplify Analytics の初期化
設定ファイルをインポートしてアプリに読み込みます。Amplify 設定ステップをアプリのルートエントリポイントに追加することをお勧めします。
Project Setup セクションで説明されているように、Auth および Analytics プラグインと、追加した他のプラグインを追加します:
import 'package:amplify_analytics_pinpoint/amplify_analytics_pinpoint.dart';import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';import 'package:amplify_flutter/amplify_flutter.dart';import 'package:flutter/material.dart';
import 'amplify_outputs.dart';
Future<void> _configureAmplify() async { // Add Pinpoint and Cognito Plugins, and any other plugins you want to use final analyticsPlugin = AmplifyAnalyticsPinpoint(); final authPlugin = AmplifyAuthCognito(); await Amplify.addPlugins([analyticsPlugin, authPlugin]);}プロジェクトセットアップで生成された amplify_outputs.dart ファイルが含まれ、Amplify.configure に送信されていることを確認してください:
import 'package:amplify_analytics_pinpoint/amplify_analytics_pinpoint.dart';import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';import 'package:amplify_flutter/amplify_flutter.dart';import 'package:flutter/material.dart';
import 'amplify_outputs.dart';
Future<void> _configureAmplify() async { // ... await Amplify.addPlugins([analyticsPlugin, authPlugin]);
// Once Plugins are added, configure Amplify // Note: Amplify can only be configured once. try { await Amplify.configure(amplifyConfig); } on AmplifyAlreadyConfiguredException { safePrint( 'Tried to reconfigure Amplify; this can occur when your app restarts on Android.', ); }}クラスは次のようになります:
import 'package:amplify_flutter/amplify_flutter.dart';import 'package:amplify_analytics_pinpoint/amplify_analytics_pinpoint.dart';import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';import 'package:flutter/material.dart';
import 'amplify_outputs.dart';
Future<void> _configureAmplify() async { // Add any Amplify plugins you want to use final analyticsPlugin = AmplifyAnalyticsPinpoint(); final authPlugin = AmplifyAuthCognito(); await Amplify.addPlugins([analyticsPlugin, authPlugin]);
// Once Plugins are added, configure Amplify // Note: Amplify can only be configured once. try { await Amplify.configure(amplifyConfig); } on AmplifyAlreadyConfiguredException { safePrint( 'Tried to reconfigure Amplify; this can occur when your app restarts on Android.', ); }}
Future<void> main() async { WidgetsFlutterBinding.ensureInitialized(); await _configureAmplify(); runApp(const MyApp());}
class MyApp extends StatefulWidget { const MyApp({Key? key}): super(key: key);
// ...}次のステップ:
おめでとうございます! これで Analytics バックエンドがプロビジョニングされ、Analytics ライブラリがインストールされました。次のリンクをチェックして、Amplify Analytics のユースケースを確認してください: