29
iOS9新仕様まとめ @社内勉強会

2015 11 05_ios9_新仕様まとめ_社内勉強会

Embed Size (px)

Citation preview

Page 1: 2015 11 05_ios9_新仕様まとめ_社内勉強会

iOS9新仕様まとめ@社内勉強会

Page 2: 2015 11 05_ios9_新仕様まとめ_社内勉強会

目次

・iOS 9 仕様変更点

- App Thining- ATS対応- IPv6対応

・iOS-9-Samplerで新APIの動きを見てみる

Page 3: 2015 11 05_ios9_新仕様まとめ_社内勉強会

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

Page 4: 2015 11 05_ios9_新仕様まとめ_社内勉強会

・Asset CatalogでImage Setを作成・端末に合わせた画像ファイルのみがコンパイルに含まれるらしい

公式にはthe store delivers universal apps to customers.って書いてあるので多分手元で確認できない

App Slicing

Page 5: 2015 11 05_ios9_新仕様まとめ_社内勉強会

↑これ

Page 6: 2015 11 05_ios9_新仕様まとめ_社内勉強会

こんな感じで指定

Page 7: 2015 11 05_ios9_新仕様まとめ_社内勉強会

・リソース後からダウンロード

・Apple提供なので多分CDN要らず

・iOS8以下/Androidで使えない問題はある

On-Demand Resources (ODR)

※公式https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/

Page 8: 2015 11 05_ios9_新仕様まとめ_社内勉強会

プロジェクトナビゲーターからプロジェクトを選択して Build SettingsからEnable On-Demand ResourcesをYesにする(デフォルト:Yes)

画像:公式から

Page 9: 2015 11 05_ios9_新仕様まとめ_社内勉強会

Resource Tagsからassetに対してタグを設定

Page 10: 2015 11 05_ios9_新仕様まとめ_社内勉強会

アセットを取得する時は↓のように書く

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];

Page 11: 2015 11 05_ios9_新仕様まとめ_社内勉強会

下記のようなメソッドもある

On-Demand Resources (ODR)

※公式https://developer.apple.com/library/prerelease/ios/documentation/FileManagement/Conceptual/On_Demand_Resources_Guide/

・すでにダウンロード済みかチェック

・ダウンロード後コールバック

・ダウンロードの優先度付け

・プログレスに反映する為に進捗率をとる

Page 13: 2015 11 05_ios9_新仕様まとめ_社内勉強会

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側でコンパイルを最適化してくれる

・パフォーマンス上がるかも

Page 14: 2015 11 05_ios9_新仕様まとめ_社内勉強会

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

・ライブラリの対応を待つしかない…

Page 15: 2015 11 05_ios9_新仕様まとめ_社内勉強会

ATS(App Transport Security)について

Page 16: 2015 11 05_ios9_新仕様まとめ_社内勉強会

※参考

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とか返ってきてつながりません。

Page 17: 2015 11 05_ios9_新仕様まとめ_社内勉強会

※参考

http://qiita.com/yanayanalte/items/e6d83c12af77fa238a58

ATS(App Transport Security)対応方法

対応方法は四つのどれか

・XCode6系以前でビルドする

・info.plistにNSExceptionDomains等設定してドメインごとにATSをオフ

・info.plistにNSAllowsArbitraryLoadsを設定して ATS自体をオフ

・サーバーをATSに対応したドメインに設定する

Page 18: 2015 11 05_ios9_新仕様まとめ_社内勉強会

・TLS バージョン 1.2 以上

・暗号スイートがApple指定のもの

・SSL証明書の暗号化アルゴリズムがSHA256以上

・SSL証明書の暗号強度がRSA2048bit以上、もしくはECC256bit以上

※参考

http://qiita.com/yanayanalte/items/e6d83c12af77fa238a58

ATS(App Transport Security)対応方法

サーバーサイドでこれに対応する場合SSL対応した上で下記が必要です

↑特に証明書の方は対応してないとNSURLConnectionやってもサーバーまでアクセスすらきません

Page 19: 2015 11 05_ios9_新仕様まとめ_社内勉強会

IPv6対応について

Page 20: 2015 11 05_ios9_新仕様まとめ_社内勉強会

※参考

http://qiita.com/shao1555/items/4433803419dfc72bf80b

IPv6対応について

どういうこと?

・ユーザーの端末がIPv6のネットワーク環境でもアプリが正常に動くようにしな

いといけない

・大体のWebサービスはIPv4で動いていて、大体キャリアがIPv6でアクセスし

てきても透過的にアクセスできるようにしてくれる

・UDPとか、中でgetHostByName使ってるようなのはエラー吐く

Page 21: 2015 11 05_ios9_新仕様まとめ_社内勉強会

※参考

http://qiita.com/shao1555/items/4433803419dfc72bf80b

IPv6対応について

・必ずIPv6 only Networkの環境でデバッグしましょう

・できれば審査前必ずその環境でデバッグする体制を作りたい

来年初頭以降これに対応しないとAppleの審査に通らなくなる!

Page 22: 2015 11 05_ios9_新仕様まとめ_社内勉強会

※参考

http://qiita.com/shao1555/items/4433803419dfc72bf80b

IPv6対応について

対応方法

・El CapitanのMac用意

・システム環境設定→共有をoptionクリック(optionやらないと出てこない)

→create nat64 networkにチェックを入れてインターネット共有スタート

・WifiポイントをそのMacにしてアプリを動かす

Page 23: 2015 11 05_ios9_新仕様まとめ_社内勉強会

iOS9 新APIについて

Page 24: 2015 11 05_ios9_新仕様まとめ_社内勉強会

iOS-9-Sampler

・iOS9の新APIを抽出したデモ

http://d.hatena.ne.jp/shu223/20150917/1442440780

・画像見ただけで何ができるようになるのか大体分かる

いいサンプル

Page 25: 2015 11 05_ios9_新仕様まとめ_社内勉強会

・3Dでガシガシ動く

・日本エリアだと遅い…?

iPad miniで↓すげー重かった

https://github.com/hirai-

yuki/ShopMapSample

Map Customizations

MKMapViewのMKMapTypeにFlyoverが追

Page 26: 2015 11 05_ios9_新仕様まとめ_社内勉強会

Text Detector

文字認識のサンプル

Page 27: 2015 11 05_ios9_新仕様まとめ_社内勉強会

New Image Filters

・CIFilterクラスの静止画フィルター

・自分の端末だとちょっと重い

Page 28: 2015 11 05_ios9_新仕様まとめ_社内勉強会

Etc...

他、下記を落としてきてXcode7でビルドしてみてください

https://github.com/shu223/iOS-9-Sampler

Page 29: 2015 11 05_ios9_新仕様まとめ_社内勉強会

以上ありがとうございました