Upload
natsuki-yamanaka
View
601
Download
0
Embed Size (px)
Citation preview
iOS9新仕様まとめ@社内勉強会
目次
・iOS 9 仕様変更点
- App Thining- ATS対応- IPv6対応
・iOS-9-Samplerで新APIの動きを見てみる
App Thiningについて
◉ App Slicing
◉ On-Demand Resources (ODR)
◉ Bitcode
アプリ容量削減やバイナリ(.ipa)の最適化の話
公式https://developer.apple.com/library/watchos/documentation/IDEs/Conceptual/AppDistributionGuide/AppThinning/AppThinning.html参考:http://qiita.com/usagimaru/items/cb19f283db4ac0cd8bd6
・Asset CatalogでImage Setを作成・端末に合わせた画像ファイルのみがコンパイルに含まれるらしい
公式にはthe store delivers universal apps to customers.って書いてあるので多分手元で確認できない
App Slicing
↑これ
こんな感じで指定
・リソース後からダウンロード
・Apple提供なので多分CDN要らず
・iOS8以下/Androidで使えない問題はある
On-Demand Resources (ODR)
※公式https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/
プロジェクトナビゲーターからプロジェクトを選択して Build SettingsからEnable On-Demand ResourcesをYesにする(デフォルト:Yes)
画像:公式から
Resource Tagsからassetに対してタグを設定
アセットを取得する時は↓のように書く
On-Demand Resources (ODR)
※公式https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/
NSSet *tags = [NSSet setWithObjects: @"body", @"face", @"hair"];
resourceRequest = [[NSBundleResourceRequest alloc] initWithTags:tags];
下記のようなメソッドもある
On-Demand Resources (ODR)
※公式https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/
・すでにダウンロード済みかチェック
・ダウンロード後コールバック
・ダウンロードの優先度付け
・プログレスに反映する為に進捗率をとる
容量制限あり
On-Demand Resources (ODR)
※公式
https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/PlatformSizesforOn-DemandResources.html#//apple_ref/doc/uid/TP40015083-CH23-SW1
Bitcode
ソースコード ネイティブの機械語 この中間表現が
※参考http://qiita.com/gamako/items/f37dbb05de9d3832ce6bhttps://project-flora.net/2015/09/13/xcode-7%E3%81%A7%E3%81%AF%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%A7%E3%83%93%E3%83%AB%E3%83%89%E6%99%82%E3%81%AB%E3%83%93%E3%83%83%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E5%90%AB/
メリット
・それぞれのアーキテクチャ毎にapple側でコンパイルを最適化してくれる
・パフォーマンス上がるかも
Bitcode
デメリット
※参考http://qiita.com/gamako/items/f37dbb05de9d3832ce6bhttps://project-flora.net/2015/09/13/xcode-7%E3%81%A7%E3%81%AF%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%A7%E3%83%93%E3%83%AB%E3%83%89%E6%99%82%E3%81%AB%E3%83%93%E3%83%83%E3%83%88%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E5%90%AB/
・ライブラリとかが対応してない場合、「does not contain bitcode.」エラー
・ダメな時はプロジェクトのBuild SettingsからEnable BitcodeをOff
・ライブラリの対応を待つしかない…
ATS(App Transport Security)について
※参考
http://qiita.com/yanayanalte/items/e6d83c12af77fa238a58
ATS(App Transport Security)について
iOS 9, OS X 10.11 以上向けのビルドの場合、すべての接続は基本的に ATS の動作に従うことになり必要条件を満たさない接続はエラーが返ってきます。
http://dev.classmethod.jp/smartphone/iphone/ios-9-intro-ats/
NSURLConnection等でhttp://xx.co.jp などにアクセスするとNSErrorDomainとか返ってきてつながりません。
※参考
http://qiita.com/yanayanalte/items/e6d83c12af77fa238a58
ATS(App Transport Security)対応方法
対応方法は四つのどれか
・XCode6系以前でビルドする
・info.plistにNSExceptionDomains等設定してドメインごとにATSをオフ
・info.plistにNSAllowsArbitraryLoadsを設定して ATS自体をオフ
・サーバーをATSに対応したドメインに設定する
・TLS バージョン 1.2 以上
・暗号スイートがApple指定のもの
・SSL証明書の暗号化アルゴリズムがSHA256以上
・SSL証明書の暗号強度がRSA2048bit以上、もしくはECC256bit以上
※参考
http://qiita.com/yanayanalte/items/e6d83c12af77fa238a58
ATS(App Transport Security)対応方法
サーバーサイドでこれに対応する場合SSL対応した上で下記が必要です
↑特に証明書の方は対応してないとNSURLConnectionやってもサーバーまでアクセスすらきません
IPv6対応について
※参考
http://qiita.com/shao1555/items/4433803419dfc72bf80b
IPv6対応について
どういうこと?
・ユーザーの端末がIPv6のネットワーク環境でもアプリが正常に動くようにしな
いといけない
・大体のWebサービスはIPv4で動いていて、大体キャリアがIPv6でアクセスし
てきても透過的にアクセスできるようにしてくれる
・UDPとか、中でgetHostByName使ってるようなのはエラー吐く
※参考
http://qiita.com/shao1555/items/4433803419dfc72bf80b
IPv6対応について
・必ずIPv6 only Networkの環境でデバッグしましょう
・できれば審査前必ずその環境でデバッグする体制を作りたい
来年初頭以降これに対応しないとAppleの審査に通らなくなる!
※参考
http://qiita.com/shao1555/items/4433803419dfc72bf80b
IPv6対応について
対応方法
・El CapitanのMac用意
・システム環境設定→共有をoptionクリック(optionやらないと出てこない)
→create nat64 networkにチェックを入れてインターネット共有スタート
・WifiポイントをそのMacにしてアプリを動かす
iOS9 新APIについて
iOS-9-Sampler
・iOS9の新APIを抽出したデモ
http://d.hatena.ne.jp/shu223/20150917/1442440780
・画像見ただけで何ができるようになるのか大体分かる
いいサンプル
・3Dでガシガシ動く
・日本エリアだと遅い…?
iPad miniで↓すげー重かった
https://github.com/hirai-
yuki/ShopMapSample
Map Customizations
MKMapViewのMKMapTypeにFlyoverが追
加
Text Detector
文字認識のサンプル
New Image Filters
・CIFilterクラスの静止画フィルター
・自分の端末だとちょっと重い
Etc...
他、下記を落としてきてXcode7でビルドしてみてください
https://github.com/shu223/iOS-9-Sampler
以上ありがとうございました