• トップ
  • ブログ一覧
  • 【後編】GrailsでAWSのSNSを操作してみた!~プッシュ通知編~
  • 【後編】GrailsでAWSのSNSを操作してみた!~プッシュ通知編~

    【後編】GrailsでAWSのSNSを操作してみた!~プッシュ通知編~

    プッシュ通知編~Grailsを使ってAWSのSNSを操作してみよう!~

    こやまん

    (株)ライトコードの小山(こやま)です!

    この記事は、「Grails で AWS の SNS を操作してみた!~メール通知編~」の続編です。

    前回は、Grails でメール通知機能を、実装していきました!

    今回は、前回と同じく AWS の SNS を使って、「プッシュ通知」を実装していきたいと思います!

    環境

    今回の実装は、下記の項目を全て完了していることが前提となります。

    環境がまだ整っていない方は、先に準備をしておきましょう!

    1. Grails の環境導入
    2. AWS へのアカウントの登録
    3. AWS CLI の導入
    4. XCode の導入
    5. iOS 端末を所持している
    6. Apple Developer Program(有償)に登録している
    7. Git 環境の導入

    実際に動作確認をしたい方は、ターミナルなどで下記コマンドより、プッシュ通知確認用のファイルをクローンしてください。

    1$ git clone https://github.com/KonoLevel1/Grails_AWS_SNS4.git

    では、始めていきましょう!

    前回の記事

    【前編】GrailsでAWSのSNSを操作してみた!~メール通知編~2020.11.30【前編】GrailsでAWSのSNSを操作してみた!~メール通知編~プッシュ通知編~Grailsを使ってAWSのSNSを操作してみよう!~こやまん(株)ライトコードの小山(こやま)です!...

    用語について簡単な説明

    プッシュ通知

    プッシュ通知とは、スマホなどの端末において、メッセージや音などでユーザーに情報を通知する機能のことです。

    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 において、シンプルでセキュアなユーザーの

    1. サインアップ
    2. サインイン
    3. アクセスコントロール

    を行うサービスです。

    今回は iOS アプリから、AWS の SNS にアクセスするときの、アクセスコントロールで利用します。

    IAM

    IAM とは、AWS のサービスやリソースへのアクセスを、安全に管理するサービスです。

    こちらも、iOS アプリから AWS の SNS にアクセスするとき、アクセスコントロールで利用します。

    APNs

    APNs とは、Apple Push Notification Service というアップル社が運営するサービスのことです。

    iOS 端末に、プッシュ通知を送るときは、必ずこのサービスを利用する必要があります。

    p12ファイルの生成を行う

    AWS の SNS を使って、プッシュ通知を送るためには、p12 ファイルが必要になります。

    また、p12 ファイルを生成するまでの流れは、以下のとおりです。

    p12 ファイルを生成するまでの流れ

    CSRファイルの生成

    CSR ファイルの生成については、過去の記事を参考にしてくださいね!

    featureImg2020.04.02【iOSアプリ開発】プロビジョニングプロファイルを作成するには?iOSアプリ開発で必要なプロビジョニングプロファイルを作成をするiOS開発をしていると遅かれ早かれ辿り着く、「証明書周...

    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 identifierApp IDs を選択
    Select a typeApp を選択
    Description適当な説明を入力
    Bundle IDExplicit を選択し、適当な ID を入力
    CapabilitiesPush Notifications を選択

    ちなみに、Bundle ID が既に使用されている場合は、Continue 後に Register ボタンが押せないので、変更する必要があります。

    それでは、Bundle ID を控えておきましょう。

    端末の登録

    端末登録については、「Devices」より登録できます。

    PlatformiOS, tvOS, watchOS を選択
    Device Name適当な名前を入力
    Device ID (UDID)Mac に端末を接続した状態で Xcode を起動します。

    画面上より、Window > Devices and Simulators

    identifier に表示されている文字列を入力してください。

    プロビジョニングプロファイルの生成

    このファイルは、「Profiles」より生成していきましょう。

    DevelopmentiOS App Development を選択
    App ID先程登録した App ID を選択
    Select Certificates先程生成した開発者証明書を選択
    Select Devices先程登録した端末を選択
    Provisioning Profile Name適当な名前を入力

    APNs用証明書の生成

    APNs 用証明書は、「Certificates」より生成できます。

    ServicesApple Push Notification service SSL (Sandbox) を選択
    PlatformiOS を選択
    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 に対してアクセスを有効にするチェックを入れます。
    認証フローの設定チェック不要

    その後は、以下の流れで進めていきましょう。

    1. プールの作成ボタンをクリック
    2. 詳細を表示
    3. 表示されてある「ロール名」も控える
    4. 「許可ボタン」をクリック
    5. AWS 認証情報の取得欄に表示されている「ID プールの ID」を控える

    IAMの設定

    AWS で IAM の設定を行います。

    IAM の設定ページにアクセスして、「アクセス管理 > ロール」検索欄に、先程控えたロール名を入力します。

    ○○Auth_Role と○○Unauth_Role があると思うので、「○○Unauth_Role」をクリックして詳細を開きます。

    その後は、以下のように進めていきましょう!

    1. 「ポリシーをアタッチします」のボタンをクリックして「SNS」と検索
    2. AmazonSNSFullAccess にチェック
    3. ポリシーのアタッチボタンをクリック

    iOSアプリの設定を行う

    クローンしたファイル「Grails_AWS_SNS4 > PushNotificationApp」を、Xcode で開きます。

    PushNotificationApp > General」を開きます。

    1. 「Bundle Identifier」にBundle IDを入力
    2. 「PushNotificationApp > PushNotificationApp > AppDelegate.swift」を開く
    3. 59行目に ID プール ID を設定
    4. 68行目にプラットフォームアプリケーションの ARN を設定
    5. 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 を使いたい方のお役に立てれば幸いです!

    こちらの記事もオススメ!

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
    featureImg2020.07.27IT・コンピューターの歴史特集IT・コンピューターの歴史をまとめていきたいと思います!弊社ブログにある記事のみで構成しているため、まだ「未完成状態」...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background