iOS 9.3 β3 API Diffs
β3 での変更点に限らず iOS 9.2 から iOS 9.3 で今のところ追加予定のものを調査。 (網羅はしてない)
ドキュメントは以下2つ
iOS 9.3 API Diff / iOS 9.2 to iOS 9.3 API Differences
https://developer.apple.com/library/prerelease/ios/releasenotes/General/iOS93APIDiffs/index.html
What's New in iOS / iOS 9.3 https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9_3.html#//apple_ref/doc/uid/TP40016661-SW1
HealthKitUI HealthKit
まず目立つところで HealthKitUI Framework が追加。
クラスは HKActivityRingView
のみで関連クラスは HealthKit の方に追加。
このビューは Apple Watch でアクティビティの状況を表示するあのリングのUIで、Move, Exercise, Stand の役割と色は変更できないけど追加された HKActivitySummary
クラスを使って表示する値は変更できそう。
あのリングのUIは以下
HKActivityRingView Class Reference
ちなみに watchOS には WKInterfaceObject
のサブクラスとして WKInterfaceActivityRing
が追加され、tvOS には iOS と同じく HealthKitUI Framework ごと追加された。
iAd
サービス撤退が表明された iAd の Framework
変更点が気になるところだけど AdBannerView.h に ADErrorAssetLoadFailure
が追加されたのみだった。
MapKit
MKLocalSearchCompleter
クラスが追加
ローカルサーチ自体は iOS 6 で 追加されたMKLocalSearch
クラスでもできて MKLocalSearch
では検索ワードの設定、検索の開始とキャンセル、検索中かどうかのフラグ、検索結果などが取得できる。
ドキュメントがまだないのでヘッダを見てみたところ MKLocalSearchCompleter
ではエラーハンドリングや簡単なフィルタリングなども提供されているっぽい。
CloudKit
CKOperation
に longLived
というプロパティとその関連のAPIが追加された。
Long-Lived については以下
アプリを閉じた後も動く!との事。
以前は usesBackgroundSession
というプロパティがあったけど iOS 9 で deprecated になっていた。
ドキュメントによれば Long-Lived なオペレーションを開始するとデーモンが動いて、オペレーションが終了するとアプリに completionHandler で教えてくれるという事らしい。
オペレーションは24時間稼働可能。
CoreGraphics
CGColorConverter
が追加された。
追加された関数を見た感じカラースペースの変換をしてくれるらしいけど作った CGColorConverterRef
をどう使うのかがいまいち分からない、、
Foundation
NSUserDefaults
に通知が追加。
NSUbiquitousUserDefaultsCompletedInitialSyncNotification NSUbiquitousUserDefaultsDidChangeAccountsNotification NSUbiquitousUserDefaultsNoCloudAccountNotification NSUserDefaultsSizeLimitExceededNotification
- iCloud の UserDefaults との初期同期、ダウンロードが完了。iCloudへの初回接続とアカウントを切り替えた際に呼ばれる。
- iCloud のアカウントが変更された際に呼ばれる。
- iCloud のアカウントがない。
- iCloud の UserDefaults に入れられるデータ量を超えた時に呼ばれる。tvOSを除いてはローカルの UserDefaults に容量制限は無い。制限はiCloudアカウントに依存する。
この4つの通知
ていうかこれ NSUbiquitousKeyValueStore.h
じゃなくて NSUserDefaults.h
に定義されてるんだ。
MediaPlayer
+[MPMediaLibrary authorizationStatus] +[MPMediaLibrary requestAuthorization:]
プライバシーアクセスのAPIが追加された。
他にも StoreKit に追加されたAPIと組み合わせて Apple Music の曲をユーザのライブラリに追加して再生する事が出来るらしいAPIが追加された。
StoreKit
前述の MediaPlayer Framework と同じく Apple Music 周りのAPIがいろいろと追加。
+[SKCloudServiceController authorizationStatus] +[SKCloudServiceController requestAuthorization:]
プライバシーアクセスのAPIも追加。
UIKit
UIUserInterfaceIdiomCarPlay
が追加。
一般のデベロッパには関係無さそう
WatchConnectivity
iOS 9.3 で1台の iPhone に複数台の Apple Watch をペアリング出来るようになるので、新しく追加されたAPIを活用して対応しろという事らしい。
Apps that do not adopt these new interfaces may be terminated unexpectedly when a switch occurs.
対応してないと Apple Watch を切り替えた時に予期せず終了(クラッシュ?)するぞ的な文言も。
以上