Xcode8.0で実機テストをしてみる(Apple Developer Program登録済みの場合)

※(注)Xcode7以上では有料の Apple Developer Program に登録しなくても実機テストが出来るようですが、そのやり方ではありません

Apple Developer Program登録済みで実機テストを行った時のメモ。なお、Productionではなく、Developmentです。

# 参考

+ [[iOS 7] アプリ開発入門 1からはじめるiOS7 – プロビジョニングプロファイルの作り方](http://dev.classmethod.jp/references/generate-provisioning-ios7/)

# 環境

+ MacOSX El Capitan 10.11.6
+ Xcode8.0
+ iPodTouch(iOS 9.3.5)

# 目次

+ iOS Certicicates(Development)の作成
+ 実機の登録
+ AppIDの作成
+ ProvisioningProfileの作成
+ アプリの作成
+ 実機でのアプリの実行

# iOS Certicicates(Development)の作成

実機でアプリを動作させるためにProvisioningProfileを作成し、実機にインストールする必要があります。
上記ProvisioningProfileを作成する際に利用する証明書を作成します。

Webでも出来ますが、今回はXcodeからやってみます。

[iOSデバイス（iPhone・iPad）実機テスト](http://r-dimension.xsrv.jp/classes_j/ios_test/)


+ XCodeを起動
+ XCode->Preference
+ Accountタブを選択
+ 画面右下の「+」ボタンを選択し、Add AppleIDを選択
+ AppleID及びパスワードを入力
+ 成功するとアカウントが追加されるので、選択後、画面左下のViewDetailsを選択
+ iOS DevelopmentでCreateを選択し、Done

これでWebでAppleDeveloperを見るとDevelopmentの証明書の登録が確認できました。
便利。

# 実機の登録

テストする実機を登録します。
こちらはXcodeから現状できなそうだったので、Webでやってみました。

[ios developerに開発用デバイスを追加する(xcode6.0, ios8)](http://qiita.com/minoringo/items/ad18013ff287af2f3d86)

+ 端末をMacに接続
+ XCodeを起動する
+ Window->Devicesを選択
+ 接続されている端末を選択し、Identiferを確認
+ AppleDeveloperの画面を表示し、Cerfiticates,IDs & Profilesを選択
+ Devices->Allで右上の「+」を選択
+ Nameに任意の名前、UUIDに先程メモしたIdentiferを入力

登録後、WebのDevicesから確認できます。

# AppIDの作成

対象のアプリのAppIDを作成します。
Webでやります。
なお、設定はあとでAPNsのテストがしたいので、Push Notificationを有効にして作成しています(本投稿ではAPNsの設定はしません。別途時間があれば書きたい。。。)

[App ID](https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/AppID.html)


AppleDeveloperにログイン後、Cerfiticates,IDs & Profilesを選択。
次に表示される画面で Identifies->App IDsを選択。
既に選択されているAppID一覧が表示される+ボタンを押して追加の画面に遷移します。

+ App ID Description->AppIDを識別するために分かりやすい名称とします。
+ App ID Suffix->恐らくiOSアプリを作成する時のOrganization Identifierと合わせる必要があるように伺える。Explicit App IDでは厳密に指定し、Wildcard App IDではcom.domainname.*という感じで書けるようです。PushNotificationを使う場合、Explicit App IDの必要があるので、今回はこちらを指定
+ App Services-> Push Notificationにチェックを入れます

作成が完了すると一覧画面で登録内容が確認できます。

# ProvisioningProfileの作成

実機にインストールが必要なProvisioningProfileを作成します。
こちらもWebで行います。

AppleDeveloperにログインし、Cerfiticates,IDs & Profilesを選択。
次にProvisioning Profile->Allを選択し、右上の「+」を選択肢、証明書を追加します。

 + Developmentの iOS App Development を選択し、次の画面で対象のAppIDを選択
 + 作成した証明書(XCodeから作成した開発用の証明書)を選択
 + 登録したデバイスをチェック
 + ProfileNameを登録

これでプロビジョンファイルがダウンロードできます。ダウンロード後は任意の場所に配置しておきます。

XCodeに登録されているか確認するためにXcodeを開き、Xcode->Preferenceから対象のAppleIDを選択したのですが、画面のProvisioning Profilesにも何も表示されていませんでした。。。

調べてみると以下の記事が。。。

[Xcode 7でProvisioning Profileを更新する方法](http://frnk.hatenablog.jp/entry/2015/09/30/145853)

一度登録されたAppleIDを削除し、再度AppleIDを追加してみると表示されました。。。ぐぬぬ。。
この画面で対象のProvisioningFileを選択し、右クリックでShow in Finderで場所がファイル配置場所も分かります。（ダウンロードできましたが、Xcodeで管理したほうが良いと思います)

なお、このタイミングでXcodeで Window->Devices->自分のデバイスを選択->右クリック後、Show Provisioning Profilesで確認するとProvisioning Profileが実機にインストールされていました。(Xcodeに登録されたから???)

# アプリの作成

テスト用のアプリを作成します。

+ Xcodeを開く
+ Create a new Xcode project を選択
+ テンプレートではiOS、SingleViewApplicationを選択
+ Teamというのが選択できるので、Apple Developer Program のTeamを選択。LanguageでSwiftを選択(Objective-Cでも良いです)。Organization IdentifierはAppID設定時と同じものを指定(検証したら同じでなくても大丈夫そうでしたが同じにします)
+ プロジェクトを配置する任意のフォルダを選択

プロジェクトが開かれるとxxxx.xcodeprojというファイルにSigningという項目があり、ここでチェックが行われているようでした。設定がだめだとここでエラーが表示されるのではないかと思います。

# 実機でのアプリの実行

画面右上のアプリ実行端末を選ぶ所でエミュレーターではなく、自分の実機を選択します。

次にxxxx.xcodeproj(プロジェクトを開くと最初に表示されるファイル)を確認します。
こちらのDevelopment InfoのDeployment Targetを確認します。自分の環境ではiPodTouchが iOS10 でなかったため、こちらでiOS9.3を選択しました。ここが実機と合っていないとエラーとなるようです。
準備ができたら、画面左上の再生ボタンを押します。

問題がなければこれで実機にアプリがインストールされ、実行できます。

お疲れ様でした!