世界一うけたいiPhoneアプリ開発の授業』を元に、
オリジナルの電卓アプリを製作して、Appleデベロッパプログラム?に12,000円ほど払って、アプリを申請してみた。
通れば自分のアプリがAppStoreで
世界中でダウンロードできるようになる。
その中で、参考書の間違いや更新点、
自分がつまづいたところを備忘録としてメモ。
とりあえず、
validateのことろで、iTunes store failedなるエラーが多発して進めなかったが、
3時間ほど調べて、サブ的に存在していたCalculatorUITestフォルダーなどを削除することで解決した。
おそらく、上記のテストフォルダー(ターゲット)が、
署名を自動にしていた(automatically~)ため、引っかかっていたよう。
署名を自動にしていると、
プロビジョニングファイルの作成とインポートが、何かうまくいかないよう。
参考URL
http://ghosthug.hatenablog.com/entry/2017/03/21/094336
その他メモ
まずEmbedded Content Contains Swift CodeをYES二する際、
Xcode8から、名称がAlways Embed Swift Standard Librariesに変わったよう。
要は、製品のコードにswiftが含まれていたら、それを読み込みますよ、的な意味らしい。
それと、Any iOS SDKもiOS Developer→iOS Destributerに変更した。
海外でそうした方がいいっぽい記事があった。
あと、bundle identifierのややこしさ。
App IDs=チームID.bundleID
という構成らしく、
最初、Xcode側のbundle identifierを=App IDで設定してしまって
(チームIDの分だけ余分)、
プロビジョニングファイルが2こ出来ちゃってごっちゃになった。
で、それを一回
Apple Developer Member?で削除して、
Xcode側のpreferenceでも削除して、作り直したりした。
iTunes Connect側でも、間違ったbundle IDを洗濯していたようで
それもエラーった。
あとは、プロジェクト名(アプリ名)が
すでにあるアプリ名だからエラーなのか?と思ったが、そうではなかったよう。
あくまで、逆ドメイン(名前が一意的に定るように、これを推奨してる)として作成したbundle ID(僕はcom.right-apps.rcalculatorとした)が被ってなければOKのよう。
エラー内容でapplication-identifier is not supported みたいなエラーがで続けたが、このapplication-identifierこそ、App IDのことで、
これにはチームIDが含まれて当然いいのであった。
なのに、
「あれ、bundle idは全部修正した(チームIDが入っていないものに変えた)のに、なんでまだチームIDを含むbundle idのままなの?」
と困惑していた。
うーん、難しい。
アプリのアイコンは話題の?Sketchがトライヤルできたから、それで作成。
最初テンプレ使おうと思ったけど、参考になる記事がなく、
逆に一から作成した。
illustlatorのお試し版を使ったときと同じように
少し理解すれば、あとはスイスイできた。
が、この時、ひとつだけアイコン画像を作成すれば
全iPhoneやiPad、iTunesのアイコンに対応するサイズを
自動作成してくれるMakeAppIconを使った
https://technical-creator.com/makeappicon/
しかし、これで生成したデータで、アップロード時にエラー。
調べるとAppleはアンダーバーを受け付けないようで、フォルダ名のアンダーバーを削除し(Icon_rcalからIconRcalに変更)たら、行けた。
このアンダーバー問題、Androidのアプリも併用して開発する場合、
AppleはアンダーバーNGで、ハイフンOK
AndroidはアンダーバーOKで、ハイフンNG
というややこしい決まりがあるらしい。
だから、フォルダ名やアプリ名、できればドメインやIDなんかも
アンダーバーやハイフンを入れず、大文字と小文字だけで構成するのが良さそうだ。
SampleAppやcom.mycompany.HelloWorldなど。
https://teratail.com/questions/68591
あと、Xcode側でアップロードして、
iTunes Connect側でビルドのよこに「+」が着くまでに5分くらいかかった。
(アイコンをiTunes側では設定していなかったので、待ち時間にアップロードしたのがよかったのかも)