iOSDeveloperProgram Enterprise版 Tips

#はじめに
Enterprise版では、AppStoreを介さずにiOS（iPhone, iPad）アプリを配布できる機能環境をAppleが提供してくれています。
購入できるのは法人のみ。

##この記事について

書いた当時の内容を反映したものです。
状況によっては取り下げることもありますのでご理解ください。


#購入に必要なもの
 - DunsNumber
 - 担当者（Appleとの契約責任者）
 - 年間利用料
 - 英語読解力
 - クレジットカード

##クレジットカード
Appleからの在籍確認電話後に購入処理となるので、最初はなくても進めることができます。
在籍確認後に必要になります。

##DunsNumber
**登録のフロー**

 - 商工リサーチで登録
 - iOSライセンス登録時にAppleのサイト経由で本国のDunsNumberへ登録など

**Legal Entity Name**
英語表記:Legal Entity Name を数回間違えてロックがかかるなどありました。
商工リサーチなどから送られてくる証書に記載されている、という話を聞きましたが
私個人は確認したことはありません。

#Agreement
許されない行為はいくつかあり、破った場合はペナルティがあることは明記されていますので、英語の本文を理解する必要があります。

 - アプリ提供は社員に対して、自社社員以外についても記載あり
 - 上記以外についての詳細はAgreementに記載

##ペナルティ
通常のStandard版同様にAppleが審査することもある
などなど記載

#配信方法
##iTunes利用
- プロビジョニングファイル
- インストールするipaファイル
上記をiTunes経由で同期インストール

###プロビジョニングファイルの更新
実機をPC/Macに接続し手動で同期

##OTA（Over The Air）利用
release（productionともいいます）版配信時にはかならずセキュリティ対策が必要です。

 - 証明書
 - Basic認証
 - IPフィルタリング

上記を例に対策が可能なサーバを選定・構築します。

###インストール時の挙動
- インストールするiOSデバイスの情報はAppleで照会
- iTunesConnectで作成済みのプロビジョニングファイルをiOSデバイスへ同時にインストール

###プロビジョニングファイルの更新
 1. iTuneConnectでプロビジョニングファイルを更新
 2. アプリ再ダウンロード

それでもだめなときは
デバイスをXcodeにつなぎ、Provisioning Fileを追加

![スクリーンショット 2015-10-16 19.58.36.png](https://qiita-image-store.s3.amazonaws.com/0/12362/e2fe33e9-e3d5-cf2c-ede4-3cdea44b2b0f.png)

![スクリーンショット 2015-10-16 20.01.33.png](https://qiita-image-store.s3.amazonaws.com/0/12362/da0467f0-9863-314f-7812-380d6d3933ca.png)


##MDM(Mobile Device Management)利用
各社異なる場合があり、割愛します。
OTAの場合プラスアルファな機能があります。

#ライセンスの更新時期
期限切れ前1.5ヶ月〜2ヶ月ほど前から。
Standard版よりも早めに年間ライセンスの更新作業が可能です。

#Agent証明書
##新規作成
法人の場合は、Standard版も同様で複数作成が可能です。
最大数は未検証ですが、４つぐらいまでは確認済み。作成できる数も上限は変わることがあります。
証明書の一覧に表示されている日付で見分けます。
`追記-2016/08/19現在`Enterprise版は2個までです。
さすがに二個だと差し替えができなくなるので下記用途は難しくなってしまいました。

 - アプリ生成用Mac単位
 - アプリ単位
 - 制作会社別

リボークしても問題ないのであれば、こんな発行の仕方もあるかと思います。

##更新
現在、証明書の有効期限は作成から３年、毎年更新する必要はなし。
証明書の期限が一年を切る前に更新を検討し、
使用中の証明書は期限が切れる前にinvokeしないようにしています。

##期限切れ、invoke
期限切れ、invokeした証明書の設定のままのプロビジョニングファイルは`invalid`となります。

#はまりポイント
Standard版でも起こりうるところも含みます。

##AppleID取得時の名前
日本語の設定でAppleIDを取得するときに次のように表示されれば
漢字で姓名を入力してしまうと思いますが
姓（漢字）、名（漢字）に入力するのは、アルファベットでの記名です。

![スクリーンショット 2014-12-27 21.20.41.png](https://qiita-image-store.s3.amazonaws.com/0/12362/aae66640-ef19-2798-29c9-7d97c31a6529.png)

ユーザ名を日本語で入れてしまうと、Appleさんから`アルファベットで登録してください`と連絡がきます。

登録時表示する国設定を`日本`ではなく、`Japan`を選ぶと
![スクリーンショット 2014-12-27 21.27.47.png](https://qiita-image-store.s3.amazonaws.com/0/12362/584029a7-702a-6ba4-dfb2-c9e75359fe62.png)
次のように表示されます。

![スクリーンショット 2014-12-27 21.21.12.png](https://qiita-image-store.s3.amazonaws.com/0/12362/53219e99-45ec-08de-098b-7fdfd3ccc10c.png)

##設定ファイル
| ファイル名 | 有効期限 |
|:--|--:|
| 証明書|※Standard版と異なります　3年|
| プロビジョニングファイル| 1年 |

###証明書の期限切れ
 - プロビジョニングファイルから証明書が外れるのでつけ直しが必要

###プロビジョニングファイルの期限切れ
 - ひもづける証明書の期限内で限定されます
 - アプリの起動ができなくなる

##デバイスのクリア処理
2014/04に確認している仕様です。

 - チェックボックスで`消さないもの`を選ぶ
 - adhocのプロビジョニングファイルに含まれるデバイスを全部消してしまうとadhocにデバイスの追加が出来ずに新規作成を余儀なくされることがありました。

プロビジョニングファイルで確認したことは、Appleへ問い合わせてみようかと思います。

###参考URL
http://kronus9.sblo.jp/article/85086948.html
##OTA(Over The Air)配信
| ファイル | 内容 |
|:--|:--|
| コンテンツ|plistを使うためのスキーマ設定とパラメータを付加したコンテンツ|
| plist|アプリのダウンロード設定|
| ipa| アプリ本体 |

###ダウンロード、インストールできない時

 - OTAの入り口となるコンテンツやplistに記述するipa,plistへのパスを記述間違い
 - plistに記述するアプリのBundleIdentiferの記述間違い、必須項目の抜け
 - ダウンロードさせるファイル（コンテンツ、plist、ipaファイル）いずれかに読み取り権限をつけ忘れる
 - plistをhttpsで指定漏れ（iOS7.1デバイスより）

参考URL
社内 App をワイヤレスでインストールする
https://help.apple.com/deployment/ios/#/apda0e3426d7

#さいごに
Appleの審査がない状態でアプリを配信できるのはたいへん便利ですが
一方、アプリ運用をややこしくしている場合もあります。
またOTAの場合、不正利用をAppleが把握しやすい構成になっていることに気づきます。
Enterprise版にAdhoc作成機能がある理由を理解した運用が必要です。