[Visual Studio Mobile Center] SSL証明書要らず!プッシュ通知を試してみた

vsmc

はじめに

こんにちは、加藤です。もうすぐ子供が1歳になるという現実に時の流れの速さを感じずにはいられない今日この頃です。
先日、久しぶりにVisual Studio Mobile Center(以下、VSMC)のコンソールを覗いてみたらプッシュ通知の項目が増えていることに気づきました。
ということでVSMCからiOSアプリへのプッシュ通知を試してみました。

VSMCってそもそも何?という方は以下の過去記事もあわせてご覧ください。

VSMCは記事執筆時点でPreview版です。そのため、正式版リリース時には機能が異なる可能性がありますのでご注意ください。なお、Preview版の間は無料で利用できます。

事前準備

プッシュ通知の機能を使うので対象ターゲットのcapabilitiesでPush Notificationsを有効にしておきましょう。 vsmc_push_001

また、プッシュ通知を有効にしたAppIDやプロビジョニングプロファイルは事前に作成しておきましょう。

VSMC側の設定

事前準備が出来たらVSMC上でプッシュ通知の設定を行います。 プッシュ通知の設定画面はVSMC上でアプリを選択し、「Push」の項目を選択することで表示されます。 vsmc_push_002

この設定画面で以下を設定する必要があります。

  • アプリのPrefixとID
  • Key ID
  • Authentication Token
  • Push通知の環境(Production もしくは Sandbox)

以降、それぞれについて詳しく見ていきましょう。

アプリのPrefixとID

対象アプリのPrefixとIDです。これらの値はAppleデベロッパーポータルの「App IDs」で確認出来ます。 vsmc_push_003

Key ID

Key IDはプッシュ通知用KeyのIDなのですが、まずはそのプッシュ通知用Keyを作成する必要があります。
KeyはAppleデベロッパーポータルの「Keys」から作成出来ます。 以下のように任意のKey Nameを入力し、Key ServicesでAPNsのチェックをつけてContinueをクリックします。 vsmc_push_004

確認画面が表示されるのでConfirmをクリックします。 vsmc_push_005

Keyが作成され、画面上にKey IDが表示されます。 vsmc_push_006

また、Authentication Tokenの設定で必要になるので、
Downloadボタンをクリックしてファイル(.p8)をダウンロードしておきましょう。

Authentication Token

Authentication TokenはKeyの作成時にダウンロードしたファイル(.p8)をテキストエディタ開けば確認出来ます。 vsmc_push_007

Push通知の環境(Production もしくは Sandbox)

プッシュ通知の環境を選択します。 ビルドに使用する開発者証明書に合致する方を選びます。今回はSandboxを選びました。

上記項目を全て入力したらDoneをクリックします。これでVSMC上のプッシュ通知設定は完了です。 vsmc_push_008

iOS側の実装

検証環境

以下の環境で検証を行っています。

  • macOS Sierra バージョン 10.12.5
  • Xcode Version 8.3.3 (8E3004b)
  • iPhone 7実機
  • Swift 3.1

プッシュ通知用モジュールの導入

Mobile Center SDKの一部であるプッシュ通知用モジュールを導入します。
CocoaPodsでサクッと導入しましょう。 Podfileにpod 'MobileCenter/Push'と記載してpod installします。 ※記事執筆時点でのMobileCenter/Pushのバージョンは0.10.1でした。

プッシュ通知サービスを開始

モジュールが導入できたら、AppDelegateのdidFinishLaunchingWithOptionsメソッドでプッシュのサービスを開始します。
また、プッシュ通知するための必須作業ではありませんが、MSMobileCenter.installId()の部分でインストールIDを発行しています。
インストールIDとはMobile Center SDKが生成するデバイスを一意に識別するためのUUIDで、アプリをアップデートしても一度発行したUUIDは不変ですが、アプリを再インストールすると変わるというものです。
VSMCではこのインストールID単位でのプッシュ通知が出来ます。
今回この機能を試したかったのでインストールIDを発行し、UUIDを確認するためにprintで出力しています。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    // プッシュのサービスを有効化
    MSMobileCenter.start("{Your App Secret}", withServices: [MSPush.self])

    // インストールIDを発行
    let installId = MSMobileCenter.installId()!
    print(installId)

    return true
}

{Your App Secret}の部分はご自身の環境に合わせて設定してください。
値は以下のようにアプリの設定画面で確認出来ます。

vsmc_push_009

アプリを起動し、インストールIDを控えておく

コードが書けたらアプリを起動(これによりデバイスがプッシュ通知対象としてVSMCに登録される)し、インストールIDを控えておきましょう。

プッシュ通知してみる

実際にプッシュ通知してみましょう!
VSMCで「Send notification」をクリックすると通知内容を設定する画面が開くので以下を設定します。

  • Campaign Name(必須):プッシュ通知結果をトラッキングするための名前。アプリのユーザーには表示されない。
  • Title(任意):通知タイトル。アプリのユーザーに表示される。
  • Message(必須):通知メッセージ。アプリのユーザーに表示される。

今回は以下のように設定しました。設定したらNextをクリックします。 vsmc_push_010

プッシュ通知対象を設定する画面が開きます。以下の3種類があります。

  • All registered devices:登録されているデバイス全て
  • Custom device list:対象インストールIDのデバイス(最大20個指定可能)
  • Audience:国やアプリのバージョンなどによるセグメント配信

今回はCustom device listでインストールIDを指定した配信を行ってみます。
インストールIDを指定したらNextをクリックします。 vsmc_push_011

最後に通知内容の確認画面が表示されるので「Send notification」をクリックします。 vsmc_push_012

配信されました!!
vsmc_push_013

プッシュ通知の送信結果はVSMC上で確認できます。こちらは一覧。 vsmc_push_014

こちらは詳細。 vsmc_push_015

おわりに

VSMCからiOSアプリへのプッシュ通知を試してみました。アプリ毎にプッシュ通知のSSL証明書を用意する必要がなく、Key IDとAuthentication Tokenで通知が行えるので良いですね!
セグメント配信もぜひ試してみたいと思いました。
今回は以上です。

参考記事