この記事では、iOS 9 の既存のフレームワークに対する追加のマイナー変更や機能強化について説明します。
iOS の主要な変更に加えて、Apple は iOS 9 のいくつかの既存のフレームワークを変更および改善しました。
AVFoundation フレームワークの追加
AVFoundation フレームワークでは、AVSpeechSynthesisVoice クラスを使用して、言語に加えて識別子で音声を指定できるようになりました。
たとえば、次のコードは、使用可能なすべての音声の一覧を取得します。
var voices = AVSpeechSynthesisVoice.GetSpeechVoices ();
その後、AVSpeachUtterance クラスのインスタンスの Voice
プロパティとして設定することで、一覧の音声のいずれかを使用できます。
AVQueuePlayer クラスでは、インターネット ストリーミングと、キュー内のファイルベース メディアの組み合わせがサポートされるようになりました。 以前のバージョンでは、同じ種類のメディアのみをキューに入れることができました。
詳細については、Apple の AVSpeechSynthesisVoice リファレンスを参照してください。
AVKit Framework の追加
新しいピクチャ イン ピクチャ (PIP) 機能を使用するために、AVKit フレームワークには新しい AVPictureInPictureController
クラスと AVPlayerViewController クラスが含まれています。
- AVPictureInPictureController - このクラスを使用すると、iOS 9 アプリは、iPad 上のサイズ変更可能なフローティング PIP ウィンドウでビデオの再生を起動しているユーザーに応答できます。
- AVPlayerViewController - iPad 上のサイズ変更可能なフローティング PIP ウィンドウでビデオを表示するために使用される
AVPlayer
コントローラーを管理します。
詳細については、「iPad のマルチタスキング」の説明と、Apple の AVPictureInPictureController リファレンスと AVPlayerViewController リファレンスを参照してください。
CloudKit Web サービスの概要
CloudKit フレームワークは、iCloud にアクセスするアプリケーションの開発を効率化します。 これには、アプリケーション データと資産権限の取得と、アプリケーション情報を安全に格納できることが含まれます。 このキットは、個人情報を共有することなく、iCloud ID を使用してアプリケーションにアクセスできるようにすることで、ユーザーに匿名性を提供します。
新しい CloudKit Web サービス フレームワークは、Web サイトに組み込むことができる JavaScript ライブラリ (CloudKit JS) を提供し、Xamarin.iOS アプリと同じ CloudKit ベースのデータとコンテンツにアクセスできるようにします。
重要
CloudKit JS を使用して CloudKit データベースからコンテンツにアクセス、提示、または更新する前に、そのデータベースのスキーマを事前に定義しておく必要があります。
詳細については、次のドキュメントを参照してください。
- CloudKit の概要 - Xamarin.iOS アプリでの CloudKit の使用の概要。
- CloudKit クイック スタート - Apple による CloudKit の概要。
- CloudKit JS リファレンス - Apple による CloudKit JS ドキュメント。
- CloudKit カタログ: CloudKit (Cocoa と JavaScript) の概要 - CloudKit と CloudKit JS を使用した Apple のサンプル アプリ。
重要
Apple からは、開発者が欧州連合の一般データ保護規則 (GDPR) を適切に処理するためのツールが提供されています。
Foundation フレームワークの追加
Apple によって、iOS 9 の Foundation フレームワークに次の変更が追加されました。
NSBundle の変更
iOS 9 の NSBundle クラスに対して、次の変更が行われました。
GetPreservationPriorityForTag (NSString tag)
- 指定されたタグを持つリソースの現在の保持優先度を取得します。 有効な値は0.0
から1.0
の範囲で、優先順位が最も低いリソースが最初に消去されます。SetPreservationPriorityForTag (double priority, NSSet tags)
- 指定されたタグを持つリソースの現在の保持優先度を設定します。 有効な値は0.0
から1.0
の範囲で、優先順位が最も低いリソースが最初に消去されます。
詳細については、Apple の NSBundle リファレンスを参照してください。
NSProcessInfo への変更
iOS デバイスで実行されている各プロセスには、プロセス情報エージェント (PIA) が 1 つ含まれます。 NSProcessInfo クラスを使用して、現在の PIA に関する情報を提供し、特定のプロセスの電力と熱管理を制御します。
たとえば、プロセスの自動終了を制御するには、次のコードを使用できます。
// Disable automatic termination
var activity = NSProcessInfo.ProcessInfo.BeginActivity(NSActivityOptions.AutomaticTerminationDisabled, "Define reason for change here...");
// Perform the required task
...
// Return to normal operation
NSProcessInfo.ProcessInfo.EndActivity(activity);
詳細については、Apple の NSProcessInfo リファレンスを参照してください。
低電力モードへの対応
NSProcessInfo クラスの LowPowerModeEnabled
プロパティを使用して、アプリが実行されている iOS デバイスで低電力モードが有効になっているかどうかを判断します。 次に例を示します。
// Is the device in low power mode?
if (NSProcessInfo.ProcessInfo.LowPowerModeEnabled) {
// Reduce activity to conserve energy...
} else {
// Return to normal activity...
}
HealthKit フレームワークの変更
Apple によって、iOS 9 の HealthKit フレームワークに次の変更が追加されました。
- HealthKit データベース内のエントリの一括削除と削除追跡のサポート。 詳細については、Apple の HKDeletedObject、HKAnchoredObjectQuery、および HKHealthStore クラス リファレンスを参照してください。
- 新しい追跡カテゴリと特性が、
HKQuantityTypeIdentifier
クラス (UVExposure
など) とHKCategoryTypeIdentifier
クラス (OvulationTestResult
など) に追加されました。
Xamarin.iOS での HealthKit の操作の詳細については、HealthKit の概要に関するドキュメントを参照してください。
ローカル認証フレームワークの変更
Apple によって、iOS 9 のローカル認証フレームワークに次の変更が追加されました。
- LAContext クラスの
EvaluateAccessControl
メソッドとEvaluatePolicy
メソッドを使用して、以前に成功したロック解除の試行からタッチ ID の一致を再利用できるようになりました。 - 現在登録されている指の一覧を取得する機能。
- 指が認証に追加または削除されたときの追跡のサポート。
- キーチェーン呼び出しで認証コンテキストを使用する機能と、キーチェーン アクセス制御リストの評価のサポート。
- コードからユーザー プロンプトを取り消す機能。
詳細については、「Xamarin.iOS での Touch ID と Face ID」を参照してください。
LAContext の変更
iOS 9 の LAContext クラスに対して、次の変更が行われました。
- TouchIdAuthenticationMaximumAllowableReuseDuration - タッチ ID 認証を再利用できる最大時間を返します。
- EvaluatedPolicyDomainState - 評価されたポリシーの状態を取得または設定します。
- MaxBiometryFailures - iOS 9 で非推奨になりました。
- TouchIdAuthenticationAllowableReuseDuration - タッチ ID 認証を再利用できる時間を取得または設定します。
- EvaluateAccessControl - 認証ポリシーを非同期的に評価します。
- Invalidate - 特定のタッチ ID 認証を無効にします。
- IsCredentialSet - 資格情報が現在設定されている場合は
true
を返します。 - SetCredentialType - 指定された資格情報の種類を設定します。
詳細については、Apple の LAContext リファレンスを参照してください。
MapKit フレームワークの変更
Apple によって、iOS 9 の MapKit フレームワークに次の変更が追加されました。
- MapKit では、マップ アプリを乗り換えルート案内で直接起動し、MKLaunchOptions クラスと MKDirections クラスを使用して乗り換えの到着推定時間 (ETA) のクエリを実行できるようになりました。
- MapKit と CLGeocoder クラスによって返される検索結果は、結果のタイム ゾーンを提供することもできます。
- MKAnnotationView クラスの
DetailCalloutAccessoryView
プロパティを使用して、iOS アプリによって表示されるマップ注釈を完全にカスタマイズできるようになりました。
Xamarin.iOS でのマップと注釈の操作の詳細については、iOS のマップとチュートリアル - MapKit の注釈とオーバーレイの探索に関するドキュメントを参照してください。詳細については、Apple の CLGeocoder リファレンスを参照してください。
PassKit フレームワークの追加
Apple によって、iOS 9 の PassKit フレームワークに次の変更が追加されました。
- Apple Pay では、ストア デビット カードとクレジット カードの両方が Discover カードと共にサポートされるようになりました。 詳細については、Apple の PKPaymentRequest クラス リファレンスの支払いネットワークに関するセクションを参照してください。
- Xamarin.iOS アプリ内から直接 Apple Pay に支払いネットワークとカード発行者を追加できるようになりました。 詳細については、Apple の PKAddPaymentPassViewController クラス リファレンスを参照してください。
Xamarin.iOS での PassKit の操作の詳細については、PassKit の概要に関するドキュメントを参照してください。
Safari サービス フレームワークの追加
Apple によって、iOS 9 の Safari サービス フレームワークに次の変更が追加されました。
- 新しい SFSafariViewController クラスを使用して、Xamarin.iOS アプリ内に Web コンテンツを表示できるようになりました。 これによって、Safari アプリと Web サイトのデータと Cookie を共有する機能が提供され、Safari のいくつかの機能 (リーダーやオートフィルなど) が含められています。 SFSafariViewController には、Web コンテンツの表示が完了したときにユーザーをアプリに戻す [完了] ボタンがあります。
SFSafariViewController クラスは Web コンテンツの単一ページを表示するように調整されているため、それを使用して、既存の Xamarin.iOS アプリ内のすべての WKWebKit コントロールまたは UIWebView コントロールを置き換えることを検討する必要があります。
Web サイトの表示
次のコードは、別のビュー コントローラー内から SFSafariViewController を呼び出す例です。
// Create an instance of the Safari Services View Controller
var controller = new SFSafariViewController(new NSUrl("http://www.xamarin.com"));
// Display website
PresentViewController(controller, true, null);
UIKit フレームワークの変更
Apple によって、iOS 9 用 UIKit フレームワークのいくつかの要素に多くの機能強化が追加されました。 以降のセクションでは、これらの変更について詳しく説明します。
3D Touch イベント
iOS 9、iPhone 6s、iPhone 6s Plus の新機能である 3D Touch では、iOS アプリに感圧性ジェスチャが追加されます。 その結果、アプリが iOS 9 (またはそれ以上) で実行されていて、iOS デバイスが 3D Touch をサポートできる場合、圧力の変化によって TouchesMoved
イベントが発生します。
この動作の変更により、X/Y 座標が変更されていない場合でも、iOS アプリは TouchesMoved
イベントがより頻繁に呼び出されることに対して準備する必要があります。
詳細については、3D Touch の概要に関するガイドを参照してください。
ドキュメントのインプレースオープン機能
UIApplicationDelegate クラスの FinishedLaunching (application, launchOptions)
メソッドまたは WillFinishLaunching (Application, launchOptions)
メソッドを使用して、(コピーで作業するのではなく) インプレースでドキュメントを開き、変更できるようになりました。
新しいインプレースオープン機能をサポートするには、Xamarin.iOS アプリの Info.plist ファイルに LSSupportsOpeningDocumentsInPlace
キーを値 YES
として追加します。
詳細については、Apple の UIApplicationDelegate リファレンスを参照してください。
拡張タッチ イベント
Apple は、iOS 9 のタッチ イベントにいくつかの機能強化を提供しています。 これには、タッチ予測を使用したり、ディスプレイの更新間の中間タッチにアクセスしたりする機能が含まれます。
詳細については、Apple の iOS イベント処理ガイドを参照してください。
カスタマイズされたコンテンツのフェッチ
新しい NSDataAsset
クラスを使用すると、Xamarin.iOS アプリは、現在実行されている iOS デバイスのメモリとグラフィック機能に合わせて調整されたコンテンツをフェッチできます。
新しいレイアウト アンカー
新しい NSLayoutAnchor
と NSLayoutDimension
レイアウト アンカー クラスは、UIView クラスの新しいアンカー プロパティ (LeadingAnchor
や WidthAnchor
など) と連携して、iOS 9 でのレイアウトを容易にします。
Xamarin.iOS アプリでの AutoLayout クラスと Size クラスの操作の詳細については、統合ストーリーボードの概要に関するドキュメントを参照してください。詳細については、Apple の NSLayoutAnchor リファレンス、NSLayoutDimension リファレンス、UIView リファレンスを参照してください。
新しい読み取り可能なコンテンツの余白
新しい UILayoutGuide
クラスを使用して、読み取り可能なコンテンツの余白を提供し、ビュー内のコンテンツの描画領域を定義できます。 詳細については、Apple の UILayoutGuide リファレンスを参照してください。
通知のテキスト入力の変更
UIUserNotificationAction クラスには、通知からのテキスト入力をサポートするために使用できる新しい Behavior
プロパティがあります。
UIApplicationDelegate の変更
Apple によって正式に非推奨になったわけではありませんが、UIApplicationDelegate クラスの FinishedLaunching (UIApplication application)
メソッドへのすべての呼び出しを、FinishedLaunching (UIApplication application, NSDictionary launchOptions)
または WillFinishLaunching (UIApplication application, NSDictionary launchOptions)
のいずれかのメソッドに置き換えることが推奨されています。
詳細については、Apple の UIApplicationDelegate リファレンスを参照してください。
UIKit Dynamics の変更
Apple によって、iOS 9 の UIKit Dynamics に次の変更が追加されました。
- Dynamics では、四角形以外の衝突境界がサポートされるようになりました。
- 新しいカスタマイズ可能な
UIFieldBehavior
クラスは、さまざまなフィールドの種類をサポートするために使用されます。 - 追加の添付ファイルの種類が
UIAttachmentBehavior
クラスに追加されました。
詳細については、Apple の UIAttachment リファレンスを参照してください。
UIPickerView と UIDatePicker の変更
iOS 9 より前は、UIPickerView コントロールと UIDatePicker コントロールはサイズ変更できず、コンテナーの幅 (通常はアプリが実行されていた iOS デバイスの幅) を満たすように自動的にサイズ変更されていました。
iOS 9 では、この自動サイズ変更は行われなくなり、画面のサイズと向きに関係なく、すべての iOS デバイスでコントロールが 320 ポイント幅でレンダリングされます。
この状況を修正するために、Autolayout クラスと Size クラスを使用して、コントロールの幅を親コンテナー (ビュー) の端にピン留めし、必要な高さを指定します。 Xamarin.iOS アプリでの Autolayout クラスと Size クラスの操作の詳細については、統合ストーリーボードの概要に関するドキュメントを参照してください。
新しい UITextInputAssistantItem クラス
新しい UITextInputAssistantItem
クラスを使用して、ショートカット バーのバー ボタン グループをレイアウトします。 ショートカット バーは、入力ショートカットを提供するためにソフト キーボードで使用できる新しい領域です。