Provisioning Profileの有効期限をアプリ内で取得

AdHocで作成したiOSアプリ(ipa)にはプロビジョニングプロファイルの有効期限が存在するが、 その有効期限をアプリ内から確認する方法

確認自体はipaを解凍して見れば良いのだけど、エンタープライズの様にアプリ内で出したい場合は、 この方法であらかじめ設定画面とかに仕込むと良いかもしれない

もちろんSettings.bundleや直接アプリ内にリテラルとして持たすのも方法の一つだが、 それだと更新の度に余分な作業が発生したり更新忘れとかのミスも発生したりしがちなので、 この方法に行き着いた感じ

(プロビジョニングプロファイルはアーカイブ時に確定されるので、 アプリバージョンのようにビルドスクリプトに仕込んでといった技は使えない。 Xcode7以前はdryrunでビルド設定を出力させてそこから特定ということもできたが、 Xcode8からの自動にした場合は使えないっぽい)

方法

ipa作成時のプロビジョニングプロファイルについてまとめると、

これを踏まえてコードにすると、以下の感じになる

まずは1行目にあるように、同梱されているプロビジョニングを取得する
デバッグ実行時には正しく取得できないので注意!

次に5〜14行目にあるように、plistとして必要な部分のみに加工。 (不要部分があると変換に失敗するので)
抜き出したらPropertyListSerializationDictionaryに変換して有効期限を抜き出す

あとは、画面に表示させる為に文字列に変換してやって完了 (例では余裕を持って1日前の日付にしている)

開発環境