Amazon Pinpoint を使って iOS アプリにセグメントプッシュを配信してみた
Amazon Pinpoint とは
Amazon Pinpoint (以降 Pinpoint) は、セグメントされたプッシュ通知をモバイルアプリに送信するためのサービスです。いろいろな属性値をモバイルアプリから取得しておけば、その属性値を元にしたルールに適合するデバイスに絞り込み、プッシュ通知を送ることができます。また、プッシュ通知の効果測定も簡単に行える機能なども充実しています。
- Amazon Pinpoint – Targeted Push Notifications & Mobile Engagement
- Amazon Pinpoint – Hit your Targets with AWS | AWS Blog
- Amazon Pinpointがリリースされました! #reinvent | Developers.IO
- モバイルアプリ用のターゲットPush通知サービス『Amazon Pinpoint』で出来る事を確認してみる #reinvent #pinpoint | Developers.IO
今回は、iOS アプリに対してセグメントプッシュ通知を送ってみたいと思います。こんな感じ!
Pinpoint のプロジェクトの作成
まずは AWS マネジメントコンソールにログインした状態で 下記の URL にアクセスし、Pinpoint のマネジメントコンソールを開きます。
https://console.aws.amazon.com/pinpoint/home/?region=us-east-1
まずは「Start your first project」をクリックします。
ここからは Mobile Hub の画面で設定を進めます。
プロジェクト名を適当に決めます。現在はバージニア (us-east-1) のみで利用可能ということなので、バージニアで作成します。
「Enable Engagement」をクリックします。今回は iOS アプリで試してみたいので「iOS」をクリックします。APNs 用の Certificate が必要ですので、こちらなどを参考にして p12 ファイルを用意し、アップロードします。なお、現時点では Production のみ 利用可能です。
「Save changes」をクリックして少し待つと、「Integrate your app」が表示されるのでクリックします。
Mobile Hub のサンプルアプリがダウンロードできる画面です。iOS は Swift と Objective-C が用意されていますが Swift のサンプルアプリは Pinpoint に未対応 なので、Objective-C を選びます。今回はソースコードを編集することはあまりしないので、ここはまぁあまり気にしなくて良いかと思います。
「Download Sample App」をクリックして Zip ファイルをダウンロードしたら、展開し、Xcode プロジェクトを開きます。
Xcode プロジェクトの設定
Bundle Identifier を自分の Apple Developer チームアカウント上に用意した Bundle Identifier に合わせます。また、「Automatically manage signing」を有効にしておきましょう。こうしておくと Provisioning Profile が Apple Developer チームアカウントの中に自動で作られ、実機でデバッグできるようになります。
またプロジェクト内の MySampleApp.entitlements
の中にある APS Environment
が development
になっているので production
に変更します。
iOS アプリの起動
アプリを起動すると、プッシュ通知の確認アラートが表示されます。
「User Engagement」をタップします。
「Demo User Engagement」をタップします。
一番下にあるセグメントコントロールには四季(Seasons)が表示されていますが、これがサンプル用のカスタムの属性値です。適当に選びます。
これで、モバイルアプリ側の操作は終わりです。
セグメントプッシュの送信
Mobile Hub のマネジメントコンソールに戻り、左側のメニューから「Engage」をクリックし、「Analytics」を開くと、「Active targetable users」が「1」になっていることが確認できます。
まずはセグメント (Segment) を作ってみます。左側のメニューから「Segments」を開き「New Segment」をクリックします。
どのようなデバイスに絞るか設定できます。このフォームから作る以外に、インポートもできるようです。
「Filter by custom attributes」を開くと「seasons」が出てきます。これが先ほどアプリで操作した時に登録された四季の属性値ですね。「Winter」を選んだので、「Winter」で絞ることができます。他の値は、1回以上送信されないと表示されません。また、デフォルト設定では「App usage criteria」が「30 日以上前に起動したデバイス」になっているので、先ほどアプリを起動したデバイスを含めるには「all time」にするようにしましょう。
セグメントを作ったら、次にキャンペーン (Campaign) を作ります。セグメントが「絞り込むルール」であるのに対し、キャンペーンは「あるルールでプッシュ通知を実行するもの」です。「Create campaign」をクリックします。
ここからはウィザード形式で進みます。名前を適当に入力します。「Standard campaign」と「A/B test」が選べます。
「Use a previously define segment」が選ばれ、先ほど作成した「My segment」が選ばれている状態になっていると思います。キャンペーンを作成しながらセグメントを作成することもできるようです。
プッシュ通知のペイロードに関する設定です。プッシュ通知をタップした時のアクションを選択することもできます。このペイロードはアプリ側で取得可能なので、このデータに基づいてアプリの挙動を自由に組むことができます。
いつ送るかの設定です。1回だけ予約することはもちろん、時間、日、週、月などの感覚でスケジューリングすることもできます。「Immediate」を選ぶと、即時で送られます。
最後に確認です。
アプリにプッシュ通知が届きました…!
まとめ
AWS の公式のサービスでは、いままでは SNS の Topic で全配信 or Endpoint で個別配信のみでしたが、Pinpoint の登場によって、実際のアプリの運用で使えるレベルのセグメント配信が実現できます。これは早く乗り換えるしかないですね!
Pinpoint の機能はまだまだありますので、引き続き紹介していきたいと思います。