2011/01/05

iPhone アプリ申請時に気をつけるべきこと

丸一日かかってiPhoneアプリ申請が完了。
現在、申請したアプリはWating For Review 状態。
今回はiPhoneアプリを申請する際につまづいたエラーなどをまとめていきます。


*証明書取得の際のsubmitができない
まず実機で動作確認するためにprovisioning profileを取得し
iOS Provisioning Portalで証明書を発行しようとしたが、
ファイルを選択→submitしても画面がかわらず失敗。
『Create iOS Development Certificate can't submit』などと検索して
Generate /Submit a CSR - iPhone Dev SDK Forum見つけました。

解決法:
ブラウザをchromeからsafariに変えたらすんなりsubmitできた。これだけ。
provisioning取得で参考にしたページ:第9回デバイスでアプリを動かす:目指せ!iPhoneアプリ開発エキスパートgihyou.jp



*iTunes Connect ログイン失敗。
実機での動きの確認を完了し、
iTunes Connectにログインしようとすると
『Apple ID does not have permission to access iTunes Connect』
正確なIDとパスワードを入力してもダメ。
どうやってもiTunes Connectにログインできない。

解決法:
サポートに連絡。以下内容。
すると半日もしない内に連絡がきて、
ログイン可能に。
Inquiry from  regarding iOS Developer Provisioning Portal
Region: Japan

Hi.

I cant sign in iTunes connect.
Error message is this.

 Apple ID does not have permission to access iTunes Connect.

Please support me.

Apple ID : (あなたのID)
Person ID : (数字何桁かの数字)

Invalid Signature - Make sure you have signed your application with a distribution certificate, not an ad hoc certificate or a development certificate. Verify that the code signing settings in Xcode are correct at the target level (which override any values at the project level). Additionally, make sure the bundle you are uploading was built using a Release target in Xcode, not a Simulator target. If you are certain your code signing settings are correct, choose "Clean All" in Xcode, delete the "build" directory in the Finder, and rebuild your release target.


Info.plistでBundle identifierを正確に入力、
code署名IDもDistribution用のprovisioningを選択し、
Application Loaderでuploadが成功したが後にAppleから
上記のような連絡がきた。

そして、distribution用のprovisioningを発行し直し、
buildをファイルを削除、buildのクリーン→buildをすると
下のようなエラーが


*Command /usr/bin/codesign failed with exit code 1

*CodeSign error: Certificate identity 'iPhone Distribution: (自分の名前) ' appears more than once in the keychain. The codesign tool requires there only be one.



証明書のIDが重複しているということ。
つまりひとつの証明書に二つのkeyがあるので問題になる。
何度もprovisioningを発行してる内に、keyを作りまくっていたw
秘密鍵と正確ではない証明書を同じ名前で作っているとこのように言われる。
解決法:
一番古いkey以外を削除するとコンパイルが通り完了。

CertificateSigningRequest.certSigningRequestという要求ファイルを作るのは一回でいい。
それでdistribution用provisioningもsubmitすれば,keyの重複にはならない。