のぴぴのメモ

自分用のLinuxとかの技術メモ

(2019/1)Appleのデバイスにプッシュ通知を行うためのAPNs設定メモ

はじめに

ここで説明すること

APNs(Apple Push Notification service)は、Appleのデバイス(iOSバイス、tvOS、macOS)に対してプッシュ通知を送るためのプラットフォームサービスです。*1
ここではアプリの通知の開発ができるようにするためのAPNsの設定を説明しています。

モバイルプッシュ関連のblog記事

全体の概要図

この記事で説明する全体の概要図です。(ProviderであるAmazon SNSへの個人情報交換ファイル取り込みは説明していません)

f:id:nopipi:20190201092820p:plain:w600

前提

  • Apple Developer Programの登録(有償)
    • プッシュ通知を利用した開発をするために必要
    • 料金は、年額で99ドル(個人または個人事業主/個人経営者)*2
    • 手順
      • Apple Developer Program - Apple Developerにアクセスする
      • 「登録」ボタンを押し、説明に従い情報を登録し、最後に料金を払う
      • 手続きが完了すると審査になります。審査には2日ほどかかる(審査中の場合、右上のログインユーザ名に"(pending)"と表示されます)
      • 審査が完了すると、メール通知がある
  • iOS開発環境

手順

iOSアプリ開発用証明書の作成

(1)Xcode連携での証明書作成

開発用途のiOSアプリの署名用に利用する証明書(以下、開発用証明書)をAPNsで作成します。手動もできますが、ここではXcode連携で作成します。

  • Xcodeを起動して、「Xcode」> 「Behaviors」> 「Edit Behaviors」を選択する

f:id:nopipi:20190126104647p:plain:w350

  • Apple IDとManage Certificates
    • 「Accounts」タブを選ぶ
    • Apple Developer Program登録したApple IDが登録できてない場合は左側の「Apple IDs」でID登録する
    • Apple Developer Program登録したApple IDを選択し、右下の「ManageCertificates」をクリックする

f:id:nopipi:20190126105602p:plain:w350

  • iOS Development」証明書の発行
    • 左下の「+」をクリックし、「iOS Development」を選択

f:id:nopipi:20190126113432p:plain:w350

  • 開発用の証明書が発行&登録される

f:id:nopipi:20190126114107p:plain:w350

(2)Apple Developerでの証明書確認

Apple Developerにログインして登録した証明書を確認できます。

f:id:nopipi:20190112015105p:plain:w350

  • 「Certificates」>「All」をクリックし登録した証明書を確認する

f:id:nopipi:20190126114917p:plain:w350

App ID の作成とNotificationsのSSLアクセス用証明書作成

(1)App ID作成

アプリケーションを識別するためのApp IDを登録します。

  • 「Identifiers」の「App IDs」をクリックし、右上の「+」をクリックする

f:id:nopipi:20190112022327p:plain:w300

  • 「Registering an App ID」で順に入力する
    • 「App ID Description」 > 「Name」: アプリケーションの名称を記載(例えばPushTest)
    • App ID Suffix
      • 「Explicit App ID」を選択し
      • 「Bundle ID」に、ユニークな名称を記載。通常はFQDNを利用し”work.nopipi.PushTest”のような感じにする
    • App Services
      • 「Push Notifications」にチェックを入れる(これ重要!!)
      • 「Continue」をクリック
  • 「Push Notifications」がConfigurableになっていることを確認し
  • 「Register」をクリック
(2) SSL証明書発行用に証明書署名要求(CSR)を作成

Macを利用して、CSR(Certificate Signing Request)を作成します。

  • キーチェーンアクセスを開きます
  • 「キーチェーンアクセス」>「証明書アシスタント」>「認証局に証明書を要求....」をクリックします
  • 必要事項を入力します
    • 「ユーザーのメールアドレス」を入力します
    • 「通称」は任意ですが、わかりやすい名称を記載(例えば"Bundle IDに設定した名前+SslCSR"とか)
    • 「CAのメールアドレス」は空欄
  • 「要求の処理」は「ディスクに保存」を選択ます
  • 「続ける」をクリックします

f:id:nopipi:20190112012806p:plain:w300
f:id:nopipi:20190112012932p:plain:w350

(3)NotificationsのSSL証明書作成
  • 作成したApp IDを開き、下段の「EDIT」をクリックする
  • 「Push Notifications」で、開発用のため「Development SSL Certificate」の「Creating Certificate」をクリック
  • SSL証明書の作成手順は以下の通り
    • Request:特になし。「Continue」をクリック
    • Generate: 準備したCSRを選択する。「Continue」をクリック
    • Download:「Download」から作成されたSSL証明書をダウンロードする。ダウンロードが完了したら「Done」する。
  • ダウンロードしたSSL証明書をダブルクリックしてキーチェーンに登録する
    • キーチェーンに登録したSSL証明書は、この後「APNs用証明書(.p12) の書き出し」で利用します。

f:id:nopipi:20190112083347p:plain:w400

バイス登録

(1)対象デバイスのUUID確認
  • Mac に端末を接続し、Xcodeを起動する
  • 「Window」>「Devices and Simulators」をクリック
  • 「identifier」としてUUIDが確認できます

f:id:nopipi:20190112031725p:plain:w400

(2)デバイスの登録
  • 「Devices」>「All」をクリックして、右上の「+」をクリック
  • 「Register Device」を選択し、端末の「Name」と「UUID」を入力
  • 完了したら「Continue」をクリックし、次の画面で「Register」をクリック

f:id:nopipi:20190112032143p:plain:w400

開発用プロビショニングプロファイルの作成

利用する App ID、開発用証明書、端末をそれぞれ紐付けプロビジョニングプロファイルを作成します。

  • 「ProvisioningProfiles」>「All」をクリックし、右上の「+」をクリック

f:id:nopipi:20190112080823p:plain:w350

  • What type of provisioning profile:
    • 「Development」>「iOS App Development」を選択する

f:id:nopipi:20190126121551p:plain:w350

f:id:nopipi:20190126121832p:plain:w350

  • Select certificates: 開発用証明書を選択
  • Select devices.:テスト用に登録したデバイスを選択
  • Name this profile and generate.:「Profile Name」にプロファイル名を設定
  • Profile Name: 「 Download」をクリックしてプロファイルをダウンロードする
  • ダウンロードが完了したら「Done」をクリック

作成したプロビショニングプロファイルは、Xcodeで開発したアプリに組み込みます。

APNs用個人情報交換ファイル(.p12) の作成

プロバイダー(サーバや、Amazon SNSAmazon PinpointなどAPNsにプッシュ通知依頼するもと)がAPNsアクセスするときに必要となるAPNs用証明書(.p12) を作成します。

f:id:nopipi:20190112084846p:plain:w400

f:id:nopipi:20190112085343p:plain