Amazon Pinpoint for Androidについて調査したことハマったこと気になること(ja)

amazon-pinpoint-header

画像出典: https://aws.amazon.com/jp/pinpoint/

Growth Push, Firebaseなどたくさんのプッシュ配信を行うためのツールがある中で、先日のAWS re:Invent 2016にてAmazon Pinpointというプッシュ配信のサービスが発表されたようなので、それについて気になったので12/7日時点で調べたことと、ハマったこと、気になることをメモ程度に (ざっくり) 書いています。筆者自身まだまだ調査が必要かなと感じております。また、筆者はAndroidエンジニアですのでAndroidに寄った内容を記載していますが、主な内容は公式サイトなどから得た情報を記載しています。間違いやご指摘などありましたらご連絡下さりますと幸いです。

Amazon Pinpointとは

What Is Amazon Pinpoint? - Amazon Pinpointの内容です。

プッシュ通知によるユーザーエンゲージメント向上を行うためのAWSサービス

Amazon Pinpointの仕組み

画像出典: http://docs.aws.amazon.com/ja_jp/pinpoint/latest/developerguide/welcome.html

ユーザーセグメントの定義の仕方について

下記のものをセグメントとして定義できるらしい

キャンペーンとは

Region

現在Amazon Pinpointは US East(N.Virginia)Regionの設定のみで利用可能(なのでAPIなどを利用する場合などは少し遅いかも。そのうちTokyo Region来るのかな?)

エンドポイントとは

Amazon Pinpointにおけるエンドポイントとは、プッシュ通知を受け取ることができるユニークな端末のこと。

Amazon Pinpointを有効にしているアプリであれば、新規ユーザーがアプリを開いたタイミングでそのユーザーは自動でエンドポイントに追加される。SDKを導入している場合、コード側から独自のエンドポイントを追加することも可能。

AWS Mobile Hubにプロジェクトを作成しサンプルアプリをビルドする

Getting Started(Android)の内容です。

  1. Firebaseプロジェクト作成
  2. API KeyとSender IDを取得
  3. AWS Mobile Hubでプロジェクトを作成 (初回ログインの場合I AMグループを作る必要があります。
  4. Androidを選択し、2で取得したAPI KEYと Sender IDでアプリを登録
  5. Integrate with your appを選択
  6. Download a sample appを選択しzip化されたサンプルアプリのソースコードを取得
  7. サンプルアプリをビルドする

ざっくりですが、下記のステップを行うことでプッシュ配信の準備ができます。なお、3.のところで、IAMグループなどについて知らなかったのでここで少しハマりました。

3.でプロジェクト作成を行おうとした際に下記のような画像が出てきた場合は、こちらを参考に新規のI AMグループを作りAdministratorAccessがアタッチしましょう)

intro-app-permission

サンプルアプリに向けてキャンペーンプッシュ通知を行う

Testing the Sample App With Amazon Pinpoint - Amazon Pinpointにすべて書いてあります。

これでAmazon Pinpointを通してサンプルアプリにプッシュ通知が届きます。

気になったこと・調査が必要だと思っていること

jarじゃなくても良さそう?

サンプルアプリ(MySampleApp)のコードを見ると、

aws-android-sdk-core-2.3.5.jar
aws-android-sdk-pinpoint-2.3.5.jar

この2つのjarを読み込んでいるのですが、実際はjarを取り込まなくてもapp/build.gradleにdependencyを記載する形でも動いているようです、が、何か意図があるのか、自信はありません。

compile 'com.amazonaws:aws-android-sdk-core:2.3.5'
compile 'com.amazonaws:aws-android-sdk-pinpoint:2.3.5'

GCMとFCM

また、Amazon PinpointはGCMとFCM両方に対応しているようですが、サンプルアプリはGCMに依存していて、別アプリを作りFCMで実装を試みたのですが、今のところAmazon Pinpointからのプッシュ通知の受け取りは成功していません。(Firebase Notificationの受け取りのみ確認できています。)この辺も、GCMが必須なのかどうかなど、まだまだ調査が必要です..。

サンプルアプリのソースコード

サンプルアプリ(MySampleApp)にはutilパッケージやAWSMobileClientと呼ばれるManagerクラスのようなものがあるのですが、AWS Mobile Hubの詳細ページ>Integrate with your appにある導入説明ではかなりこれらのプロジェクトコードを使う前提で話が進みます。

コードを読んで問題なさそうということを理解すれば問題無いと思いますが、サンプルアプリのソースコードを導入で利用する前提というのはなんとなく、ライブラリコードに導入できなかったものなのか、と思ってしまったりしなくはないです。が、ここも同じくサンプルアプリのソースを使う前提なのかどうかはまだまだ調査が必要です。

Gson依存

そこまで問題視しすぎる必要はないのかもしれませんが、aws-android-sdk-core, aws-android-sdk-poinpointの依存関係を見ると内部でGsonを使っているようです

その他リンク