ログイン時に開く
現在、いわゆる「ログイン時に開く」を実装したアプリをApp Storeに申請中です。承認されるか、却下されるかわからないのですが、備忘録を残しておきたいと思います。
私がXcode 4.5で試した方法なので、それ以外ではOrganizerのValidateで却下されたり、うまくOrganaizerでSubmitできても、iTunes ConnectでInvalid Binaryと表示されるかもしれません。
SMLoginItemsSetEnabled関数を使う
StartAtLoginControlerを使う
Alex Zielenski氏の「StartAtLoginController」を使わせていただきました。
ログイン項目に表示されない
SMLoginItemsSetEnabled関数を呼んでも、システム環境設定の「ユーザとグループ」にある、各ユーザのログイン項目に追加されませんでした。最初、関数の呼び出しに失敗したのかと思ったのですが、きちんとログイン時にアプリが開くため、バグではないと思うのですが。
他にやったこと
- ヘルパーアプリ
- MainMenu.xibからメインウィンドウを削除。
- Info.plistのApplication is background onlyをYES。
- ヘルパーアプリのBuild SettingsにあるSkip InstallをYES。
- メインアプリ
- アプリの環境設定で、「ログイン時に開く」を有効にした時、確認アラートを表示させ、可否を問う。
- ヘルパーアプリをContent/Library/LoginItemsにコピーする為、メインアプリのBuild PhaseにCopy FIleを追加。DestinationはWrapperで。
- ヘルパーアプリのembedded.provisionprofileを削除しないとOrganaizerのValidateが失敗するため、Build PhaseにRun Scriptを追加。
rm "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Library/LoginItems/${PRODUCT_NAME}Helper.app/Contents/embedded.provisionprofile"
- 両アプリ
- Provisioning Profilesで作成し、インストール。
- ヘルパーもEnable App Sandboxingを有効にする。
参考にしたサイト
余談
他に書き忘れていることはないかなぁ...