ラベル Provisioning の投稿を表示しています。 すべての投稿を表示
ラベル Provisioning の投稿を表示しています。 すべての投稿を表示

2011年7月13日水曜日

Provisioning Profile が切れてしまったらどうしたらいいのか?

しばらく Xcode を触ってないと、Provisioning Profile の有効期限が切れてしまったりすることがある。

基本的に Provisioning Profile のことはよくわかってないので、こういう場合は焦るばかりである。

で、そんな時はやはり Google

http://iphone.hd-28v.com/?eid=69

2011年6月15日水曜日

Provisioning の所まで訳してみてわかったこと

なにせ今まで適当に通過してきた Provisioning Profile であるが、なんとなくわかったことがある。

今まで最大の謎だったのが  Development Provisioning Profile における、"Team Provisioning Profile:*" の存在だ。こいつを指定すると、プログラムは普通に iPhone で動くのである。それ以外を指定すると、なんかプロファイルが違うとか怒られたりするのである。

"Team Provisioning Profile" は、Xcode がデフォルトで使うプロファイルなのだ。そして、それには ABCDEFGHIJ.* というワイルドカード App ID が付随しているのだ。("ABCDEFGHIJ" のところは、なんかランダムなIDコードが入る)

実際にリリースするようなアプリケーションの場合は、このワイルドカードではダメで、別途App ID が必要になる。その App ID を指定した provisioning profile を指定する際には、Xcode でターゲットの情報を見て、Identifiler(識別子)欄にその名前を各必要があるのだ。

ここまでは大体わかったのだが、今までのところ、ワイルドカード App ID を作ってないので、ワイルドカードの扱いがよくわからない。

次は Distribution Profile を読んでみたい。

Provisioning Portal の謎〜ひとまず訳してみる005〜Provisioning

Development Provisioning Profile の生成とダウンロード

Provisioning Profile とは、開発者とデバイスを認証された iOS 開発チームの一意な関連付けを行い、そしてデバイスをテストに使えるようにするための、デジタル要素の集合体である。Development Provisioning Profile はアプリケーションコードを動かしたいデバイス全てにインストールされている必要がある。それぞれの Development Provisioning Profile は複数の iOS Development Ceritificate (iOS開発者証明書)と、複数の一意なデバイス識別子と、ひとつのApp IDを持っている。
Provisioning Profile 内に指定されたデバイスをテスト用に使えるのは、プロファイルに自身の iOS Development Certificate (iOS 開発証明書)が含まれている開発者のみである。ひとつのデバイスは複数の provisioning profile をもつことができる。
Development Provisioning Profile の生成
  1. ポータルの "Provisioning" セクションにおいて、チーム管理者は Development タブの "Add" をクリックする
  2. Provisioning Profile の名前を入力する
  3. この provisioning profile に登録するデバイスを指定する。Provisioning profileを使用するためのデバイスを指定する必要がある。もしデバイスのUDIDがprovisioning profile に含まれていないと、プロファイルとあなたのアプリケーションはそのデバイスにインストールされない。
  4. Provisioning profile に登録される iOS Development Certificate を指定する。ここで指定する iOS Development Certificate は、あなたのデバイス上でテストしたいアプリケーションへ署名するのと同じでなければならない。
  5. Development Provisioning Profile に単一の App ID を指定する。ひとつのDevelopment Provisioning Profile に指定できるのは、たったひとつの App ID のみである。だから、あなたのつくる複数のアプリケーションがそれぞれ異なるキーチェーンへアクセスする必要があれば、各アプリケーション用に Development Provisioning Profile をそれぞれ作る必要がある。全く同じキーチェーンへアクセスする複数のアプリケーションのセットを作る場合もしくは、キーチェーンへのアクセスが必要ないアプリケーションを作る場合は、ワイルドカード(アスタリスク)を含む App ID を使用してアプリケーションをビルドすることができる。
  6. Development Provisioning Profile を生成するために "Submit" をクリックする。



Development Provisioning Profile のインストール

すべてのチームエージェント、管理者、そしてメンバーは Development Provisioning Profile の精製後に、それをポータルの "Provisioning" セクションからダウンロード出来る。Provisioning Profile 内に、自身のAppleデバイスIDと、iOS Development Certificate を含む開発者のみがアプリケーションを自分のデバイスにインストールしてテストできる。
  1. Provisioning Portal "Provisioning" セクションにおいて、必要な provisioning profile の横にあるダウンロードボタンをクリックする。
  2. ドックの Xcode アプリケーションのアイコンもしくは Xcode の”オーガナイザー”ウインドウ内にダウンロードされたファイルをドラッグ&ドロップする。そうすると自動的に .mobileprovison ファイルを所定のディレクトリにコピーしてくれる。あるいは、.mibileprovision ファイルをドックの iTunes アイコンにドラッグするか、もしくはファイルを‘~/Library/MobileDevice/Provisioning Profiles’にコピーすれば良い。ディレクトリが存在しない場合、それを作成する必要がある。また、.mobileprovision ファイルのインストールは、オーガナイザーウィンドウの Provisioning セクションの "+" ボタンをクリックしても良い。



アプリケーションのビルドとインストール


あなたはこの時点で認証された iOS Development Certificateと、Apple デバイスそして正常にインストールされた Development Provisioning Profile を持っている。Xcode は今、アプリケーションをビルドして、開発用デバイスにインストールできる。たったひとつの iOS Development Certificate と、iOS Development Provisioning Profile しか持っていない場合、Xcode 内の設定を変更する必要は一切ない。コンパイルとインストールの方法は下記の通り:

  1. Xcode を起動してプロジェクトを開く
  2. プロジェクトウィンドウ内において、左上隅のドロップボックスから‘Device - iPhone OS’ from the ‘Device | Debug’を選択する
  3. プロジェクトターゲットをハイライトさせ、メニューバーの"info" アイコンを選択する。
  4. ターゲット情報ウインドウの "Build" ペインを開く。 ‘Code Signing Identity’ フィールドの‘Any iOS Device’ ポップアップから 開発中のコードに署名及びインストールしたいiOS Development Certificate / Provisioning のペアを選択する。あなたの iOS Development certificate はボールド体で表示され、関連付けられた Provisioning Profileがその上にグレーで表示されている。下記のサンプルでは、  ‘iOS Developer: Team Leader’ Development Certificateであり、'My First Development Provisioning Profile’ がそれに関連付けられた .mobileprovision ファイルである。

  • 注意:iOS development certificate のプライベートキーが失われるかもしくは provisioning profile に iOS development certificate が含まれない場合、iOS Development Certificate / Provisioning Profile のペアが選択できず、下記の表示を見ることとなる。この状況を修正するため、プライベートキーを再インストールするか、あるいは、あなたの iOS Development certificate が含まれているprovisioning profile をダウンロードする必要がある。
5. ターゲット情報の "Properties" ペインにおいて、App ID の Bundle Identifier 部分を入力する。App ID を明示する場合、Identifier フィールドに App ID のBundle Identifier 部分を入力する必要がある。例えば、あなたの App ID がA1B2C3D4E5.com.domainname.applicationnameである場合、com.domainname.applicationnameを入力する。App ID にワイルドカード(アスタリスク)を使用している場合、アスタリスクを他のどんな文字列で置き換えても良い。  
下記に、App ID の例と、Xcode Identifier フィールドへの入力例を示す:
    • App IDの例: A1B2C3D4E5.com.domainname.applicationname
      Xcode
      に入力する Identifier: com.domainname.applicationname
    • App IDの例: A1B2C3D4E5.com.domainname.*
      Xcode
      に入力する Identifier: com.domainname.<name_of_application_or_suite>
    • App IDの例: A1B2C3D4E5.*
      Xcode
      に入力する Identifier: <full_reverse_dns_university_and_application_or_suite_name>
6. アプリケーションをデバイスにインストールするため、 ‘Build and Go’ をクリックする。

2011年5月28日土曜日

Provisioning Portal の謎 ~ひとまず訳してみる 004~App ID の概要

App IDs

App ID はiOS開発とProvisioning プロセスの統合的なパートであり、これによってApple Push Notification service および/もしくは 外部ハードウェアアクセサリとの通信が可能になります。さらに、App ID はキーチェーンデータ(パスワードのような)をアプリケーションセット間で共有するために使用できます。

App ID は10文字の一意な “Bundle Seed ID” と呼ばれる文字列と、traditional な(訳注:この部分、訳者は MacOS での開発経験がないので適切な訳語が選べない) CF Bundle ID(もしくは Bundle Identifier) から構成されます。App ID におけるBundle Seed ID の部分は、単一 App ID を用いてあなたが開発する複数のアプリケーション間でキーチェーンアクセスを共有する為に使用できます。さらに、iOSアプリケーションとペアで使いたい外部ハードウェアアクセサリに組み込むことも出来ます。Apple Push Notificaton service (APNs) を使用するため、および、In App Purchases にアプリケーションを登録するためにも、App ID の登録は必要です。
App ID の Bundle Identifier 部分はワイルドカードキャラクター(アスタリスク “*”)で置き換えることも出来ます。これにより、一つのApp ID を複数のアプリケーションをビルドしてインストールする目的で使用で>きます。ワイルドカードキャラクターを使用しない場合、アプリケーションをあなたのデバイスにインストールするためには、App ID のBundle Identifier 部分をXcode のCF Bundle ID として入力する必要があります。Bundle Seed ID の部分は Xcode に入力する必要はありません。ワイルドカード App ID は、Apple Push Notification Service および In App Purchase と共に使用することは出来ません。

Apple Push Notification Service について更に詳しくは、 Local およびPush Notification プログラミングガイド, App ID How-To および、 Apple Push Notification topic in the Apple Developer Forumsを参照ください。

In App Purchases をアプリケーションに組み込むためのさらに詳しい情報は、 Store Kit Programming Guide, App ID How-ToiTunes Connect ユーザーガイドを参照ください。

キーチェーンアクセスに関して詳しくは Keychain Services Reference を参照ください。

iOSアプリケーションと通信する外部アクセサリーについて詳しくは MFi Program を参照ください。

Provisioning Portal の謎 ~ひとまず訳してみる 003~App ID

Provisioning Portal の App ID パートの "How To" タブには次の記述がある:

~~~

App ID の生成


App ID は一意の識別子(identifier)であり、これによってAppleからの通知サービス(Apple Push Notification Service), アプリケーションとのキーチェーンデータの共有、自作のiOSアプリケーションプログラムと関連づけたい外部ハードウェアアクセサリとの通信が可能になります。iOSベースのデバイスに自作アプリケーションをインストールするには、App ID の生成が必要となります。

個々のApp ID は、 10文字の一意な “Bundle Seed ID” プレフィックスと、”Bundle Identifier” から構成されます。”Bundle Seed ID” は Apple によって生成され、”Bundle Identifier” はチーム管理者がProvisioning Portal に入力します。App ID の”Bundle Identifier” 部分には、ドメイン名を逆から記述した形式が推奨されます。App ID は例えば次のような形式です: 8E549T7128.com.apple.AddressBook.

同じキーチェーンアクセスを共有するアプリケーションのセット(例:アプリケーション間でパスワードを共有するようなアプリケーション群)を生成する場合、もしくは、全くキーチェーンへのアクセスを必要としない場合、アスタリスク”*”をワイルドカードキャラクターとして後置してアプリケーションセット用に単一のApp ID を生成することが出来ます。ワイルドカードキャラクターはApp ID 文字列の一番最後の文字でなければなりません。この種のApp ID は次のようになります:R2T24EVAEE.com.domainname.* もしくは R2T24EVAEE.*

こうしたワイルドカードを使う場合、Xcode の “CF Bundle Identifier” フィールドに単純にアスタリスクを入力すれば良いだけです。

App ID の生成


  1. チームメンバーもしくはチーム管理者がProvisioning Portal の “App ID” セクションに行きます。
  2. “Add ID” をクリックします。
  3. App ID 用の共通名を入力します。これはProvisioning Portal ないで参照を容易にするための名称です。
  4. Bundle Identifier をテキストフィールドに入力します。”com.domainname.applicationname” のように、ドメイン名を逆転したような記法を推奨します。同じキーチェーンアクセスを共有するようなアプリケーションセット用には、Bundle Identifier としてワイルドカードキャラクターを使用する必要があります。(例: com.domainname.* もしくは *)。このBundle Identifier はXcode内の自作アプリケーション用のあらゆるCF Bundle Identifier に合致する必要があります。
  5. この時点で “Submit” をクリックすると、10文字のBundle Seed ID が生成され、すでに入力ずみのBundele Identifier と結合されます。この文字列はApp ID 文字列となります。注意:Bundle Seed ID は、Xcode に入力する必要はありません。
  6. 共通のキーチェーンアクセスを必要とするアプリケーションセットそれぞれにApp ID を生成します。キーチェーンアクセスを必要とするアプリケーションセット(アプリケーション間でパスワードを共有するような)を作成したり、キーチェーンアクセス不要なアプリケーションセットを作成する場合、アスタリスクをワイルドカードキャラクターとして後置した単一のApp ID を全てのアプリケーション用に生成します。


App ID をApple 通知サービス(Apple Push Notification service)に登録する


  1. Provisioning Portal のApp ID セクションでは、Apple 通知サービス(Apple Push Notification service)に使用したいApp ID を設定することが出来ます。APNに使用できるのは特定のBundle ID を持つApp ID のみです。ワイルドカードApp ID を使用することは出来ません。Apple 通知サービス(Apple Push Notification service)カラム内の”Available” を参照してこのApp ID を登録すると共に、このApp ID のための証明書を設定する必要があります。
  2. 使用したいApp ID の横の “Configure” をクリックします。
  3. Configure App ID ページにおいて、Push Notification Services ボックスを使用可能にチェックして、Configure ボタンをクリックします。このボタンをクリックすると APN アシスタントが起動されます。APNアシスタントは、あなたのApp ID に特有のクライアントのSSL証明書を生成するための一連の手順を提示してくれます。
  4. クライアントSSL証明書を任意の場所にダウンロードします。ダウンロードした証明書ファイル(拡張子は .cer)をダブルクリックして、キーチェーン内にインストールします。
  5. 終了したら、APNSアシスタント内で”Done”をクリックします。
  6. キーチェーンアクセスを起動します。プロバイダー開発用に使用しているコンピュータのログインキーチェーンに証明書をインストールしてください。APNs SSL 証明書は通知サーバ(notification server)にインストールされます。
  7. これらのステップを完了したら、iOS Dev Center Portal のConfigure App ID ページにもどっります。証明書は緑の丸でマークされ、”Enabled” と表示されます。
  8. APNのセットアッププロセスを完了するには、APNで使用可能なApp ID を含むprovisioning profile を生成する必要があります。


App Purchases とゲームセンター用にApp ID を登録する

注意:In App Purchases Sandbox をテストに使用するためには、iTunes Connect 内のIn App Purchase Test User アカウントを新に生成する必要があります。iTunes もしくは iOS 用の既存のいかなるアカウントもsandboxテスト用には使用できません。これらテストアカウントを生成する方法については”iTunes Connect Developer Guide” を参照ください。 Game Center Sandbox をテスト用に使用するには、あなたのデバイスのGame Center application 内に、Game Center テストユーザーアカウントを新たに生成する必要があります。


  1. 全ての明示的なApp ID は自動的にIn App Purchase と Game Center で使用できるように設定されます。ワイルドカード App ID と既存のApp ID を複製したApp ID は、In App Purcases と Game Center では不適格となり使用できません。
  2. In App Purcase をセットアップするために iTunes Connect の Manage In App Purcase モジュールを使用して下さい。

2011年5月15日日曜日

Provisioning Portal の謎 ~ひとまず訳してみる 002~Certificate (証明書)  続き

証明書署名リクエストの受理

チームの代理人とチームの管理者はiOS Development Ceritificate リクエストを受理するか拒否する権限を有しています。チームメンバーのリクエストを受理もしくは拒絶するには、チーム管理者は最初に全員のCSRを発行する必要があります。承認のためにCSRが発行されたら、チーム管理者はCeritificatesセクションにおけるDevelopmentタブに誘導されます。ここにおいて、CSRは各リクエストに対応したアクションをクリックすることで受理もしくは拒絶されます。
  1. CSRが受理もしくは拒絶されると、リクエストを発行したチームメンバーはe-mailによって証明書のステータス変更を通知されます。CSRを発行したチームメンバーと、チーム管理者に対して、それぞれiOS Developer Certificate が存在します。



Development Ceritificate をダウンロードしてインストールする

  1. Portal の‘Certificates’ > ’Distribution’において、コントロールキーを押しながら"WWDR Intermediate Certificate" リンクをクリックし、"Saved Linked File to Downloads" を選択し、証明書のダウンロードを開始します。
  2. ローカルマシンにおいて、WWDR Intermadiate certificateをダブルクリックしてキーチェンアクセスを起動し、インストールします。
  3. CSR受理によりチームメンバーとチーム管理者は Provisioning Portal の 'Certificates' セクションを通して、それぞれの証明書をダウンロードできます。証明書の横に記載されている 'Download' をクリックすることでローカルマシンに iOS Development Certificate がダウンロードされます。
  4. ローカルマシンにおいて、ダウンロードされた .cer ファイルをクリックしてキーチェンアクセスを起動し、証明書をインストールします。
  5. チームメンバーは自分自身の iOS Development Certificates をダウンロードできるだけです。チーム管理者はチームメンバーの公開 certificates をダウンロードする権限を有しています。AppleはCSRのプライベートキーを受け取ることは決してありません。プライベートキーはオリジナルのキーチェーンを生成してシステムキーチェーンに保存したチームメンバー以外の誰にも利用できません。




プライベートキーを保存し、他のシステムに転送する
複数のマシンで開発したい、あるいはシステムOSを再インストールする必要がある場合に、プライベートキーをどこか安全な場所に保管しておくことが非常に重要です。プライベートキーが無ければ、Xcode においてバイナリーにサインは出来ませんし、Appleのデバイスにおいてあなたのアプリケーションをテストすることも出来ません。CSRが生成されたとき、キーチェーンアクセスアプリケーションはログインキーチェーンにプライベートキーを生成します。このプライベートキーはあなたのアカウントと結合されておりOSの再インストールなどで失われた場合には再生セイすることが出来ません。もしも複数のシステムで開発を行うのであれば、開発用マシンの全てにプライベートキーをインポートする必要があります。
  1. プライベートキーと証明書を安全に保管し、複数のマシンで開発を可能にするには、キーチェーンアクセスアプリケーションを開き、「鍵」カテゴリを開きます。
  2. iOS Development Certificate に関連づけられているプライベートキーをコントロールキーを押しながらクリックし、そしてメニューの「アイテムをエキスポート」をクリックします。プライベートキーは iOS Developer : <First Name> <Last Name> の公開証明書とペアになって特定されています。 
  3. Personal Information Exchange (.p12) ファイルフォーマットでキーを保存します。
  4. このキーを他のコンピュータへインポートする際に使用するパスワードの入力を求められます。
  5. .p12ファイルはシステム間でやりとりできます。.p12をダブルクリックしてシステムにインストールできます。その際、ステップ4で指定したパスワードの入力を求められます。


Provisioning Portal の謎 ~ひとまず訳してみる 002~Certificate (証明書)

Certificate パートの "How To" タブには次の記述がある:

iOS Development Certificate (iOS 開発者証明書) の取得


iOS Provisioning Portal の 'Certificates' セクションでは、個々の iOS Development Certificates を取得要求できます。正当な証明書を使って署名されていない iOS アプリケーションをAppleのデバイスで動かすことはできません。テストの為にアプリケーションに署名を行う場合、チームメンバーは iOS Developer Certificate が必要です。

デジタル証明書(digital identity) は秘密の「プライベートキー」と、公開の「パブリックキー」から構成される電子的な身分証明書です。このプライベートキーによって、Xcode はあなたの iOS アプリケーションのバイナリーコードに署名を行えます。

あなたが要求しダウンロードするデジタル証明書は、上記の証明情報に加えて、あなたの名前、e-mailアドレス、職業と言った情報も含む電子的文書です。iOS Development Certificate はアプリケーション開発にのみ使用が制限されており、有効期限も設けられています。Apple 証明書の所有者は、有効期限が切れる前にそれを無効(invalidate/revoke)にすることができます。
証明書署名リクエストの生成





  • 「キーチェーンアクセス」->「証明書アシスタント」->「認証局に証明書を要求...」を選択します。注意:この作業中に、キーチェン内でハイライト表示された非対応プライベートキーがある場合、証明書リクエストの結果はProvisioning Portal から受け入れられません。「認証局に証明書を要求...」を選択していることを確認して下さい。「<プライベートキー>を使用して認証局に証明書を要求...」を選択しないよう注意して下さい。










  • ユーザーのメールアドレス欄にはあなたのe-mailアドレスを入力します。iOS Developer として登録した際に使用したのと同じアドレスを使って下さい。



  • 通称フィールドにはあなたの名前を入力します。これもまた、iOS Developer として登録したときと同じ名前を使用して下さい。



  • CAのメールアドレスは不要です。以降のステップを実施すると「必須」表示は削除されます。 



  • 「ディスクに保存」ラジオボタンを選択して、「鍵ペア情報を指定」にチェックを入れて、「続ける」をクリックします。







  • 「鍵ペア情報を指定」を選択した場合、ファイルを指定して「保存」ボタンをクリックします。階のスクリーンでキーサイズとして ‘2048 bits’ を選択し、アルゴリズムには ‘RSA’ を選択して、「続ける」をクリックします。





  • アシスタントはCSRファイルをデスクトップに生成してくれます。 






    1. 証明書署名リクエストを発行する





    2. この作業により、チーム管理者はe-mail により証明書リクエストの通知を受けます。





    3. チーム管理者によりCSRが受理もしくは拒絶された場合、あなたにe-mailにて証明書のステータス変更が通知されます。





      1. Provisioning Portal の謎 ~ひとまず訳してみる 001~ホーム画面

        全ての iOS デベロッパーにとって避けて通れない iOS Provisioning Portal。"provision" とは "…するための" とか "…に対する用意・準備" ということらしいということも今知ったくらいである。

        なにがなんでも一刻も早くアプリを開発・公開したい一心で、あんまりちゃんと読まずにこの Provisioning Portal を流してやりすごしてきたのだが、やはりちゃんと理解しなければということで、一通り日本語に訳して吟味することにした。

        今日はその第一回である。

        まず、iOS Provisioning Portal の Home 画面に書かれている説明を訳してみる。