ガンズターン 公式サイト

楽しいことに、まじめです。 ——ガンズターンアプリ研究所公式サイト

プッシュ通知機能実装に必要な証明書ファイルの取得方法(ぱずもぐ備忘録3回目)

Pocket

本日2度目の記事になります

お疲れ様です。(独立してからこの言葉を口にする数が激減しました)

ガンズターンのRyosukeです。

先ほど更新した記事に引き続き、拙作「ぱずもぐ」を作成するにあたってハマった点を具体的に記載していきたいと思います。

今回は、タイトル通り「通知機能実装に必要な証明書ファイルの取得方法」です。


1. プッシュ通知機能とはなんぞや?

そもそも「プッシュ通知機能」ってなに? て人も多いかと思うので、簡単にご説明いたします。
例えば、こんな表示がiPhoneに出てきたことはありませんか?

参考画像1

プッシュ通知参考画像1

プッシュ通知参考画像1

参考画像2

プッシュ通知参考画像2

プッシュ通知参考画像2

この表示、アプリによってはキャンペーンの開始時刻や、新バージョンのリリースのお知らせなどをユーザに直接届けるために使われています。
こういう風に、アプリ開発元から各ユーザの手元まで直にメッセージを届けるための仕組みのことを「プッシュ通知機能」と呼んでいます。

どんな仕組みで動いているかっていうと、ざっくり言えば、Appleの通知機能用のサーバ(Apple Push Notification Service — 略してAPNSと呼ばれてます)に「このアプリを持っているユーザにこういうメッセージを送って」というお願いをすると、APNSのサーバがその要求通りにメッセージをユーザまで届けてくれるというふうになってます。

2. 通知機能実装のためにどんな作業が必要か?

開発者が実装すべき部分は、概ね以下の通り。

  1. ユーザ毎、かつアプリ毎に固有に割り振られたID(deviceToken)を取得し、保持する処理。(サーバ、クライアント両方)
  2. 保持されたIDとメッセージ内容を付加してAPNSに通知要求を送る処理。(いろんなやり方があるため詳細割愛)
  3. 場合によってはクライアント側で通知受信時に必要な処理。(これはなくても、ホーム画面にただメッセージを出すだけなら可能です)

手順的には大したこともないのですが、「2.」の要求を送るための下準備がけっこう大変です。
それに、APNSにメッセージを送信する方法は、アプリの規模によってどのようなものが最適なのかが千差万別になると思います。

ただ、どんな方法をとるにしろ、必ず必要になる作業で、かつ操作が煩雑、しかもついつい忘れがちになることについて、これから記事にします。

3. APNSに要求を送るためには証明書ファイルが必要

証明書ファイルっていうのは、英語でいうと「Certification File」らしいのですが、端的に書くと「この情報の発信元は確かに○○さんで間違いないですよ」ということを証明するためのファイルです。

つまり、正規の証明書ファイルを持っている人からの要求しか、APNSは受け付けてくれないんですね。
まあ、なりすましとかされた時の影響の大きさを考えたら当然の防衛策です。
むしろここのセキュリティがしっかりしていないと怖くてこんな機能実装する気になりませんね。

……で、問題はこの証明書ファイルをどう入手するかっていうのが、意外と難しい上に、覚えづらいということです。

しかしご安心ください。
世の中には素晴らしいサイトがありまして、なんと以下の記事にほぼ全ての画面のスクリーンショット付きで、非常に詳しく手順がまとめられています。

[参考記事]
Lancorkさま:iOSでプッシュ通知を実装する方法の超詳細まとめ(前編)
Lancorkさま:iOSでプッシュ通知を実装する方法の超詳細まとめ(後編)

この記事読んだら、証明書の取得だけじゃなくてプッシュ通知機能そのものも実装できちゃいますね(すごい)。

4. ようはAppleから取得した証明書を変換してサーバに置いておく必要がある

上記参考記事のうち「証明書を取得する」部分にだけ注目して自分なりにまとめると、以下のような流れになります。

  1. Mac上で、キーチェーンアクセスを開く。
  2. 「証明書アシスタント」→「認証局に証明書を要求」
  3. 「メールアドレス」(デベロッパ登録したもの)、「通称」(なんでもよさそう)を入力
  4. 「要求の処理」は「ディスクに保存」にチェックして続ける→ファイル保存
  5. AppleDevelopperCenterに接続。
  6. 「Certificates, Identifiers & Profiles」を選択。
  7. 「Identifiers」の「App IDs」から対象のアプリを選ぶ。
  8. 「Edit」→「Push Notifications」で「Development」(開発)か「Production」(本番)を選んで「Create Certificate」を選択。
  9. 「Create CSR File」の画面になるので、「Continue」を選ぶ。
  10. 「Generate your certificate」の画面まで進めて「4.」で保存したファイルをアップロード。
  11. 「SSL Certificate」をダウンロードできるようになる。
  12. ダウンロードしたファイルの拡張子は「.p12」なので、これを以下のコマンド(Macのターミナルから)で「.pem」ファイルに変換する。
    openssl pkcs12 -in (ダウンロードしたファイルの名前).p12 -out (出力するファイルの名前).pem -nodes -clcerts
    
  13. 変換が完了すると「MAC verified OK」の表示が出て、変換された「.pem」ファイルが出来上がっている。

  14. この「.pem」ファイルを自サーバの任意の場所に置いて、APNS送信時にそれを読み込むようにすればOK。

……思いっきり、上記参考記事の焼き直しの内容ですみません。
ただ、都合3度目の作業であったはずの「ぱずもぐ」用の証明書作成時に、この手順を何一つ思い出すことができなかったので、自力で思い出せる知識として定着させるため、こうして記事にしてみました。

また、「14.」の手順をサーバに組み込むのもなかなか骨が折れる作業なのですが、わたしはけっきょくあまりかっこいい実装ができなかったので、方法は秘密にさせていただきます。(苦笑)

はてさて。
ぱずもぐ備忘録ですが、今の所予定しているのはあと2回です。
次回は「ストア登録用アイコン画像作成のコツ」を自分なりに整理して記事にしたいと思います。
(たぶん、明日)

んではまた。

ガンズターンのRyosukeでした! m(_ _)m

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

トラックバックURL: http://gunsturn.com/2015/07/02/puzzmog_devlog_3/trackback/