変数に警告を定義する方法

プログラム中の変数に警告を定義するには以下のようにすれば良い.

この変数属性は、ARM コンパイラでサポートされている GNU コンパイラの拡張機能

extern int Variable_Attributes_deprecated_0 __attribute__ ((deprecated));

参考:RealView Compilation Tools コンパイラリファレンスガイド
4.5.4. __attribute__((deprecated))

Xcode のシミュレータ選択リストを編集する方法

Xcode のシミュレータ選択リストがとても長くなって使い勝手が悪くなったので,利用するシミュレータだけを表示するようにした.

シミュレータのリスト

シミュレータの選択リストは以下から編集できる.

iOS Simulator のメニューから Hardware > Devices > Manage Devices から,SIMULATORS リストを消せばいい.

参考:iOS Simulator の保存場所について

Xcode のログをフィルタリングする方法

複数人のチームで開発しているプロジェクトの場合,ログ出力でアプリの動作を検証しようとしても既にたくさんのログが出力されていて目的のログを見つけるのが大変だったりします.

今回はデバッグ出力をフィルタリングする Xcode プラグインを導入することで対処します.
ついでに,コードエディタのカレント行をハイライトするプラグインも導入します.
→ カレント行に下線を引くプラグインが見つけられなかった. 😉

Xcode のプラグラインは,Package Manager で管理することができます.

Alcatraz (The package manager for Xcode)
http://alcatraz.io

インストール方法

curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh

アンインストール方法

rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz.xcplugin

全てのキャッシュデータを削除する

rm -rf ~/Library/Application\ Support/Alcatraz

MCLog (ログ出力をフィルタリングできる)
https://github.com/yuhua-chen/MCLog

Backlight (コードエディタのカレント行をハイライトする)
https://github.com/limejelly/Backlight-for-XCode

Xcode の Edit – Backlight に設定項目が追加されます.

カラーを #FFFFCC に設定するといい感じです.

カラーを #FFFFCC に設定するといい感じです.


🙂

Xcode 背景が黒のエディタで,カーソルを見やすくする方法

パッケージ マネージャでいろいろカラースキーマが紹介されていたので,はじめて Xcode で背景が黒のカラースキーマを使用してみました.
使用して気づいたのですが,カーソルが見づらい………(>_<)……… 文字は見やすくなったような気がしましたが,カーソルが確認しづらいんですね. というわけで,Better Xcode ibeam cursor を適用してみました.
背景が黒でも,カーソルの確認が楽になります.
同じようなことでお困りの方におすすめです.

インストール方法

curl -L https://raw.githubusercontent.com/egold/better-xcode-ibeam-cursor/master/install.sh | bash 
【before】背景が黒だとカーソルが見づらい…

【before】背景が黒だとカーソルが見づらい…

【after】こんな感じに少し見やすくなります.

【after】こんな感じに少し見やすくなります.

AppStore にバージョンアップしたアプリを公開する手順

自分で iOS アプリをリリースしてたので,手順・気づいた点をメモしておきます.

1. アプリをアップロードする.

Xcode – Product – Archive メニューからアプリをビルドし,
Xcode – Window – Organizer からアプリをアップロードする.
(アップロード前には,Validate して申請上問題がないか?確認する.)

アプリを Organizer からアップロードする

アプリを Organizer からアップロードする

以下に詳細な手順が説明されている.
【iOS, 申請】iOSアプリの申請プロセスについてPart3 〜リリース用アーカイブファイル作成編〜

アプリのアップロード後は,iTunes Connect に反映されるまで,15分程度かかる.(2016/3 現在)

2.アプリの最新情報を作成する.

App Storeに表示するバージョン情報の文言を用意する.
(多言語対応している場合は,それぞれの言語で用意する.)

アプリのバージョン情報を記入する.

アプリのバージョン情報を記入する.

スクリーンショットの準備について

スクリーンショットを変更する場合は,それぞれの言語用にスクリーンショットも用意する.
スクリーンショットを用意するのは,3.5 〜 5.5 インチの画像(4 x 5パターン)が必要.また,多言語対応している場合,それぞれの言語用に作成しなければならない.
作成枚数がかなり多いので,私は以下のサービスを利用してスクリーンショットを用意している.
(無料ユーザでも作業できるので,一度利用してみるのがいいと思います.)

LaunchKit – Screenshot Builder

アプリのアップロード後は,iTunes Connect に反映されたら,アプリを設定する.

アプリのアップロード後は,iTunes Connect に反映されたら,アプリを設定する.

3. アプリを審査に提出する.

iTunes Connect の“審査に提出する”ボタン押下後に以下の設問に回答する.
・輸出コンプライアンス
・広告ID(Advertising Identifier又はIDFA)

AdMob を利用している場合,以下のように回答し,問題なく公開されました.(2016/3 現在)

AdMob を使用している場合

AdMob を使用している場合

▼ その他,気づいた点など

・公開までのおおよその日数を知るには?

以下のサービスで,公開までのおおよその日数を知ることができます.
Average App Store Review Times

・多言語対応したアプリを公開する場合,プライマリ言語を英語にする.
サポート言語以外の国ではプライマリ言語でアプリ情報が表示されるため,プライマリ言語を英語にしておく方がよいです.

・AppStore で表示されるアプリ名を変更するには,新しいバージョンのアプリをリリースする必要がある.
多言語対応している場合,それぞれの言語でアプリ名を設定することができます.
しかしながら,すでに公開しているアプリに関しては,新しいバージョンのアプリをリリースする必要があるため,注意が必要です.

アイコンをフォントとして扱う方法

https://github.com/PrideChung/FontAwesomeKit

FontAwesomeKit を利用すれば,こんな感じのボタン タイトルを簡単に実装できる.

アイコンを使ったボタン タイトル

アイコンを使ったボタン タイトル

http://fontawesome.io/icons/ で,アイコンが紹介されている.
結構便利そうなアイコンがあるので,チェックするのもいいと思う.
よく使いそうな”設定”,”メール”,”矢印”とかいろいろあります.

ビルド時に Bitcode のエラーが出力された場合の対処

先日,AdMob をアプリに適用した際に以下のメッセージが出力された.

1
2
3
4
5
6
ld: '/Users/.../Google-Mobile-Ads-SDK/GoogleMobileAdsSdkiOS-6.12.2/libGoogleAdMobAds.a
 
(GADGestureUtil.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), 
obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
 
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Targets の Build Settings – Build Options – Enable Bitcode を “NO” に変更すれば,ビルドエラーは出力されなくなった.

Swift と Objective-C との連携方法

Objective-C で定義したクラスを Swift で使用する

【ブリッジヘッダーファイルを追加する】

ブリッジヘッダーファイルは,$(TARGET_NAME)-Bridging-Header.h で,プロジェクトに追加する.

Swift で利用する Objective-C クラスをブリッジヘッダーファイルに記載する.

【Build Settings ー Objective-C Bridging Header を設定する】
ブリッジヘッダーファイルが Swift に取り込まれるように、ターゲット – Build Settings 設定に登録する.

Swift Compiler - Code Generation
Objective-C Bridging Header
$(TARGET_NAME)/$(TARGET_NAME)-Bridging-Header.h と指定する.

【Swift で Objective-C クラスの呼び出し方】
Objective-Cのインスタンスメソッドの場合、 “textWithString:” のようなメソッドは “textWithString(str)” と呼び出す.
“textWithString: string:” というメソッドの場合, “textWithString(str1, string:str2)” と呼び出す.

Swift にインポートした Objective-C クラスは、そのまま継承して新しい Swift クラスを定義できる.

Swift で定義したクラスを Objective-C で使用する

【Swift クラスが定義されたヘッダーファイルをインポートする】
Swift で定義したクラスを利用するには、それを使用したい実装ファイル内に、次のように #import 文を記載する.

#import "$(PROJECT_NAME)-Swift.h

このファイルは、プロジェクト自体には登録されていないが、Derived Data の中間ファイルとして “DerivedSources” フォルダーに自動的に生成されている.

iOS アプリ申請時,Archive validation の警告について

Organizer で,Validate 後に出力される警告メッセージ

Organizer で,Validate 後に出力される警告メッセージ

先日,iOS アプリ申請時に Organizer で,Validate… ボタンを押下すると以下のメッセージが表示されるようになった.(2016/2/10 頃)

内容は以下の感じかと思う.

Archive validation coated with warnings:
The archive passed validation with several warnings.
アーカイブは,いくつかの警告がありますが,validation をパスしました.

iTunes Store operation succeeded with a warning.
The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery.
This is just an informational message.
iTunes Storeの操作は警告付きで成功しました.
API解析ファイルが大きすぎます.配信前にAPIの使用状況を検証することができませんでした.
これは単なる情報メッセージです.

使用している開発環境は,Xcode 7.2.1.
7.2.0 での申請時には上記のメッセージは参照したことがなかった.

特に問題があるとも思えなかったので,そのまま Upload to App Store… ボタンを押下し,アップロードした.
iTunes Connect でビルドの追加が「処理中」のままになり,なかなかビルドの追加が行えず心配したが,4日後に承認されて,Ready for Sale になりました.
上記の警告は何が原因なのだろう?

Average App Store Review Times で,iOS App Store 4 days とされていたので,本当かなぁ〜?ちょっと早すぎるんじゃない?と思っていたが,本当に 4 日でReady for Sale とされていたので,最近は審査が早くなっているのかもしれない.

3Dタッチ メニューをローカライズする方法

Info.plist に3Dタッチのメニュー構成を定数で行っておき,
InfoPlist.strings でローカライズ文字を定義しておけばよいとのこと.

参考:
How do you localize static UIApplicationShortcutItems?

ちなみにショートカット アイコンは,こんなのが使用できるらしい.
ショートカットアイコンの定義

Info.plist, InfoPlist.strings を作成,削除を繰り返してたら,プロジェクト設定が変更されてしまい,以下の警告が表示されたりするので,注意です.
誤って登録された .plist を設定から削除しましょう.

Warning: The Copy Bundle Resources build phase contains this target’s Info.plist file