Monthly Archives: 10月 2014

NavigationBarのleftBarButtonItemを非表示にする

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

NavigationBarのleftBarButtonItem、画面遷移で表示されるBackボタンを非表示にしたい場合があります。やり方を毎回忘れるので書いておきます。

self.navigationItem.hidesBackButton = YES;

これでOKです。


iOSアプリ開発で実機による開発を複数台(メイン機ではない2台目以降)のMacで行いたい場合

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

※開発準備、申請まわりの情報をお探しの方はiOSアプリの開発準備と申請の手順まとめを参照ください。

メイン機ではない2台目以降のMacで実機による開発を行うには、証明書+秘密鍵がそれぞれのMacのkeychainに組み込まれている必要があります。iOS Dev CenterのCertificates, Identifiers & Profilesから証明書がダウンロードできますが、その方法ではだめです。

方法は以下の2つあります。

・メイン機の証明書に組み込まれている秘密鍵(p12ファイル)を移植する
・Xcodeの環境設定メニューから秘密鍵(p12ファイル)をエクスポートする

それぞれの手順を書き留めておきます。

 

■メイン機の証明書に組み込まれている秘密鍵(p12ファイル)を移植する

(1) メイン機のMacのキーチェーンアクセスから秘密鍵をエクスポート

メイン機のキーチェーンアクセスを起動し、対象証明書を選択する。

その上で右クリックし、「”◯◯◯”を書き出す…」を選択する。

任意の名前をつけ、フォーマットが「個人情報交換(.p12)」になっていることを確認したら「保存」ボタンを押下する。

p12ファイル保護用のパスワードを入力して「OK」ボタンを押下する。

書き出し時に確認画面が出るので、パスワード(≠p12ファイル保護用のパスワード)を入力して「許可」ボタンを押下する。

 

(2) 別のMacのkeychainに秘密鍵を登録する

次に、メイン機ではないほうのMacに今書き出したp12ファイルをコピーしてダブルクリックします。

Macのログインパスワードとp12ファイル保護用のパスワードをきいてくるので入力します。

キーチェーンアクセスが起動して正しく登録されればOKです(上記の画面ショットは開発用と配布用の二つを登録した状態です)。

※(1)と(2)はそれぞれ必要な分だけ繰り返します(通常は開発用と配布用の2回、APNsがあればこちらも開発用も配布用の2つ必要になるでしょう)

 

■Xcodeの環境設定メニューから秘密鍵(p12ファイル)をエクスポートする

(1) メイン機ではないほうのMacで秘密鍵(p12ファイル)をエクスポート

Xcodeを起動してPreferences(環境設定)画面を開き、Apple IDsを選択した状態で右下の「View Details…」ボタンを押下します。

対象となるSigning Identitiesを選択してすぐ下の歯車アイコンを選択、メニューから「Export…」を選択します。

任意の名称をつけ、保護用のパスワードを入力してから「Save」ボタンを押下し、任意の場所に保存します。その後、エクスポートしたp12ファイルをコピーしてダブルクリックします。

キーチェーンアクセスが起動して正しく登録されればOKです。

※必要な分だけ繰り返します(通常は開発用と配布用の2回、APNsがあればこちらも開発用も配布用の2つ必要になるでしょう)

なお、初回のXcode起動時以下の確認画面が出ることがありますが、ユーザ名とパスワードを入力して「許可」ボタンを押下でOKです。

 


Your iOS Distribution Certificate will expire in 30 days.(証明書の更新手順)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

Appleからタイトルのメールが飛んできました。証明書の更新の時期です。毎回「あれ?どうやって更新していたんだっけ?」となりますので、良い機会ですし、書き留めておきましょう。

※以下はDevelopmentの場合です、その他のタイプの場合は適時読み替えてください

 

(1) CSRを生成


キーチェーンアクセスを起動して、[証明書アシスタント]->[認証局に証明書を要求…]を選択します。


証明書情報として「ユーザのメールアドレス」では開発者登録しているメールアドレスを選択もしくは入力し、要求の処理で「ディスクに保存」を選択した状態で「続ける」ボタンを押下します。「通称」に自分の名前(アカウント名)が入っていると思いますが、特に何もせずそのままでOKです。「CAのメールアドレス」は空欄で構いません。


CSRが生成されたら、「保存」ボタンを押下します。保存場所は任意で構いません。

 

(2) iOS Dev Center へログイン


iOS Developer Program の Certificates, Identifiers & Profilesを開いてCertificatesを選択し、右上の+ボタンを押下します。

 

(3) 生成する証明書のタイプを選択


iOS App Development(Distributionの場合はAppStore and Ad Hoc)を選択し、


画面下部の「Continue」ボタンを押下します。


About Creating a Certificate Signing Request 画面に遷移したら、「Continue」ボタンを押下します。

 

(4) CSRファイルのアップロード


「Choose File …」ボタンを押下し、先ほど生成したCSRを選択し、「Generate」ボタンを押下してアップロードします。

 

(5) 証明書のダウンロード


準備ができると「Download」ボタンが表示されるので押下してダウンロードします。

 

(6) 証明書をkeychainに登録


ダウンロードした証明書(ios_development.cer)をダブルクリックし、キーチェーンアクセスに登録する。

 

ここで一区切りです。以降、必要に応じてProvisioning Profileの再生成などを行います。

 


Xcode6で実機が認識されずにIneligible Devices (OS version)になる場合の対処

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

上記のようにIneligible Devicesとなり実機が選択できなくなる現象ですが、カッコ内にOS versionとあるときは、多くの場合、実機のOSバージョンをXcode(SDK)がサポートしていないことが原因です。

上記の例は、iOS8.0までサポートしていたXcode6.0.1に、iOS8.1を載せたiPhone6を接続していた場合でしたので、Xcodeを6.1にすることで解決しました。

<補足>
Ineligible Devices (deployment target)の場合は、以下を参照してください。
Xcode6で実機が認識されずにIneligible Devices (deployment target)になる場合の対処


Mac App StoreからXcodeをアップデートできない場合の対処

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

iOS Dev Centerの「Download Xcode」ボタンを押下するとXcode紹介ページのDownloadタブに飛びます。そこにある 「View in the Mac App Store >」リンクを押下するとMacAppStoreに飛び、Xcodeの詳細画面で「インストール」ボタンを押下するように促されますが、この手順だとアップデートできない場合があります。別の方法としては直接dmgファイルをダウンロードしてアップデートする方法がありますので、それを紹介します。

※以下、Xcode6.0.1からXcode6.1への例となります

 

(1) iOS Dev Centerの「Download Xcode」ボタンを押下

 

(2) Additional Toolsを開く

Xcode紹介ページのDownloadタブに飛んだ後、「View in the Mac App Store」リンク押下ではなく、その下にある、「Additional Tools」の「View downloads >」リンクを押下します。

 

(3) Xcode6.1をダウンロード

Additional Tools画面の「Xcode6.1」タブを選択して開き、右側にあるXcode6.1.dmgアイコンを押下してダウンロードします。

 

(4) インストール

ダウンロードが終了したら、いつもの手順でインストールします。


Mac OSX 10.10(Yosemite)にアップグレードするとGoogleドライブのツールバーアイコンがグレーアウトになる件の対処

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

(1) ターミナル(Terminal.app)を起動

(2) Google Drive Icon HelperをPrivilegedHelperToolsにコピー

# cp /Applications/Google\ Drive.app/Contents/Resources/Google\ Drive\ Icon\ Helper /Library/PrivilegedHelperTools/

(3) アクティビティモニタ(Activity Monitor.app)を起動

(4) プロセス名欄の「Google ドライブ」を選択して左上のバツ丸(X)アイコンを押下、確認画面で「終了」ボタンを押下
 →「終了」でkillできない場合は、「強制終了」ボタンを押下する

(5) Googleドライブを起動

これでOKです。
ちなみに、(3)-(4)ですが、もちろん、ターミナルからコマンドでkillしても構いません。


Application windows are expected to have a root view controller at the end of application launch

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

だいぶ昔開発したアプリに手を入れようとXcodeで走らせてみたら、コンソールにタイトルのエラーが吐き出されました。

原因はapplication:didFinishLaunchingWithOptionsで記述しているルートビューコントローラーの設定でした。

[self.window addSubview:navigationController.view];

これはiOS5以前の古い書き方ですね。iOS6以降でstoryboardを使わない(=コードで書く)場合は、

[self.window setRootViewController:navigationController];

このようにします。これでOKです。

 


Images.xcassets: None of the input catalogs contained a matching app icon set named “*********”.

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

エラー内容そのものですが、[TARGET]->[Build Settings]->[AssetCatalogCompiler – Options]の[Asset Catalog App Icon Set Name]項目に存在しないアイコンセットが設定されていることを意味しています。

App Icons SourceにてAssetCatalogでアイコンを設定する際、新たにアイコンセット生成しつつもそれを使わずに削除し、デフォルトのアイコンセット(名)を適用しようとした場合によく出ます。

上記のケースでは存在しない AppIcon-2 という名前のアイコンセットが設定されていました。[Asset Catalog App Icon Set Name]項目に存在する正しいアイコンセットを設定すれば解決します。

 


iOSアプリのアップデート申請手順(2014年9月版)

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

※2015年9月版の記事はこちらを参照ください。
※初回申請はまずこちらを参照ください。
※開発準備、申請まわりの情報をお探しの方はiOSアプリの開発準備と申請の手順まとめを参照ください。

iOS8およびiPhone6/6Plusのリリースに伴い、iTunesConnectもフラットデザインへリニューアルすると同時に、申請フローも変わりました。以前の方法よりは幾分わかりやすくなったような気がしますのでこれからアプリ開発や初めての申請を行う方への親和性は高いかも知れません。ただ、以前から開発や申請を行っていた方にとっては慣れ親しんだ方法を急に変えられてしまったことによる混乱を招いているようです。例にもれず私も混乱しましたが、新しいiTunesConnectでアプリを数本申請し、やっと慣れてきたところです。現段階ではまだローカライズが適当だったりスクロールすると表示が崩れるなどAppleらしくない部分もありますが、徐々に改善されていくでしょう。

ここでは既存アプリのアップデート申請(iOS8/iPhone6/6Plus非対応→対応版)を例に新しいiTunesConnectでの申請フローを書き留めておきますが、必要最低限の記入しかしていないので、諸々情報を書き換えたり特別な設定が必要な場合の参考にはならないかもしれません。新規申請もほぼ同様ですので古いiTunesConnectでの申請経験がある方は特に意識せず読み替えることは可能かと思います。また、これは2014/10/02現在(その後、一部更新箇所あり)の方法であり、予告なしに変わる可能性がありますので、変わっている部分は最新情報を提供している他の方の記事を御覧になるか、変更点を読み替えるなどして対応してください。

なお、情報の掲載にあたっては細心の注意を払っておりますが、不正確な記載を含む場合があります。記載が不正確であったことにより生じたいかなる損害に関しても、一切の責任を負わないものとします。

<前提条件>

・2014/10/02現在の内容(一部更新箇所あり)
・iOS7対応でリリース済み既存アプリのiOS8/iPhone6/iPhone6Plus対応版のアップデート申請
・ローカライズなし(日本語のみ)
・Xcode Version 6.0.1 (6A317)

 

(1) iTunesConnect(iTC)にサインインする

 

(2) 「マイApp」アイコンを押下する

 

(3) アップデート申請対象のアプリを選択する

ここでは見やすいようにリスト形式に表示変更させています

 

(4) 新規バージョンのアプリ情報を設定する

当該アプリの詳細画面に遷移したら右上の「新規バージョン」ボタンを押下します。

新規バージョンのバージョン番号を入力し、「作成」ボタンを押下します。

新規バージョン用の入力欄が表示されるので、4.7インチ用と5.5インチ用のスクリーンショット、必要に応じて内容を追加、編集し、右上の「保存」ボタンを押下します。

ここで注意です。当該アプリに関して新iTCではじめてのアップデート申請を行う場合、レーティングの再設定が必要です。一度設定すれば次は不要ですので、同一アプリでの新iTCによる二回目申請以降であればここは飛ばしてください。

画面真ん中左あたりにレーティングの編集リンクがありますのでそれを選択します。

iOS8からのHealthKitの追加に伴う「医療/治療情報」項目の追加、「無制限のWebアクセス」と「ギャンブルおよびコンテスト」が追加されています(忘却の彼方なのですが、もしかして後者二つは以前からありましたかね?)ので選択しておきます。

ここでもう一つ注意です。画面右上をみるとわかりますが、ローカライズする場合はそれぞれの言語ごとにアプリ情報の設定を行ってください。この例ではローカライズなしですので、Japaneseのみの設定になります。

 

(5) Xcodeにてアーカイブのアップロードを行う

一旦、iTCはそのままにして、Xcodeから当該アプリのアーカイブとiTCへのアップロードを行います。

プロビジョニングプロファイルの設定ほか準備が整ったらアーカイブを実行します(Xcode側のサブミットまでの手順は基本的に変更ありません)。

アーカイブが終了後するとオーガナイザーが開きますので、「Validate…」ボタンを押下します。なお、Crashlytics(Fabric)を導入している場合はアーカイブ終了後にメニューから以下のようなポップアップが表示されます。


テスターへ評価版を配布するかどうかの確認です。ここでは無視(Ignore)します。

アカウントを選択し、進めます。

確認ダイアログになりますので、「Validate」ボタンを押下します。

うまくいきました。次はアップロードです。

オーガナイザで「Submit…」ボタンを押下します。

先程と同じく、アカウントを選択し、次に進めます。

確認ダイアログになりますので、「Submit」ボタンを押下します。

うまくいきました。これでiTCにアーカイブがアップロードされた状態になります。

 

(6) バイナリ(アーカイブ)を選択する

iTCに戻ります。

画面中央左側に「ビルド+」と表示されていますので、「+」を押下します。もし、ここになにも表示されていない場合は、iTCの再読込(リロード)を行ってください。ほとんどの場合すぐに反映されますが、数分かかる場合もあります。

先程アップロードしたバイナリ(アーカイブ)が表示されているはずですので、選択して「終了」ボタンを押下します。なお、Xcodeからバイナリ(アーカイブ)を複数アップロードした場合はここに列挙されますので、適切なバイナリ(アーカイブ)を選択してください。

選択したバイナリが表示されていることを 確認したら、

画面右上の「保存」ボタンを押下します。

 

(7) バイナリ(アーカイブ)を申請する

画面右上の「レビュー審査のために送信」ボタンを押下します。
※(2015/03/13追記)「レビューへ提出」ボタンが「審査へ提出」ボタンに変更になりました
※(2014/12/06追記)「レビュー審査のために送信」ボタンが「レビューへ提出」ボタンに変更になりました

送信前の最終確認です。Advertising Identifierのあたりはローカライズされわかりやすくなりました。必要に応じて選択、チェックしていきますが、重要なのは以前と同じくAdvertising Identifierの部分です。

“このAppはAdvertising Identifier(IDFA)を使用しますか?”

この項目が「はい」の場合は、以下の通りに選択する必要があります(当然ながらそのとおりにアプリが組まれていなければダメです、不正はリジェクト対象です)。

“App内で広告を出す” → チェックする
“このAppのインストールを前に出した広告の成果であるとする” → チェックしない
“このApp内で行われたアクションを前に提出した広告と関連付ける” → チェックしない

“iOSの「追跡型広告を制限」設定” → チェックする

すべて回答したら右上の「送信」ボタンを押下します(「送信ボタンの押下」=「申請」となります)。

当該アプリのアップデートバージョンが「レビュー待ち」になり、Appleから「Your app status is Waiting For Review」のメールが届けば申請完了です。
※(2015/03/13追記)「レビュー待ち」が「審査待ち」に変更になりました

この記事を読んでもよくわからない方、ご自身でやるのがどうしても不安な方、経験豊富な株式会社プライムセオリーがアプリ申請代行もしくは申請サポートを承ります。お気軽にお問い合わせください。