Start Developing iOS Apps Today(sup.11)〜App Storeに提出するための準備

2013. 01. 11
貴方のほとんどの時間はコーディング作業に費やされますが、App Store向けに開発するためには、アプリが実行されている期間にXcodeや他のツールを使用して多くの管理作業を実行する必要があります。
App Storeは精選された店で、販売されるアプリは制限を受けます。
Appleはユーザに最高の体験を提供するために、これを行っています。
例えば、App Storeで販売されるアプリはクラッシュや重大なバグを発生させてはいけません。

administration_tasks_2x.png

Appleは開発やテスト、そしてApp Storeにアプリを提出するために必要なツールを提供しています。
デバイス上でアプリを実行するにはデバイスを開発用にプロビジョニングし、その後テスト用にプロビジョニングする必要があります。
またApp Storeが顧客に表示するために貴方のアプリの情報を提供し、スクリーンショットをアップロードする必要があります。
次に承認を受けるためにAppleへアプリを提出します。
アプリが承認されたら、アプリをApp Storeで販売するために表示される日付を設定します。
最後にアプリの売上やカスタマレビュー、そしてクラッシュレポートを監視するためにAppleのツールを使用します。
その後アプリの更新を提出するには、再度全体の行程を繰り返します。

iCloudストレージやIn-App Purchaseなどの特定の技術を使用する場合は、追加の構成と管理作業を行う必要があります。
また開発チームを管理するために行う作業もあります。



●iOS Developer Programへの登録

App Store向けの開発では、最初にiOS Developer Proguramに参加する必要があります。
プログラムに登録した後は、アカウントの管理やデバイス上でアプリの実行を開始するために必要な、全てのリソースやツールへのアクセス権を持ちます。

貴方はAppleとの主要な連絡先となり、法律上の契約書に署名し、アセットを作成し、アプリの販売を行います。
貴方が個人開発者か企業か尋ねられます。
企業の場合、貴方のチームに他の人を追加し、貴方のアカウントを管理するためにいくつかの権限を付与します。
開発中にデバイス上でアプリを実行する必要がある個人も、貴方のチームに追加する必要があります。

貴方は以下のiOS Developer Programのウェブツールを使用して、アカウントを管理します。

  • メンバーセンター
    開発者プログラムのアカウントの管理や、チームメンバーの招待、技術サポートの購入、互換性ラボへのサインアップに使用する主要なツールです。
    またメンバーセンターは、他のリソースやツールへの入口です。

  • iOSプロビジョニングポータル
    アプリケーションIDの登録や、デバイスの登録、署名証明書の作成、プロビジョニングプロファイルの作成に使用するウェブツールです。
    これらの行程はセキュリティに必須なもので、未熟なアプリが配布されないよう保証するものです。

  • iTunes Connect
    契約状態の確認や、税や銀行情報の設定、販売や財務報告書の取得、アプリに関するメタデータの管理に使用するマーケティング/ビジネスツールです。

Xcodeを使用してiOSプロビジョニングポータルの管理作業の一部を実行し、http://developer.apple.com/membercenterにあるメンバーセンターに行くことによって必要に応じてウェブツールに戻ることができます。

1_membercenter_2x.png



●プロジェクトの生成とApp Store用への構成

テンプレートからXcodeのプロジェクトを生成した場合、App Storeの設定のいくつかは貴方のために完了しています。
Xcodeは貴方に製品名と会社IDを入力するように求めます。
バンドルIDはこの2つの属性に由来します。
例えばHelloWorldプロジェクトでは、製品名がHelloWorldで会社IDはedu.selfです。
したがってデフォルトのバンドルIDは、edu.self.HelloWorldになります。
Xcodeは他の値にも同様に合理的なデフォルト値を使用します。
アプリの生成に使用するテンプレートと、プロジェクトの構成に使用する設定は慎重に検討する必要があり、正しいテンプレートで開始することは開発工程の高速化に役立ちます。

これらの設定を後から変更したい、あるいはiCloudストレージをしたい場合は、XcodeのTARGETSのSummaryペインで(エンタイトルメントの有効化を含む)これらの設定のほとんどを見つけることができます。
例えば検証試験に合格するためには、Summaryペインの『iPhone / iPod Deployment Info』下に表示されている、アプリアイコンや起動画像を設定する必要があります。
これらの画像はApp Storeで貴方のアプリを表すために使用されます。

2_configureapp_2x.png



●開発用デバイスのプロビジョニング

開発中にデバイス上で貴方のアプリを実行するには、貴方のMacに接続し、開発用に有効にし、Appleによって認定される必要があります。
これにはアプリや貴方自身、そしてデバイスに関するいくつかの情報を提供して行います。
貴方は自身を識別するための開発用証明書と呼ばれる署名証明書を作成します。
この情報は全て開発用プロビジョニングプロファイルに組み込まれ、最終的にデバイスにインストールされてアプリを起動することができます。

貴方はXcodeが作成するiOSチームプロビジョニングプロファイルとデフォルトのアプリケーションIDを使用して、開発用にプロビジョニングしたデバイスをXcodeのデバイスオーガナイザで使用することができます。
(ただしiCloudストレージやプッシュ通知、In-App Purchase、またはGame Centerを使用する場合、特別なプロビジョニングプロファイルを作成する必要があります。)

初めてデバイスオーガナイザでプロビジョニングプロファイルを更新すると、Xcodeは署名証明書を作成します。
Xcodeは貴方に代わって開発用と配布用の両方の証明書を作成します。
(配布証明書は、後にテストやApp Storeにアプリを提出するために必要となります。)

iOSチームプロビジョニングプロファイルを使用すると、すぐにデバイス上でアプリの実行を開始することができます。
初めて貴方のアカウントにデバイスを追加すると、XcodeはデフォルトのアプリケーションIDを使用してiOSチームプロビジョニングプロファイル、デバイスID、そして開発用証明書を作成します。
iOSチームプロビジョニングプロファイルにデバイスを追加するには、単に貴方のMacにデバイスを接続し『Use for Development』ボタンをクリックしてください。
その後、Xcodeは貴方のMacに接続されているデバイスに、このプロファイルを自動的にインストールします。
またXcodeは新しいデバイスが開発用にプロビジョニングされた場合に、このプロビジョニングプロファイルを更新します。

6_registerdevice_before_2x_20130109164310.png

アプリをビルドする際、貴方が使用したいプロビジョニングプロファイル内に含まれている署名証明書を使用して、コードに署名します。
Xcodeのプロジェクトエディタで、iOS チームプロビジョニングプロファイルに含まれている開発用証明書にCode Signing Identityを設定するには、Build SettingsのCode Signing Identityポップアップメニューを使用します。

9_codesigningidentitymenu.png

開発用デバイスをプロビジョニングした後、Xcodeにデバイス上でアプリを起動するように命じることができます。
アプリをビルドする前に、Schemeポップアップメニューで実行先の設定を変更することによって、これを行います。
貴方のMacに有効なプロビジョニングプロファイルを組み込んだデバイスが接続されている場合、Schemeポップアップメニューの実行先のオプションとして、その名前とiOSのバージョンが表示されます。
Schemeエディタを開くには、Product > Edit Scheme...を選択します。

10_destinationmenu_2x.png



●多くのデバイスやiOSバージョン上でのアプリのテスト

貴方は様々なデバイスやiOSバージョン上でアプリのテストを行う、綿密な計画を立てる必要があります。
シミュレータや開発用にプロビジョニングされたデバイスを使用してのアプリのテストでは十分ではありません。
シミュレータではデバイス上で実行される全てのスレッドは実行されず、Xcodeを使用したデバイス上でのアプリの起動ではいくつかのウォッチドッグタイマーが無効になります。
最低でも貴方が利用できる全てのデバイス上でアプリをテストする必要があります。
理想的には貴方がサポートする予定の全てのデバイスとiOSバージョンでアプリをテストします。

これを行うには、アドホックプロビジョニングプロファイルと呼ばれる特殊な配布用プロビジョニングプロファイルを生成し、アプリと一緒にテスターに送信します。
アドホックプロビジョニングプロファイルは、テスターを貴方のチームに追加したり、署名証明書を作成したり、あるいはアプリの実行にXcodeの使用を必要としません。
アプリのテスターは単にアプリを起動するため、デバイスにアプリとアドホックプロビジョニングプロファイルをインストールするだけです。
その後、問題を解決するためにこれらのテスターからクラッシュレポートやログを収集し分析することができます。

最初にテスターから全てのデバイスIDを収集し、iOSプロビジョニングポータルに追加します。
テスターはiTunesを使用してデバイスIDを取得することができます。
iOSプロビジョニングポータルを使用して、貴方のアプリケーションIDとこれらのデバイスIDを含むアドホックプロビジョニングプロファイルを作成します。

11_createadhoc.png

アプリをテストする準備ができたら、Xcodeを使用してアーカイブを作成し、iOS App Store Package(拡張子.ipaを持つファイル)を生成します。
Archivesオーガナイザでアーカイブを選択してDistributeボタンをクリックし、パッケージを作成するために『Save for Enterprise or Ad-Hoc Deployment』オプションをクリックします。
パッケージを作成する際は、開発用証明書を使用してアーカイブに署名します。
その後、iOSプロビジョニングポータルからアドホックプロビジョニングプロファイルをダウンロードし、IPAファイルと一緒にテスターに与えます。

12_createpackage.png

テスターはiTunesを使用して、彼らのデバイス上にプロビジョニングプロファイルとアプリをインストールします。
デバイス上でアプリがクラッシュした場合、iOSはイベントの記録を作成します。
テスターが次回iTunesにデバイスを接続した時に、iTunesはテスターのMacに(クラッシュログとして知られる)それらの記録をダウンロードします。
テスターは貴方にこれらのクラッシュログを送信する必要があります。



●iTunes Connectでのアプリデータの設定

App Storeでアプリを販売する場合、アプリの名前や説明、アイコン、スクリーンショット、貴方の会社の連絡先情報など、アプリに関する多くの情報が提示されます。
これらの情報を提供するには、iTunes Connectにログインしアプリのレコードを作成し、いくつかのフォームを記入します。
iTunes ConnectのレコードにはバンドルIDのためのフィールドが含まれており、このフィールドに置く値は貴方のアプリのバンドルIDと正確に一致する必要があります。
アプリ名とバージョンもXcodeのプロジェクト設定と一致している必要があります。
App Storeで貴方のアプリを顧客に提示するために必要なアートワークは、検証テストに合格するためにアップロードする必要があります。
アプリのレコードの状態は、少なくともApp Storeにアプリを提出する『Waiting for Upload』にする必要があります。

13_itunesconnectrecord.png

通常レコードを作成する時からアプリを提出する時まで時間制限があるので、開発工程の後半にiTunes Connectのアプリのレコードを作成します。
ただし、Game CenterやIn-App Purchaseを含むいくつかのAppleの技術は、早期にiTunes Connectのレコードを作成する必要があります。
例えばIn-App Purchaseでは、貴方が販売したいアイテムの詳細を追加できるように、アプリのレコードを作成する必要があります。
この内容はIn-App Purchaseを実装するために追加されたコードのテストに使用できるように、開発工程が完了する前に作成する必要があります。



●App Storeでのアプリの配布

App Storeにアプリを提出するには、いくつかのツールを伴う多段階の工程があります。
最初にiTunes Connectにログインし、アプリのレコードの状態を『Waiting for Upload』またはそれ以降に変更します。
その後、iOSプロビジョニングポータルを使用して、配布用証明書と配布用プロビジョニングプロファイルを作成します。
Xcodeを使用してアーカイブを作成し、検証し、App Storeへ提出します。
アプリが承認された場合、iTunes Connectを使用して顧客がアプリを利用できるになる日付を設定します。

アプリを公開する準備ができたら、配布の方法としてApp Storeを選択することによって、配布用プロビジョニングプロファイルを作成します。
このプロビジョニングプロファイルの種類の場合、署名証明書やデバイスIDは不要で、アプリケーションIDのみを選択してください。

15_createdistributionprofile.png

アプリの検証と提出にはXcodeのArchivesオーガナイザを使用します。
最初にアーカイブを作成し、配布用証明書で署名します。
次にiTrunes Connectのレコードで提供されている情報だけでなく、アーカイブ内のアプリに対して自動検査を実行し、アーカイブを検証します。
検証中に問題が発見された場合は、続行する前に修正する必要があります。

アプリを提出する前に、問題を回避するために『App Store Review Guidelines』を読む必要があります。
Distributeボタンをクリックし『Submit to the iOS App Store』オプションをチェックすると、アプリのガイドラインに準拠しているかどうかを検査するため、XcodeはAppleにアーカイブを送信します。
アプリが拒否された場合、アプリの承認中に発生した問題を修正し、再提出します。

iTunes Connectを使用して、App Storeにアプリを公開する日付を設定します。
例えば、承認された直後にApp Storeにアプリを公開する日付にしたり、あるいはそれ以降の将来の日付を選択することができます。
公開日を遅らせることで、アプリの立ち上げに伴う他のマーケティング活動の準備をすることができます。



●ユーザの問題への対応

App Storeへアプリを提出するだけで、それを忘れてはいけません。
貴方はアプリのレコードを管理し、アプリが存続している期間を通して保守する必要があります。
一度App Storeで利用できるようになったら、貴方はアプリを監視する必要があり、ユーザの問題に対応し、必要に応じてアップデートを行います。

貴方はユーザがどのようにアプリを認識しているかに注意を払ってください。
App Storeの顧客の評価とレビューはアプリの成功に大きな影響を持っているため、ユーザが問題に遭遇した場合、素早く作業してバグを特定し、承認工程を通じてアプリの新バージョンを提出してください。

iTunes Connectはアプリの売上と財務報告書、顧客レビュー、ユーザがAppleに提出したクラッシュログを含む、どのように成功させるか判断するのに役立つデータを提供します。
クラッシュログは、ユーザがアプリで遭遇している重大な問題を表しているため、特に重要です。
貴方はこれらの報告を高い優先順位で調査する必要があります。

低メモリによるクラッシュログを除き、全てのクラッシュログには終了時の各スレッドのスタックトレースが含まれています。
クラッシュログを表示するには、XcodeのOrganizerウィンドウから開く必要があります。
貴方のMacがクラッシュログが生成されたアプリのバージョンに対応するアーカイブを持っていると、Xcodeは自動的にクラッシュログのアドレスとアプリ内の実際のクラスや関数を対応付けします。



●iCloudストレージまたはIn-App Purchase用のデバイスのプロビジョニング

特定の技術を使用する場合、明示的にアプリケーションIDを使用して特殊なプロビジョニングプロファイルを作成し、それに応じたアプリを構成する必要があります。
AppleはiOSやApp Store、そしてAppleのサーバなどでこれらの技術を使用するアプリを独自に識別するために、このアプリケーションIDを使用します。
これらのプロビジョニングプロファイルを必要とする技術は以下の通りです。

  • iCloudストレージ
    異なるiOSやMac OS Xデバイス上で実行されているアプリの複数のインスタンス間で、ユーザのデータを共有することができます。

  • プッシュ通知
    フォアグラウンドで実行されていないアプリが持つユーザのための情報を、ユーザに通知することができます。

  • In-App Purchase
    アプリ内に直接ストアを埋め込むことによってApp Storeに接続できるようにし、ユーザからの支払いを安全に処理します。

  • Game Center
    プレイヤがプレイしているゲームについての情報を共有し、マルチプレイヤマッチで他のプレイヤが参加することができるソーシャルゲームサービスです。

開発用プロビジョニングプロファイルは、署名証明書のリストとアプリケーションID、そしてデバイスIDのリストを含んでいます。
以前に開発用のデバイスをプロビジョニングするためにiOSチームプロビジョニングプロファイルを使用した場合、署名証明書とデバイスIDは貴方のアカウントで既に登録されています。
Xcodeによって提供されるアプリケーションIDは、全てのバンドルIDと一致するワイルドカードIDです。
貴方はアプリのバンドルIDと正確に一致するアプリケーションIDを作成し、開発用プロビジョニングプロファイル内のワイルドカードのアプリケーションIDの代わりに使用する必要があります。
iCloudストレージまたはプッシュ通知を使用する場合、アプリケーションIDはそれらの技術の使用を有効にする必要があります。

貴方はアプリケーションIDの登録や開発用プロビジョニングプロファイルの作成に、iOSプロビジョニングポータルを使用します。
明示的なアプリケーションIDは正確に貴方のバンドルIDと一致します。

14_register_appid.png

明示的なアプリケーションIDを作成する場合、In-App PurchaseとGame Centerはデフォルトで有効になっています。
プッシュ通知またはiCloudストレージを有効にしたい場合は、App IDsページでアプリケーションIDの次にあるConfigureをクリックし、適切なオプションを選択します。
特殊なプロビジョニングプロファイルでアプリケーションIDを使用する前に、これらの技術を有効にする必要があります。

17_enableicloud.png

開発用プロビジョニングプロファイルを作成する場合、明示的にアプリケーションIDと署名証明書、そして使用するデバイスIDを選択します。
プロビジョニングプロファイルの状態がPendingからActiveに変わると、Xcodeのプロビジョニングプロファイルが更新され、アプリの署名に新しいプロファイルが使用されます。
同様にテスト用のアドホックプロビジョニングプロファイルと、明示的なアプリケーションIDを使用して提出するための配布用プロビジョニングプロファイルを作成します。

iCloudストレージを使用する場合、XcodeでTARGETSのSummaryペインのEntitlements下にあるエンタイトルメントを有効にし、iCloudを構成してください。



参考文献

Apple/Start Developing iOS Apps Today

Apple/Prepare for App Store Submission

0 CommentsPosted in 資料





SoundSport Pulse wireless headphones
0 Comments
Leave a comment
管理者にだけ表示を許可する
Top
0 Trackbacks
Top
Calendar
04 | 2017/05 | 06
Sun Mon Tue Wed Thu Fri Sat
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

SoundSport Pulse wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR