ネイティブのiOSアプリをリリースするのと同じ方法で、NativeScriptアプリをApp Storeで公開できます。
バンドルIDは、アプリ用に提供された一意の識別子で、逆ドメイン名表記を使用します。 たとえば、NativeScript CLIはorg.nativescript.<AppName>をデフォルトとして使用します。 tnsの作成中に、-appid <id>オプションを使用してバンドルIDを提供できます。
iOSアプリでは、バンドルIDはInfo.plistのCFBundleIdentifierに保存されますが、 NativeScript CLIはこれをアプリケーションのルートのpackage.jsonファイルに保存されたnativescript.idキーの値に明示的に設定します。
バンドルIDは、さまざまな状況でアプリを正確に識別するために使用され、CLIでビルドおよび起動されたとき、およびAppleメンバーセンターでプロビジョニングプロファイルと証明書が作成されたときに重要な役割を果たします。
詳細については、こちらのドキュメント内のセクション「バンドルIDについて(About Bundle IDs)」をご覧ください。
これはアプリの表示名です。純粋に化粧品ですが、非常に重要です。たとえば、アプリアイコンの下に表示されます。 値はapp/App_Resources/iOS/Info.plistファイルにCFBundleDisplayNameキーとして保存されます。
NativeScriptフレームワークは、app/App_Resources/iOS/のアイコンを使用します。 そのフォルダーのすべてのファイルは、platforms/iosで生成されたXcodeプロジェクトのリソースとして追加されます。
適切なアイコンファイルが存在しない場合、App Storeの提出は拒否されます。 必要なアイコンがあることを確認するには、Appleの記事「iPadおよびiPhoneのアプリアイコン」を参照してください。
デフォルトのアイコンセットを拡張する場合で、デフォルトの名前を使用したくない場合、またはより細かな制御が必要な場合は、app/App_Resources/iOS/Info.plistを使用できます。 CFBundleIconFiles または CFBundleIcon を使用してアイコンをリストします。
たとえば、CFBundleIconFiles を使用してアイコンを一覧表示する場合:
例1:Info.plistをカスタマイズする方法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<!-- The full content of the Info.plist still should be here. -->
<key>CFBundleIconFiles</key>
<array>
<string>Icon@2x.png</string>
<string>Icon.png</string>
<string>Icon-Small@3x.png</string>
<string>Icon-Small@2x.png</string>
<string>Icon-Small.png</string>
<string>Icon-Small-50@2x.png</string>
<!-- etc -->
</array>
</dict>
</plist>
起動画面は、iOSアプリの重要な部分です。これは、ユーザーがアプリを起動したときに最初に表示されるものです。
Springboardは、ホーム画面からアプリに移行する巧みなアニメーションを再生します。快適なエクスペリエンスを提供するために、完全に黒または白のデフォルトを避けることが最善です。
launchファイルはスプラッシュスクリーンではありません。代わりに、OSがアプリのプレビューイメージをすばやく取得し、アプリの起動中の最初の300ミリ秒以内にそれを使用する方法です。
デザインガイドラインについては、Appleが提供する記事を参照してください。
適切な起動ファイルが存在しない場合、App Storeの提出は拒否されます。 新しいiOSバージョンとデバイスがリリースされたら、起動ファイルを更新し、今後のフォームファクターに対応するようにしてください。
ユーザーが高解像度画面を備えたデバイスでアプリを実行し、そのデバイスの起動画面ファイルがアプリにない場合、iOSはより低い解像度を使用してアプリをレンダリングし、品質を低下させます。
以前のiOSバージョンでは、狭い範囲のフォームファクターのみサポートする必要がありました。 画面サイズごとに異なる起動画像を提供するのは簡単でした。 Appleがリリースした新しいデバイスでは、提供する必要がある画像の数が増えました。 そこでAppleが起動画面のストーリーボード(launch screen storyboard)を導入しました。 ストーリーボードを使用すると、画像などの基本的なプリミティブを画面に表示でき、レイアウト制約を使用して動的なレイアウトを作成できます。 これにより、すべてのフォームファクターに適した単一の起動画面を設計できます。
NativeScriptフレームワークのデフォルトプロジェクトには、Launch Screen StoryboardとLaunch Imagesがあります。 StoryboardはiOS8以降で使用することができます。それ以前のiOSバージョンを実行するデバイスではLaunch Imagesを使用することができます。
Launch screen images
既に説明したアイコンと同様に、画像はapp/App_Resources/iOSに配置されます。 デフォルトのプロジェクトテンプレートには、いくつかのDefault-*.PNGファイルが付属しています。 それらを変更することを検討してください。
iOS8以降のバージョンでは、アプリにストーリーボードが表示されます。 すべてのデバイスで画像を使用する場合は、スクリーンストーリーボードの起動を無効にすることができます。これを行う方法については、次のセクションで説明します。
アイコンと同様に、app/App_Resources/iOS内でUILaunchImageFileと UILaunchImagesキーを使用できます。
Launch Screen Storyboard
NativeScriptフレームワークは、platform/ios/<YourAppName>/en.lproj/LaunchScreen.xibにLaunch Screen Storyboardを提供しますが、 app/App_Resources/iOSに保存する手段をまだ提供していません。 編集する場合は、platforms/iosで生成された.xcodeprojを使用できます。 これはソース管理に追加する必要があります。CLIの再構築により上書きされる可能性があるため、コミットするときにCLIの自動変更に注意する必要があります。
デフォルトのスクリーンストーリーボードの起動を無効にするには、app/App_Resources/iOS/Info.plistのUILaunchStoryboardNameを削除します。
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
これにより、サポートされているすべての起動画面で強制的に起動イメージが使用されます。
証明書、識別子、およびプロファイルは https://developer.apple.com/membercenter で管理されます。
Appleが証明書とIDについて提供する情報を実際に調べてください。 この記事では、基本のみを説明しています。
Apple Developer Member Center にアクセスするには、Apple IDを持つ開発者アカウントが必要です。
組織のiOS開発者として追加する必要があります。
開発証明書は、iOSアプリに署名しアプリの発行元を証明するために使用されます。Xcodeツールを使用する場合は、開発証明書を作成することをお勧めします。
いくつかの落とし穴は次のとおりです。
製品証明書は、開発証明書と同様に機能します。それらは公開鍵と秘密鍵で構成されます。秘密鍵はあなたの側に残り、Appleに送信されることはありません。 アプリは秘密鍵を使用して配布証明書で署名されるため、Appleは送信した公開鍵を使用してApp Store Connectで送信元を確認できます。
この製品証明書は、提出の準備ができたときにアプリケーションバイナリに署名するために使用されます。通常、デバイス用にアプリが構築されると、そのIPAファイルは開発証明書で署名されます。
いくつかの落とし穴は次のとおりです。
新しい配布証明書が必要な場合は、https://developer.apple.com/account/ios/certificate/certificateList.action?type=distribution にアクセスして [+](追加)ボタンをクリックし、指示に従って「App Store Distribution」証明書を新規作成します。 大規模な組織の一員であり、新しい配布証明書を作成するための十分な権限がない役割のケースは、管理者または他のチームメンバーが証明書を提供する場合があります。 このような場合、おそらく.p12ファイルとパスワードが与えられます。Keychain Accessアプリケーションを使用して、キーチェーンにファイルをインポートする必要があります。
デバイスでアプリをテストしたり、App Storeで送信するには、App IDを作成する必要があります。 App IDは、Appleによって生成されたプレフィックスまたはTeam IDで構成され、その後にBundle IDと一致する必要のある、提供されたIDが続きます。 たとえば、すべてのNativeScriptアプリに一致するorg.nativescript.*IDでApp IDを作成できます。 ワイルドカードパターンは、使用できるサービスにいくつかの制限を課します。 そのため、org.nativescript.<my-app>などの非ワイルドカードパターンの使用を検討することもできます。
これらの識別子は、後でアプリをプロビジョニングプロファイルにバインドするために使用されます。
メンバーセンターでは、あなたとあなたのチームがテストに使用するデバイスを登録できます。 https://developer.apple.com/account/ios/device/deviceList.actionにアクセスします。
電話(iPhone)を登録するには、UDIDが必要です。Macに接続し、ターミナルで実行します。
すべての既知のデバイスとそのUDIDを出力します。
開発プロビジョニングプロファイルは、1つまたは複数の開発者署名ID(開発者証明書)、アプリID、およびデバイスIDをバインドします。 これらはhttps://developer.apple.com/account/ios/profile/profileList.action?type=limitedで作成します。 新しいアプリを作成する場合、または既存のアプリに新しいアプリを追加する場合は、次の3つを用意してください。
証明書とは異なり、プロビジョニングプロファイルはメンバーセンター(.mobileprovisionファイル内)から簡単に更新およびダウンロードでき、そのファイルをダブルクリックすることでXcodeにインストールできるファイルです。
Xcodeはこれらを自動的に取得することもできます。
Xcodeを開き、メニューからに進みます Xcode > Preferences... > Accounts > (select your apple ID) > (select your Team Name) > View Details...
ここで、Xcodeで使用可能なすべての署名ID(開発証明書と製品証明書)を確認したり、すべてのプロビジョニングプロファイルをダウンロードしたりできます。
デバイスでアプリを実行すると、Xcodeは開発証明書でアプリに署名し、証明書、デバイスID、アプリIDを含むプロビジョニングプロファイルを追加します。
開発プロビジョニングプロファイルは簡単に作成および更新できますが、特に複数の開発者証明書が関係する場合は、頻繁に無効になります。 それらのいずれかが取り消されるか有効期限が切れるたびに、プロビジョニング証明書を更新する必要があります。
これらはApp Storeへの提出には特に影響がありませんが、実際のデバイスでテストする場合は考慮する必要があります。
いくつかの配布プロビジョニングプロファイルタイプがあります。 App Storeへの提出に必要なものは、「App Store Distribution Provisioning Profile」です。 これらは、以下をバインドするため、開発プロビジョニングプロファイルに似ています。
配布プロビジョニングプロファイルはhttps://developer.apple.com/account/ios/profile/profileList.action?type=productionで作成されます。
App Storeに提出するには、Appストア配布プロビジョニングプロファイル(App Store Distribution Provisioning Profile) を作成する必要があります。 作成したら、ダウンロードしてMacでダブルクリックすると、Xcodeに登録されます。
配布プロビジョニングプロファイルは、単一の配布証明書を参照するため、めったに無効になりません。
Apple Developer Member Center でプロビジョニングプロファイルと証明書を管理している間、 アプリはApp Store Connect (旧iTunes Connect)で登録および送信できます。 ここで、新しいアプリの作成、アプリの画面、説明の準備、アプリのバージョンの管理などを行うことができます。
Apple IDを、https://appstoreconnect.apple.comで十分な権限を持つ組織に追加する必要があります。
iOS App Store でアプリを公開するには、アプリを登録する必要があります。 https://appstoreconnect.apple.comにログインし、「マイアプリ」に移動します。 ステータスを確認して、既存のアプリを編集したり、新しいアプリを作成したりできます。
左上隅にある「+」ボタンをクリックします。[新しいアプリ]ダイアログが表示されます。そこで、アプリ公開のためのApp Store名と主言語を指定する必要があります。
また、バンドルIDを設定する必要があります。 これは、1.1.バンドルID で参照されているバンドルIDと一致する必要があります。 ドロップダウンに適切な一致する項目が含まれていない場合、2.4.識別子-アプリIDに記述されているアプリIDが無い可能性があります 。 ワイルドカードアプリIDがある場合、それは潜在的な一致であるため、それを選択します。 サフィックスを入力して、テキストボックスのワイルドカードを置き換えることができます。
その時点で、アプリ情報を入力する必要があります。スクリーンショット、アイコン、説明など、提供する必要のあるさまざまな情報があります。 必要な情報をすべて提供しないと、アプリを送信できなかったり、アプリが拒否されたりする可能性があります。
アプリ情報の登録をhttps://appstoreconnect.apple.comで行ったら、iOS用のNativeScriptアプリをビルドして送信します。
App Store Connectにアプリを送信するには、主に2つの方法があります。Xcodeを使用するか、Application Loaderを使用します。
ビルドのバージョン管理
プロジェクトでバンドルIDを設定する方法、起動画面(またはストーリーボード)と画像をアプリに追加する方法、表示名を設定する方法については既に説明しました。
ビルドの前に、2つの重要なものを設定する必要があります。Bundle Short Version String と Bundle Version String です。
Bundle Short Version Stringは、アプリのパブリックバージョンです。 リリース間で増分されます。例:2.1。 Bundle Version Stringは、内部ビルド番号です。通常、1つの公開リリースには複数のリリース候補があります。例:2.1.1、2.1.2など
App Store Connectには、同じバージョンでバンドルを2回アップロードできないという制限があるため、アップロードするたびにBundle Version Stringを増やす必要があります。
Bundle Short Version Stringは、アプリのバージョンがアップロードされ、承認のために送信され、承認されて公開されたらインクリメントする必要があります。
両方の値はapp/App_Resources/iOS/Info.plistに保存されます。
app/App_Resources/iOS/Info.plist内では以下のように表示されます。
<key>CFBundleShortVersionString</key>
<string>2.1</string>
<key>CFBundleVersion</key>
<string>2.1.2</string>
コマンドラインからこれらを編集する必要がある場合、Plistファイルを読み書きできるPlistBuddyと呼ばれる便利なツールがあります。 たとえば、次のシェルスクリプトは、Jenkinsで$BUILD_NUMBERをInfo.plistのCFBundleVersionに追加します。
NativeScript CLIから送信する
CLIを使用して、NativeScriptプロジェクト内で次のコマンドを実行できます。
このコマンドは、App Store Connectで認証するためのApple IDとパスワードの入力を求め、リリースビルドを生成して、App Store Connectにアップロードします。
または、次のコマンドを実行して既存のビルドを使用できます。
詳細については、次のコマンドを実行してください。
Xcodeから送信する
CLIを使用して次のコマンドを実行できます。
これにより、platforms/ios/にXcodeプロジェクトが作成されます。 次に、配布用にプロジェクトを構成する方法に関する次のApple記事を参照してください。
このplatformフォルダーはソース管理にとどまることを意図したものではないため、そこで変更を行う場合は注意が必要です。 再構築により変更が消去される場合があるため、変更されたファイルをソース管理に追加する必要があります。
CocoaPodsを使用している場合の一般的な落とし穴は、ワークスペースではなくXcodeプロジェクトを開くことです。そのため、必ずワークスペースを開いてください。
Xcodeで開いたら、ターゲットの一般設定に移動してチームを選択する必要があります。「ビルド設定(Build Settings)」には、適切な「iOS開発者(iOS Developper)」と「コード署名ID(Code Signing Identity)」が必要です。
上部のドロップダウンからターゲットを選択し、デバイスとエミュレーターから「Generic iOS Device」を選択します。
すると、トップメニューから Product > Archive
が選択できるようになります。
これにより、xcodearchiveが作成され、Xcode Organizerで開かれます。 Xcode Organizerは、アプリのビルドを含むリストを表示します。 最後のビルドを選択して、App Storeにアップロード(Upload to App Store....)をクリックします。 もう一度チームを選択し、アプリにアプリシンボルを含めるかどうかを選択する必要があります。 次に、バイナリ情報、資格などのリストが表示されたら、アップロード(Upload)をクリックします。
アップロードに成功すると、https://appstoreconnect.apple.com にログインして、「アクティビティ(Activities)」でビルドを確認できるはずです。 そこから、Test Flightベータテストを有効にするか、承認のために送信できます。
提出の自動化
自動化は、NativeScript CLIを使用してのみ実現できます。公開に必要なすべてのパラメーターは、publishコマンドに直接渡すことができます。
たとえば、識別子 d5d40f61-b303-4fc8-aea3-fbb229a8171c のモバイルプロビジョニングを使用してビルドを発行する場合、次のように実行します。
ビルドがコード署名ID(Code Sign Identity)を自動的に検出できるようにするために、コード署名IDをiPhone Distribution のような一般的なものに設定できることに注意してください。
すでにビルドされたパッケージのアップロードを自動化することもできます:
提出プロセスの自動化を可能にするいくつかのツール - MITライセンス供与済み:fastlane があります。 また、前述のApplication LoaderのパッケージにはiTMSTransporterと呼ばれるコマンドラインツールがあり、 これを使用して独自のシェルスクリプトをハッキングすることができます。
App Store Connectでビルドを正常に送信したら、Test Flightを使用してテストを有効にできます。 準備ができたら、iOSアプリの[ビルド(Build)]セクションに移動し、ビルドを選択して、そのバージョンの[レビュー用に送信(Submit for Review)]をクリックします。 アプリは複数のアプリステータスを通過します。アプリがAppleのレビューに合格すると、App Storeで公開されます。