【後編】GrailsでAWSのSNSを操作してみた!~プッシュ通知編~
IT技術
プッシュ通知編~Grailsを使ってAWSのSNSを操作してみよう!~
(株)ライトコードの小山(こやま)です!
この記事は、「Grails で AWS の SNS を操作してみた!~メール通知編~」の続編です。
前回は、Grails でメール通知機能を、実装していきました!
今回は、前回と同じく AWS の SNS を使って、「プッシュ通知」を実装していきたいと思います!
環境
今回の実装は、下記の項目を全て完了していることが前提となります。
環境がまだ整っていない方は、先に準備をしておきましょう!
- Grails の環境導入
- AWS へのアカウントの登録
- AWS CLI の導入
- XCode の導入
- iOS 端末を所持している
- Apple Developer Program(有償)に登録している
- Git 環境の導入
実際に動作確認をしたい方は、ターミナルなどで下記コマンドより、プッシュ通知確認用のファイルをクローンしてください。
1$ git clone https://github.com/KonoLevel1/Grails_AWS_SNS4.git
では、始めていきましょう!
前回の記事
用語について簡単な説明
プッシュ通知
プッシュ通知とは、スマホなどの端末において、メッセージや音などでユーザーに情報を通知する機能のことです。
p12ファイル
p12 ファイル とは、Public Key Cryptography Standards (公開鍵暗号標準のグループ)の、12番目の仕様のことです。
具体的には、公開鍵証明書や秘密鍵をパスワードの鍵で保護して、安全に保存や転送するために使用するファイル形式です。
SNS へのアプリケーションの登録で必要になります。
CSRファイル
CSR ファイルとは、開発用証明書を発行するときに必要となる、「証明書署名要求ファイル」のことです。
Mac のキーチェーンアクセスより、生成します。
CERファイル
CER ファイルとは、Apple Developer Program のサイトで生成できる、「開発用証明書」のことです。
生成するには、CSR ファイルが必要になります。
CERファイル(APNs用証明書)
CER ファイル(APNs用証明書)は、Apple Developer Program のサイトで生成できます。
生成するには、「App ID」「CSR ファイル」が必要になります。
プロビジョニングファイル
プロビジョニングファイルとは、App Store 以外で手に入れた iOS アプリでも、端末ダウンロードできるようにするバイナリファイルのことです。
このファイルは、Apple Developer Program のサイトで生成できます。
生成するには、「App ID」「CSR ファイル」「端末登録」が必要になります。
Cognito
Cognito とは、AWS において、シンプルでセキュアなユーザーの
- サインアップ
- サインイン
- アクセスコントロール
を行うサービスです。
今回は iOS アプリから、AWS の SNS にアクセスするときの、アクセスコントロールで利用します。
IAM
IAM とは、AWS のサービスやリソースへのアクセスを、安全に管理するサービスです。
こちらも、iOS アプリから AWS の SNS にアクセスするとき、アクセスコントロールで利用します。
APNs
APNs とは、Apple Push Notification Service というアップル社が運営するサービスのことです。
iOS 端末に、プッシュ通知を送るときは、必ずこのサービスを利用する必要があります。
p12ファイルの生成を行う
AWS の SNS を使って、プッシュ通知を送るためには、p12 ファイルが必要になります。
また、p12 ファイルを生成するまでの流れは、以下のとおりです。
CSRファイルの生成
CSR ファイルの生成については、過去の記事を参考にしてくださいね!
CSR ファイルの生成が完了したら、開発者証明書ファイルを生成していきましょう。
「https://developer.apple.com/account/」にアクセスし、Certificates,Identifiers & Profiles(歯車マーク)を選択します。
開発者証明書ファイルの生成
開発者証明書ファイルは、「Certificates」より生成できます。
Software | iOS App Development を選択 |
Choose File | 作成した CSR ファイル(CertificateSigningRequest.certSigningRequest)を選択 |
App IDの登録
App ID は、「Identifier」より登録できます。
Register a new identifier | App IDs を選択 |
Select a type | App を選択 |
Description | 適当な説明を入力 |
Bundle ID | Explicit を選択し、適当な ID を入力 |
Capabilities | Push Notifications を選択 |
ちなみに、Bundle ID が既に使用されている場合は、Continue 後に Register ボタンが押せないので、変更する必要があります。
それでは、Bundle ID を控えておきましょう。
端末の登録
端末登録については、「Devices」より登録できます。
Platform | iOS, tvOS, watchOS を選択 |
Device Name | 適当な名前を入力 |
Device ID (UDID) | Mac に端末を接続した状態で Xcode を起動します。
画面上より、Window > Devices and Simulators identifier に表示されている文字列を入力してください。 |
プロビジョニングプロファイルの生成
このファイルは、「Profiles」より生成していきましょう。
Development | iOS App Development を選択 |
App ID | 先程登録した App ID を選択 |
Select Certificates | 先程生成した開発者証明書を選択 |
Select Devices | 先程登録した端末を選択 |
Provisioning Profile Name | 適当な名前を入力 |
APNs用証明書の生成
APNs 用証明書は、「Certificates」より生成できます。
Services | Apple Push Notification service SSL (Sandbox) を選択 |
Platform | iOS を選択 |
App ID | 先程登録した App ID を選択 |
Choose File | 作成した CSR ファイル(CertificateSigningRequest.certSigningRequest)を選択 |
p12ファイルの生成
APNs 用証明書の生成でダウンロードした、「aps_development.cer」をダブルクリックして、キーチェーンアクセスを起動していきましょう!
「Apple Development IOS Push Services:.... 」という証明書を右クリックして、「Apple De....を書き出す」を選択します。
フォーマットは「個人情報交換(.p12)」を選択し、保存してください。
ここで、任意のパスワードを入力します。
その後、キーチェーンのパスワードの入力を要求されるので、これも入力して完了です!
AWSの設定を行う
iPhone 端末に、プッシュ通知を送れるよう、AWS の SNS で設定を行います。
SNS の設定ページにアクセスして、「Mobile > プッシュ通知 > プラットフォームアプリケーションの作成」を選択してください。
アプリケーション名 | 適当な名前を入力 |
プッシュ通知プラットフォーム | Apple iOS / VoIP / Mac を選択 |
ステータス | 有効にチェックを入れます。 |
サンドボックスでの開発に使用されます | 今回は本番ではないので、チェックを入れます。 |
プッシュ証明書タイプ | iOS プッシュ証明書 を選択 |
証明書 | 先程生成した p12 ファイル を選択 |
証明書のパスワード | 先程設定したパスワードを入力 |
認証情報をファイルから読み込みのボタンをクリックして、証明書とプライベートキーを設定します。
プラットフォームアプリケーションの「作成ボタン」をクリックしましょう。
作成したプラットフォームアプリケーションの ARN を控えておいてください。
続けて、「トピック > トピックの作成」で、トピックを作成します。
名前 | 適当な名前を入力 |
表示名 - オプション | 適当な表示名を入力 |
トピックの「作成ボタン」をクリックします。
このとき、作成したトピックの ARN を控えておきましょう。
Cognitoの設定
AWS で、Cognito の設定を行います。
まずは、Cognito の設定ページにアクセスして、ID プールの「管理ボタン」をクリック。
次に、新しい ID プールの「作成ボタン」をクリックします。
ID プール名 | 適当な名前を入力 |
認証されていない ID に対してアクセスを有効にする | チェックを入れます。 |
認証フローの設定 | チェック不要 |
その後は、以下の流れで進めていきましょう。
- プールの作成ボタンをクリック
- 詳細を表示
- 表示されてある「ロール名」も控える
- 「許可ボタン」をクリック
- AWS 認証情報の取得欄に表示されている「ID プールの ID」を控える
IAMの設定
AWS で IAM の設定を行います。
IAM の設定ページにアクセスして、「アクセス管理 > ロール」検索欄に、先程控えたロール名を入力します。
○○Auth_Role と○○Unauth_Role があると思うので、「○○Unauth_Role」をクリックして詳細を開きます。
その後は、以下のように進めていきましょう!
- 「ポリシーをアタッチします」のボタンをクリックして「SNS」と検索
- AmazonSNSFullAccess にチェック
- ポリシーのアタッチボタンをクリック
iOSアプリの設定を行う
クローンしたファイル「Grails_AWS_SNS4 > PushNotificationApp」を、Xcode で開きます。
「PushNotificationApp > General」を開きます。
- 「Bundle Identifier」にBundle IDを入力
- 「PushNotificationApp > PushNotificationApp > AppDelegate.swift」を開く
- 59行目に ID プール ID を設定
- 68行目にプラットフォームアプリケーションの ARN を設定
- 77行目にトピックの ARN を設定
WEBアプリ(Grails)の設定を行う
クローンしたファイル「Grails_AWS_SNS4 > sns」を、IDE(統合開発環境)で開きます。
「sns > grails-app[main] > conf > application.yml」を開きます。
115行目に、トピックの ARN を設定しておきましょう。
動作確認
Mac に端末を接続し、Xcode で端末を選択したあと、ビルドボタンをクリックします。
通知を許可したあとで、AWS の SNS 設定ページを確認してください。
ここでは、トピックのサブスクリプションに、1項目 ID が追加されていることを確認します。
クローンした「Grails_AWS_SNS4 > sns」で
1$ grails run-app
を実行して「http://localhost:8080」にアクセスします。
「操作 > 通知を送信」より、送信ボタンをクリックします。
通知が送信されれば成功です。
ただし、端末でアプリの画面を開いていると、通知が表示されませんので注意してください。
さいごに
今回実装した通知機能の構成図は、ザックリとこのような内容となっています。
最低限の実装となっていますが、SNS の基本的な機能を実装してみました!
プッシュ通知は、うまく活用すれば、ユーザーのアクティブ率が向上します。
ただ、ユーザーにとって魅力のない通知を送ると「逆効果」になることもお忘れなく。
使うときは、ユーザーの目線に立って考えて、導入できれば良いですね!
以上で、「Grails で AWS の SNS を操作してみた!」シリーズは完結です。
この記事の内容が、少しでも SNS を使いたい方のお役に立てれば幸いです!
こちらの記事もオススメ!
2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
2020.07.27IT・コンピューターの歴史特集IT・コンピューターの歴史をまとめていきたいと思います!弊社ブログにある記事のみで構成しているため、まだ「未完成状態」...
ライトコードでは、エンジニアを積極採用中!
ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。
採用情報へ