Xcode
iOS

Xcode,プロジェクト設定これだけはしておくといいかも(初心者向けかも)

More than 3 years have passed since last update.

iOSアプリ開発をやってきて最初に設定しておいたほうがいいことがある程度まとまったので、書いていきます。

想定環境

環境
バージョンとか

Xcode
6.4

言語
Objective-C

cocoapods
0.38.2

参考プロジェクトファイル

https://github.com/ppengotsu/iosSettingSample


Xcode設定


タブ切り替え

プログラム実行時に、プログラムがなにかを理由に停止した際に、mainメソッドで止まったりすることがあります。また、デバッグ中は、ログ取得結果画面を大きく表示したいなどがあると思います。なので以下のように、xcode設定してください。

スクリーンショット 2015-08-23 22.38.32.png

次に、下記のように、コマンドキー+Tキーでタブ作り、Debugというなのタブを作ります。

スクリーンショット 2015-08-23 22.40.42.png

このようにすることで、プログラムが停止するとDebugタブに自動遷移します。


画面の色設定

個人によりますが、僕は背景が白色だと目が痛くなるためでうす。

スクリーンショット 2015-08-23 22.38.23.png


プロジェクト設定


cocoapods の設定

iOS,MacOSXアプリ開発で、ライブラリを管理する方法として、cocoapodsがあります。

プロジェクトのディレクトリのルートで下記コマンドを実装してください。(”プロジェクト名”.xcodeprojファイルがあるところで実行)


cocoapods

$ pod init  #Podfile作成

$ pod install #プロジェクト全体をpodに合わせて設定

作成されたもの
Pod

Podfile
ライブラリで何を入れたりするかの設定ファイル

Podfile.lock
インストールしたライブラリの設定

*.xcworkspace
ワークスペースファイル。次回起動するときは、このファイルを開いてください。

Podsディレクトリ
ライブラリ本体がある。

cocoapodsは、外部ライブラリの管理と更新が簡単にできるので絶対入れたほうがよい。

現在は、carthageという管理ツールもでているようです。ただし、対応しているライブラリが少ない、動かないものもあるようです。swiftでは使ったほうがいいらしい。コンパイルの時間が節約できるためです。


PROJECT,TAGETS内の設定


アプリの最低サポートOSバージョンを決定しよう。

アプリをリリースした際に、最低インストールできるOSバージョンは、XcodeのDeploy ment Targetに依存します。なので以下、2箇所を変えましょう。これによって、サポートすべきAPIが変化します。

スクリーンショット 2015-08-24 2.06.58.png

スクリーンショット 2015-08-24 2.07.04.png


アプリの向きを決定

大抵のアプリは、縦向きのみなので、Portraitだけにチェックしましょう。

もし、横画面に対応するならLandscapeの2つをチェックです。

スクリーンショット 2015-08-24 2.34.25.png


アプリアイコンとスプラッシュスクリーンの設定

アイコンは、アプリの顔となりやる気維持にもつながるので設定しましょう。仮でもいいです。サイズなどは、参照、引用を参考にしてください。

スプラッシュスクリーンもアイコン同様に、あるとアプリっぽいです。

今は、xib形式で読み込みるので、プログミングができない状態からでもカッコよくできると思います。よくあるのは、中心にロゴ設置して背景を一色で染めるやつですねー。

スクリーンショット 2015-08-24 2.37.28.png

スクリーンショット 2015-08-24 2.37.36.png


schemeの共有

schemeは、プロジェクトの実行時の細かな設定することできます。例えば、実行時にバックグラウンドで開始するなどです。(今見てみると、scheme設定にGeoJSONの設定もあるので設定できるのかも)

参考先を見てみると、Debug,Releaseの切り替えを簡易にするために使うこともあるようですね。

スクリーンショット 2015-08-23 23.09.24.png

共有するには、以下のようにしてください。

Sharedにチェックを入れるだけです。

スクリーンショット 2015-08-23 23.07.01.png

スクリーンショット 2015-08-23 23.07.11.png


Configurationsの複製

+ボタンで増やしてください。Configurationsは、設定のリストとようなものです。

これで、デバッグ用のURLに接続や本番のURLに接続に分けることができます。

名前は自由です。

スクリーンショット 2015-08-26 1.14.46.png

スクリーンショット 2015-08-26 1.18.02.png

また、下記のようにBuild Settingのプリプロセッサの設定を変えてください。

これは、プロジェクト内のマクロ定義をそれぞれに設定しています。

DEBUGはもう少しわかりやすくかえてもいいかも。

スクリーンショット 2015-08-26 1.18.38.png

スクリーンショット 2015-08-26 1.23.24.png

また、Podの方も追加してください

スクリーンショット 2015-08-26 1.24.29.png

このおかげで


ConfigTemp.m

#ifdef DEBUG1

//Debug1のとき
static NSString *imageUrl = @"https://ppen.info";

#endif


のようにできます。


TARGETSの複製

プロジェクトの設定一式を複製しておきましょう。

下記写真のように、targetを複製しましょう。

スクリーンショット 2015-08-26 2.44.33.png

このようにすることで、

スクリーンショット 2015-08-26 3.01.45.png

上記のように簡単にDebug設定などを切り替えることができます。

また、info.plistが作られているはずなので、それぞれ名前をかえたら、BuildSettingsを設定し直しましょう。(info.plistでBuildSettingを検索してみるとわかると思います。)


URL Schemeの設定

インターネットのアドレス(例:http://ppen.info )のように、iOSもアプリを指すアドレスを設定できます。ただし、これは、アプリごとに別のものになっている保証はないようです。また、

下記だと、”iossample://”とsafariにアドレス入力するとアプリが起動します。

”iossample://”を”iossample://dataid=1000”のようにすると文字列を渡すことができます。どこから起動したのかや指定した画像を表示するなどに使えます。

スクリーンショット 2015-08-26 22.05.08.png

TARGETSを複製して、info.plistが複数ある場合は、それぞれに設定する必要があります。


アプリ言語設定(他言語設定)

プロジェクト作った状態だと、英語のみになっています。

スクリーンショット 2015-08-26 22.23.06.png

このままでは、itunes storeにアプリを出した際に対応言語が、英語になってしまうので、日本語などそれぞれに変更しましょう。また、英語と日本語の両方いれるとそれぞれ端末設定によって、表示する文字列を変えることができます。アプリ内に設定がない言語の場合は、基準とした言語で表示されます。

スクリーンショット 2015-08-26 23.54.38.png

スクリーンショット 2015-08-26 23.54.45.png

xliffファイルやstringsファイルを使うことで、コードで設定した文字列の多言語かもできます。(詳しくは、参考の多言語対応のリンク先みてください)


その他思いついたら書く


コード設定

ここから下は、あとでコードにおとす


起動時の処理を短くしよう

アプリは、アップデートしていく過程で、DBのマイグレーションなどによって起動が遅くなることがあります。しかし、iOSアプリは起動時に10秒程度メインスレッドで処理し続けると、アプリが落ちるようになっています。そのため、アプリ起動時は、最初の画面が表示しきるまで重い処理はしないようにしましょう。だけど、DBマイグレーションなどのアプリ全体に影響してしまうようなものを実行中はユーザに操作してほしくないと思います。

なので、

アプリ起動→スプラッシュ→メイン画面

ではなく

アプリ起動→スプラッシュ→更新画面→メイン画面

とすることで、解決できます。

また、ユーザからしたら起動時間が延びたことに変わりないので、できる限り必要になったときにマイグレーション処理などをしたほうが良いかもしれません。


強制アップデートの導入

アプリをアップデートしていくと、APIなどが変化していくと思います。それに合わせてアップデートをすると思うのですが、すでにリリースしたアプリをユーザの端末から消すことはできません。そのため、市場に古いAPI対応のアプリと新しいAPI対応のアプリが居る状態になります。アップデートすればするほど、メンテナンスが大変になります。

そのため、アプリを起動したときやなにかにアクセスしたときにサーバにアクセスして、サポートする最低のバージョンをjsonなどで返してもらい、操作を続行するか決めましょう。


その他思いついたら書く


参考

scheme1 - http://nanananande.helpfulness.jp/post-1500/

scheme2 - http://dev.classmethod.jp/smartphone/iphone/xcode-scheme-shared/

scheme3 - http://dev.classmethod.jp/smartphone/iphone/ios-user-defined/

carthage -

アイコンサイズ - http://qiita.com/Yuta/items/98b9ea2739718b9184de

url schemeについて - http://www.appbank.net/2013/03/24/iphone-news/567531.php

多言語対応 - http://seeku.hateblo.jp/entry/2015/04/12/153149


感想とか

他にも便利なものがあったら、コメントなどで教えください。こちらで調査してのせます。

こちらも思いついたりしたら書きます!

ああ、もうSwiftだけにしたい。