@himara2 です。iOS Advent Calendar の20日目を担当します。
iOS 7対応時に知っておきたい情報をまとめます。
はじめに
iOS 7が登場から3ヵ月が過ぎ、普及率が75%を超えるほどiOS 7は浸透しています。
先日にはついにAppleが「2014/2/1以降に申請するアプリはiOS 7に最適化されている必要がある」とアナウンスしました。
これからアプリのiOS 7対応は必須化していきます。
この記事ではこれからiOS 7対応をする方向けに、新APIやiOS 7対応時に助かるリンク集をまとめてみます。
1. 見た目関連のAPI
Custom Transition
- ViewController間の遷移が簡単にカスタマイズできるようになった
- NavigationController, TabBarController, Modal などの遷移を自作できる
- UIViewControllerTransitioningDelegate や UIViewControllerAnimatedTransitioning プロトコルを使う
PinterestのiOS 7対応で紹介されている以下のようなTransitionが自作できる
もっと詳しく
TextKit
もっと詳しく
Motion Effect
- iOS 7らしい視差効果を表現する
- 画面を傾けると奥行きが感じられるアレ
- ホーム画面の他、Safari のタブ切り替えの画面などで使われている
もっと詳しく
UIKit Dynamics
- UIKitに物理演算の動きを与えられるAPI
- 重力や張力、密度などを設定でき、バネやぷるぷるした動きを実装可能
- ゲーム用ではない(ゲーム用にはSpriteKitを使えとAppleは言っている)
もっと詳しく
2. ロジック関連のAPI
Background Fetch
- OSが定期的にバックグラウンドでアプリを起こし、コンテンツ更新等の処理を行ってくれる
- 発火の頻度はOSがユーザーのアプリ使用頻度から学習して適切なタイミングで実施
- SNSやニュースアプリなど、定期的にコンテンツが更新されるアプリで有効
もっと詳しく
- iOS 7対応アプリを作るなら知っておきたい「UXを向上させるBackground Fetchの使い方」
- SmartNewのiOS 7対応
- HBFav 2.6、バックグラウンドフェッチによるタイムラインの自動更新
Silent Push Notification
- Remote Push Notificationの拡張版
- pushの受け取り時にバックグラウンドでアプリを起こしてコンテンツ更新等の処理を行う
- pushで流す値に
{content-availble: 1}
を指定すればSilent Pushとなる - メッセージングアプリなど不定期にコンテンツを受け取るアプリで有効
もっと詳しく
NSURLSession
- NSURLConnectionにとってかわる通信周りを司るクラス
- セッションの持ち方などが改善している
- バックグラウンドでもファイルのダウンロード・アップロードが可能(ただしWi-Fi only)
- ストレージサービスなど大容量ファイルを扱うアプリで有効
もっと詳しく
Dynamic Type
- 画面に表示する文字サイズを動的に変更するAPI
- 標準の設定アプリでテキストサイズを指定すると全アプリ共通でサイズが変更される
- アプリ側では"Body"や"Headline"などのテキストスタイルを指定する
もっと詳しく
3. その他のAPI
AVSpeech Synthesizer
- iOS 7から追加されたテキストを音声読み上げしてくれるAPI
- 日本語含む様々な言語で読み上げが可能
もっと詳しく
その他
App Switcherについて
- App Switcherとは、ホームボタンを2回クリックした時に現れる起動中アプリ一覧画面のこと
- アプリの画面が大きく表示されるように変更され、UIが良いほどユーザは帰ってくるとAppleは言っている
- 口座情報などの秘密のデータを扱う場合はモザイクをつけたりもできる
iOS 7対応で発生する問題に対するベストプラクティス
- iOS 6の時と比べてステータスバーの20px領域分ずれてしまう
- ステータスバーの色を変えたり消したりしたい
- バックグラウンドで位置情報が取れない
- iOS 7からは設定 > バックグラウンドの更新がONじゃないとLocation Services使えません
- また、AppSwitcherで上スワイプでプロセス切られた場合も使えません
iOS 7らしい"ぼかし効果"を得たい
- 標準のAPIには実装されていない
- iOS-blurというオープンソースを使う
- AppleのサンプルコードからUIImageのカテゴリを抜いてくる
- WWDC 2013 のサンプルコード > iOS_UIImageEffects > UIImage+ImageEffects
既存のバージョンとiOS 7とを両立させる
- 分岐させる方法
- マクロを使って分岐させる
- respondsToSelector を使って分岐させる
iOS 7から追加されたAPI一覧
- その他の変更についてはこちらをご覧ください。