読者です 読者をやめる 読者になる 読者になる

ObjecTips

基本Objective-Cで iOS とか OS X とか

iOS 9.3 β3 API Diffs

Tips iOS 9.3 API Diffs iOS 9 HealthKitUI MapKit CloudKit MediaPlayer StoreKit

β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

CKOperationlongLived というプロパティとその関連のAPIが追加された。
Long-Lived については以下

CKOperation Class Reference

アプリを閉じた後も動く!との事。
以前は 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 を切り替えた時に予期せず終了(クラッシュ?)するぞ的な文言も。

以上