Amazon Pinpoint を使って iOS アプリにセグメントプッシュを配信してみた

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon Pinpoint とは

Amazon Pinpoint (以降 Pinpoint) は、セグメントされたプッシュ通知をモバイルアプリに送信するためのサービスです。いろいろな属性値をモバイルアプリから取得しておけば、その属性値を元にしたルールに適合するデバイスに絞り込み、プッシュ通知を送ることができます。また、プッシュ通知の効果測定も簡単に行える機能なども充実しています。

aws-pinpoint_overview_01

今回は、iOS アプリに対してセグメントプッシュ通知を送ってみたいと思います。こんな感じ!

pinpoint_ios05

Pinpoint のプロジェクトの作成

まずは AWS マネジメントコンソールにログインした状態で 下記の URL にアクセスし、Pinpoint のマネジメントコンソールを開きます。

https://console.aws.amazon.com/pinpoint/home/?region=us-east-1

まずは「Start your first project」をクリックします。

pinpoint01

ここからは Mobile Hub の画面で設定を進めます。

pinpoint02

プロジェクト名を適当に決めます。現在はバージニア (us-east-1) のみで利用可能ということなので、バージニアで作成します。

pinpoint03

「Enable Engagement」をクリックします。今回は iOS アプリで試してみたいので「iOS」をクリックします。APNs 用の Certificate が必要ですので、こちらなどを参考にして p12 ファイルを用意し、アップロードします。なお、現時点では Production のみ 利用可能です。

pinpoint04

「Save changes」をクリックして少し待つと、「Integrate your app」が表示されるのでクリックします。

pinpoint05

Mobile Hub のサンプルアプリがダウンロードできる画面です。iOS は Swift と Objective-C が用意されていますが Swift のサンプルアプリは Pinpoint に未対応 なので、Objective-C を選びます。今回はソースコードを編集することはあまりしないので、ここはまぁあまり気にしなくて良いかと思います。

pinpoint06

「Download Sample App」をクリックして Zip ファイルをダウンロードしたら、展開し、Xcode プロジェクトを開きます。

Xcode プロジェクトの設定

Bundle Identifier を自分の Apple Developer チームアカウント上に用意した Bundle Identifier に合わせます。また、「Automatically manage signing」を有効にしておきましょう。こうしておくと Provisioning Profile が Apple Developer チームアカウントの中に自動で作られ、実機でデバッグできるようになります。

pinpoint07

またプロジェクト内の MySampleApp.entitlements の中にある APS Environmentdevelopment になっているので production に変更します。

pinpoint08

iOS アプリの起動

アプリを起動すると、プッシュ通知の確認アラートが表示されます。

pinpoint_ios01

「User Engagement」をタップします。

pinpoint_ios02

「Demo User Engagement」をタップします。

pinpoint_ios03

一番下にあるセグメントコントロールには四季(Seasons)が表示されていますが、これがサンプル用のカスタムの属性値です。適当に選びます。

pinpoint_ios04

これで、モバイルアプリ側の操作は終わりです。

セグメントプッシュの送信

Mobile Hub のマネジメントコンソールに戻り、左側のメニューから「Engage」をクリックし、「Analytics」を開くと、「Active targetable users」が「1」になっていることが確認できます。

pinpoint10

まずはセグメント (Segment) を作ってみます。左側のメニューから「Segments」を開き「New Segment」をクリックします。

pinpoint11

どのようなデバイスに絞るか設定できます。このフォームから作る以外に、インポートもできるようです。

「Filter by custom attributes」を開くと「seasons」が出てきます。これが先ほどアプリで操作した時に登録された四季の属性値ですね。「Winter」を選んだので、「Winter」で絞ることができます。他の値は、1回以上送信されないと表示されません。また、デフォルト設定では「App usage criteria」が「30 日以上前に起動したデバイス」になっているので、先ほどアプリを起動したデバイスを含めるには「all time」にするようにしましょう。

pinpoint12

セグメントを作ったら、次にキャンペーン (Campaign) を作ります。セグメントが「絞り込むルール」であるのに対し、キャンペーンは「あるルールでプッシュ通知を実行するもの」です。「Create campaign」をクリックします。

pinpoint13

ここからはウィザード形式で進みます。名前を適当に入力します。「Standard campaign」と「A/B test」が選べます。

pinpoint14

「Use a previously define segment」が選ばれ、先ほど作成した「My segment」が選ばれている状態になっていると思います。キャンペーンを作成しながらセグメントを作成することもできるようです。

pinpoint15

プッシュ通知のペイロードに関する設定です。プッシュ通知をタップした時のアクションを選択することもできます。このペイロードはアプリ側で取得可能なので、このデータに基づいてアプリの挙動を自由に組むことができます。

pinpoint16

いつ送るかの設定です。1回だけ予約することはもちろん、時間、日、週、月などの感覚でスケジューリングすることもできます。「Immediate」を選ぶと、即時で送られます。

pinpoint17

最後に確認です。

pinpoint18

アプリにプッシュ通知が届きました…!

pinpoint_ios05

まとめ

AWS の公式のサービスでは、いままでは SNS の Topic で全配信 or Endpoint で個別配信のみでしたが、Pinpoint の登場によって、実際のアプリの運用で使えるレベルのセグメント配信が実現できます。これは早く乗り換えるしかないですね!

Pinpoint の機能はまだまだありますので、引き続き紹介していきたいと思います。

参考