サンドボックス対応
Xcode3では標準でサンドボックスに対応できないため、Xcode4に移行する。 チケット「#32730 開発環境をXcode4に移行」で対応する。
Mac Dev Centerにて下記の手続きを行う。
Xcodeにてプロジェクトの設定でサンドボックスを有効にする。
プロジェクトに追加された MIDITrail.entitlements を選択し、下記設定を追加する。 この設定により、MIDIサーバと Apple DLS Synth が利用できる。
com.apple.security.temporary-exception.mach-lookup.global-name com.apple.midiserver com.apple.midiserver.io com.apple.security.temporary-exception.audio-unit-host YES
参考ページ http://lists.apple.com/archives/coreaudio-api/2011/Oct/msg00091.html https://developer.apple.com/library/mac/qa/qa1483/_index.html
MIDITrail起動時に Apple DLS Synth を初期化する処理にて
MIDITrailApp::Initialize SMSequencer::Initialize SMOutDevCtrlEx::Initialize SMAppleDLSDevCtrl::_CreateAUGraph status = AUGraphOpen(auGraph);を実行する時点で、次の警告メッセージが表示される。
要求された Audio Unit を使用するには、"MIDITrail"のセキュリティ設定を下げる必要があります。 続けてもよろしいですか? [セキュリティ設定を下げる] [キャンセル]キャンセルを選択すると、AUGraphOpenの戻り値が-3000 (invalidComponentID)となってしまう。 セキュリティ設定を下げるを一度選択すると、以降はアプリを再起動しても警告メッセージは表示されなくなる。 (ただしアプリをビルドし直すと、再びメッセージが表示される) ユーザがキャンセルを選択した場合、アプリの初期化処理が途中でエラーとなるため、アプリが処理を続行できない。
警告メッセージが表示される問題は、現時点では回避策がないようだ。
Is kAudioUnitSubType_DLSSynth compatible with the Mac OS X App sandbox http://lists.apple.com/archives/coreaudio-api/2013/May/msg00025.html
SMAppleDLSDevCtrl::_CreateAUGraph にて、AUGraphOpenが失敗した場合は、 その時点でエラーメッセージを表示して正常終了する。 以降、SMAppleDLSDevCtrlの公開メソッドが呼び出されたときは、何もせずに正常終了する。
MIDITrail初期化処理のSMSequencer::Initialize呼び出し前に、 OS X 10.7 (Lion) 以降の場合は下記メッセージを表示する。
MIDITrail uses Apple DLS audio device. Therefore Mac may ask you to lower security settings to use it.次回起動時はメッセージを表示しない。 ただしMIDITrailのバージョンが変わったときは、再び1度だけメッセージを表示する。 この表示制御を実現するため、メッセージ表示メソッド MIDITrailApp::_DispSandboxInfo を新規追加する。
サンドボックスに対応するため、iCloudを有効にする必要がある。 下記の手順で有効にする。この作業は、Distributionプロファイル作成前に実施しておく必要がある。
Mac Dev Center Certificates, Identifiers & Profiles Identifiers / App IDs jp.sourceforge.users.yknk.MIDITrail を選択 Edit ボタンをクリック iCloud をチェックして保存
下記の手順で作成する。
Mac Dev Center Certificates, Identifiers & Profiles Provisioning Profiles / Distribution +ボタン Distribution / Mac App Store を選択 App ID: MIDITrail を選択 Certificates: Masashi Wada (Mac App Distribution) を選択 Profile Name: MIDITrail distribution を入力 MIDITrail_distribution.provisionprofile をダウンロード
Organizerにプロファイルを登録する。 LIBRARY / Provisioning Profiles の右ペインにダウンロードしたファイルをドロップする。
Mac App Store 登録時は、Code Signing Identity の設定は
Mac Developer: xxx (xxx)ではなく、
3rd Party Mac Developer Application: xxx (xxx)を選択する必要があった。 事前に Organizer へ Distribution プロファイルを登録しておく必要がある。
SourceForgeに登録する場合は、サンドボックスは無効とする。 プロジェクト設定の変更点は次の通り。
サンドボックスに対応する。 2012年6月以降、Mac App Storeにアプリを登録するには、サンドボックス対応が必須となっているため。 なおMIDITrail Ver.1.2.0は、サンドボックス対応が必須になる前にMac App Storeへ登録した。(2012年2月)