
Apple や Google、LinkedIn、Path などの企業は、プライバシーがユーザー情報と同義であることを認識しており、この iDevice メーカーは、iOS 6 でアプリが機密情報にアクセスする前にユーザーの許可を求めることで、ようやく誤りを正そうとしている。
議会、規制当局、そして消費者擁護団体は今年初め、アプリがユーザーに事前に通知したり許可を求めたりすることなく、連絡先リスト全体などのデータをサーバーにアップロードしている事実に気づきました。Appleは2月、この騒動を受けて、今後のソフトウェアリリースではユーザーの明示的な承認が必要になると発表しました。
それから間もなく、AppleはOSX Mountain Lionのベータ版をリリースしました。なんと、アプリはデータの切り取りを行う前に許可を求め、ユーザーに警告を出すことが義務付けられました。そして今、iOS 6でも同じことが行われます。
リリースノートの「セキュリティ」セクションによると、
iOS 6 では、Apple のデータ分離プライバシー イニシアチブの一環として、カレンダー、リマインダー、連絡先、写真がシステムによって保護されるようになりました。
アプリがこれらのデータタイプにアクセスしようとすると、アクセスダイアログが表示されます。ユーザーは「設定」>「プライバシー」でアクセスのオン/オフを切り替えることができます。
開発者が、データが要求されている理由をユーザーに理解してもらうためにユーザーに表示される「目的」文字列を設定できる API が利用可能です。
この機能を使用する開発者を支援するために、EventKit およびアドレス ブック フレームワークに変更が加えられました。
Appleは、世界開発者会議(WWDC)の基調講演でiOS 6のプレビュー版を発表しました。現在は開発者向けベータ版ですが、一般公開は今秋を予定しています。
完全なリリースノートは以下の通りです。
関連記事
- Pathがユーザーの保存したアドレス帳データを削除、オプトインアップデートをリリース。CEOが謝罪
- Apple、法廷に:iPhoneデータ収集、Samsung/iPad特許訴訟、iTunes二重請求
- あなたのiOSデバイスはiOS 6の新機能をすべて利用できるでしょうか?公式発表はこちら
iOS 6 向け OS SDK リリース ノート
注記と既知の問題
以下の問題は、6.0 SDK を使用してコードを開発する場合に関係します。Apple TV
画面の解像度が間違っている場合があります。正しい解像度に戻すには、Apple TV を再起動してください。Netflix
ビデオは、中断したところから再開されないことがあります。
一部のビデオは、早送りまたは巻き戻し後に再開されないことがあります。リモコンのメニュー ボタンを押してビデオを
元に戻し、もう一度再生してください。再生/一時停止ボタンでは、バックグラウンドで再生中の音楽は一時停止されないことがあります。音楽を一時停止するには、[再生中] 画面に移動します 。YouTube
アプリを終了して再度起動すると、履歴リストは 消去されます。Bonjour NSNetService クラスと CFNetService API には、デフォルトでは P2P インターフェイスが含まれていません。P2P インターフェイスを介してサービスを参照、登録、または解決するには、アプリは以下に示す Bonjour DNSService*() API を 使用する必要がありますP2P インターフェースを含めるには、kDNSServiceInterfaceIndexAny を使用するときに kDNSServiceFlagsIncludeP2P フラグを設定するか、interfaceIndex を kDNSServiceInterfaceIndexP2P に設定する必要があります。影響を受ける API は次のとおりです: DNSServiceBrowse DNSServiceRegister DNSServiceResolve DNSServiceRegisterRecord DNSServiceQueryRecord Game Center ピアツーピア接続は、デバイスが二重 NAT トポロジの背後にある場合、AT&T と Verizon ネットワーク間で接続している場合、または国際通信事業者に接続している場合など、特定のネットワーク条件下では機能しません。 Game Center の友達リクエスト UI が最大 10 秒間ハングし、応答しなくなる場合があります。アプリケーションを終了して再起動すると、この問題は解決します。 Game Center サンドボックス環境以外でアプリ内でゲームの招待または自動マッチ UI を表示すると、アプリがクラッシュする可能性があります。 サンドボックスを使用しているゲームは影響を受けません。 ターン制ゲームにおけるターンタイムアウトは、GKTurnBasedMatchのendTurnWithNextParticipants:turnTimeout:matchData:completionHandler:メソッド呼び出し時に指定された値の1/1000になります。これは将来のシードで修正される予定です。Game Center対応アプリをiOSシミュレータで実行する場合、Game Centerにログインする開発者は、ライブプロダクションサーバーとデータとやり取りします。 この問題を回避するには、新規プロジェクトやiTunesConnectメタデータを必要とするプロジェクトに取り組む開発者は、シミュレータではなく実際のデバイスで作業する必要があります。既にApp Storeでアプリを公開しており、シミュレータを使用して開発したい開発者は、iOS 6の新機能を使用できますが、ライブプロダクションのプレイヤー、スコア、実績とやり取りしていることに注意する必要があります 。iCloud
iCloud アカウントを作成する際は、MobileMe アカウントではなく完全なメール アドレスであれば、任意の Apple ID を使用できます。MobileMe アカウントをお持ちの場合は、そのアカウントを iCloud に移動する必要があります。Mobile Me は 2012 年 6 月 30 日まで利用できますが、iOS 6 では MobileMe アカウントでのログインはサポートされていません。詳細については、http://me.com/move を参照してください。iOS
Provisioning Portal で、iCloud のプロビジョニング プロファイルを有効にする必要があります。iCloud のプロビジョニング プロファイルを有効にするには、iOS Provisioning Portal の App ID セクションに移動し、iCloud の App ID を構成します。iCloud の App ID を有効にした後、プロビジョニング プロファイルを再生成して iCloud で有効にします。NSMetadataQuery
の setSortDescriptors: メソッドはサポートされていません。iOS
6 では、データ保護によって保護されているファイルは、iCloud ストレージ API で使用できません。
ファイル名は、OS X では大文字と小文字が区別されませんが、iOS では大文字と小文字が区別されます。これにより、iCloud を使用して 2 つのプラットフォーム間でファイルを共有するときに問題が発生する可能性があります。大文字と小文字のみが異なる名前のファイルを作成しないように、iOS で手順を実行する必要があります。
初期セットアップ中に新しいアカウントが作成されると、セットアップ アシスタントがクラッシュします。アカウントは実際に作成され、ユーザーはその後ログインして使用できます。既存のアカウントではクラッシュは発生しません。
iMessage と FaceTime
デバイスを消去して復元する場合、iMessage で添付ファイルを送信するにはデバイスを再起動する必要があります。
iMessage または FaceTime のパスワードを変更する場合は、設定でこれらのサービスのオンとオフを切り替える必要があります。
iMessage の場合は、設定 > メッセージ > iMessage スイッチを切り替えます。
FaceTime の場合は、設定 > FaceTime > FaceTime スイッチを切り替えます。 スピーカーフォンまたはヘッドホンを使用しているときに画面が暗くなると、通話中に
IOKit SpringBoard/BackBoard がクラッシュすることがあります。 iTunes iOS SDK 6.0 には iTunes 10.6.3 が必要です。 iOS 6 および iTunes 10.6.3 との Wi-Fi 同期は、デバイスがロックされていて電源に接続されていない場合は機能しません。電源に接続されていても失敗することがあります。その場合は、デバイスを再起動すると問題が解決する可能性があります。 マップ iOS 6以降、Map KitはAppleがホストする新しいインフラストラクチャ上に構築されています。以前のiOSリリースでは、引き続きGoogleのサービスを使用します。API の互換性は維持されます(下記の既知の問題を参照)。 マップはシミュレータでサポートされるようになりました。 マップデータは今後も進化し続けますが、現在利用可能な高解像度の衛星画像は限られています。 マップがバックグラウンドで実行されていない場合、サードパーティ製アプリから起動すると「マップはインターネットに接続できません」というエラーが表示されます。
マップがまだ起動されていない場合、サードパーティ製アプリから起動したときに現在地は表示されません。
開発中にカバレッジ ファイルを指定しないルート検索アプリは、常にマップのルート検索の検索結果に表示されます。ルート検索
アプリのカバレッジ ファイルのテストとデバッグは、開発中の Xcode の「実行」ワークフローを通じてのみサポートされます (特定の実行スキームのカバレッジ ファイルは、スキーム エディタの [実行] セクションの [オプション] ペインで指定できます)。アーカイブされてデバイスに配布されたアプリ (App Store 以外) は、アプリのカバレッジ ファイルにアクセスできません。
マップは、サードパーティ製アプリから起動された場合、現在地を拡大表示しません。
ムービー プレーヤー
iCloud バックアップからビデオを復元した後、すべてのタイトルのビデオのサムネイルに、それぞれ独自のポスター イメージが表示されるのではなく、同じポスター イメージ (リスト内のタイトルの 1 つから取得) が表示されます。
セキュリティ
iOS 5 では、MD5 署名を使用した証明書の署名はサポートされていません。証明書で SHA1 または SHA2 に基づく署名アルゴリズムが使用されていることを確認してください。
iOS 6 では、Apple のデータ分離プライバシー イニシアティブの一環として、カレンダー、リマインダー、連絡先、写真がシステムで保護されるように
なりました。アプリがこれらのデータ タイプにアクセスしようとすると、アクセス ダイアログが表示されます。ユーザーは、[設定] > [プライバシー] でアクセスのオンとオフを切り替えることができます。
開発者が、ユーザーのデータが要求されている理由をユーザーが理解できるように表示される「目的」文字列を設定できる API があります。
この機能で開発者を支援するために、EventKit およびアドレス帳フレームワークに変更が加えられています。
シミュレーター
Retina iOS シミュレーターのナビゲーション コントローラーの戻るボタンが正しくレンダリングされません。iOS
シミュレーターでアプリ削除確認アラート パネルが表示されるまでしばらく時間がかかります。iOS シミュレーター
で SKStoreProductViewController オブジェクトのビューで購入ボタンをタップすると、アプリがクラッシュします。iOS シミュレーター
では、写真、連絡先、カレンダー、リマインダーにアクセスするアプリのプライバシー アラートは表示されません。iOS シミュレーター
でのアプリ内購入のホスト コンテンツのダウンロードはサポートされていません。
シミュレーターでMP3サウンドを再生しようとすると、ポップ音が鳴ります。
共有フォトストリームの
ユーザーは、「設定」>「iCloud」にアクセスして、共有フォトストリームの通知を受け取るようにする必要があります。iOS
6ベータ版でフォトストリームを共有するには、iCloudメールアドレスを使用して招待する必要があります。そうしないと、招待が届きません。
ソーシャル
Weiboは、中国語キーボードが有効になっている場合にのみ設定アプリに表示されます。
アプリでアカウント フレームワークを介して Facebook アカウントにアクセスするには、アプリの Info.plist ファイルに ACFacebookClientAccessInfo キーを含める必要があります。このキーの内容は、追加キーの辞書です。次に例を示します。
ACFacebookClientAccessInfoACFacebookAppIdKey
あなたの Facebook アプリ ID
ACFacebookAppVersionKey
1.0
ACFacebookPermissionGroupKey
read_write
ACFacebookPermissionsKeyFacebook 権限キーACFacebookPermissionsKey キーに指定する値は、要求している権限 (Facebook サービスによって定義) です。ACFacebookPermissionGroupKey キーの値は、read、write、または read_write です。
Passbook
すべての交通機関の種類で、出発地と目的地の間に飛行機のアイコンが表示されます。
SpringBoard は、パスの取り込み中に ShoeboxUIService を一時停止することがあります。回避策は、パスの取り込みを再度試すことです。
UIKIT
5.1 では、UISplitViewController クラスは、左側のビューを表示する際にスライド表示スタイルを採用しています (以前はメールでのみ見られました)。このスタイルは、デリゲート メソッドによって提供される既存のバー ボタン アイテム、または右ビュー内でのスワイプ ジェスチャによってプレゼンテーションが開始されるときに使用されます。この動作を実現するために追加の API を採用する必要はありません。デリゲートによって提供される UIPopoverController インスタンスの API を含むすべての既存の API は、これまでどおりに動作し続けます。ジェスチャがアプリでサポートされない場合は、分割ビュー コントローラの presentsWithGesture プロパティを NO に設定すると、ジェスチャが無効になります。ただし、ジェスチャを使用するとすべてのアプリで一貫したユーザー エクスペリエンスが維持されるため、ジェスチャを無効にすることは推奨されません。iOS
6 では、UIControl オブジェクトで適切に動作するように、デリゲートを設定してシングル フィンガー ジェスチャおよびシングル タップ ジェスチャ認識メソッドを実装する必要がないように変更されました。iOS
6 以降では、UIWebView クラスはコンテンツを非同期に描画します。UIScrollView オブジェクト
を使用して Auto Layout を試している開発者は、Retina ディスプレイ搭載デバイスのスクロール インジケーターのジッターに気付くかもしれません。
iOS 6では、UIViewControllerのshouldAutorotateToInterfaceOrientation:メソッドは非推奨となりました。代わりにsupportedInterfaceOrientationsメソッドを使用してください。
ビューコントローラがsupportedInterfaceOrientationsメソッドをオーバーライドしていない場合、UIKitはアプリのデリゲートまたはアプリのInfo.plistファイルからデフォルトの回転を取得します。
ビューコントローラに shouldAutorotateToInterfaceOrientation: メソッドのみを実装した場合、UIKit はそのメソッドを複数回連続して呼び出し、supportedInterfaceOrientations メソッドによって提供されるものと同等の情報を取得します。これは互換性のためだけに行われます。アプリは新しい API に切り替えて、多くの内部改善点を活用することをお勧めします。
この新しい動作はデフォルトで無効になっています。アプリで新しい API をテストするには、アプリの起動時に UIApplicationSupportedInterfaceOrientationsIsEnabl ed 起動引数に YES を指定する必要があります。これは Xcode のプロジェクト スキーマ エディタで実行できます。特定の状況では、Auto Layout システムがビューに対して自動的に作動しないことがあります。この問題を回避するには、ビューの requiresConstraintBasedLayout クラス メソッドをオーバーライドし、実装から YES を返します。willRotateToInterfaceOrientation
:duration:、willAnimateRotationToInterfaceOrientation:duration:、および didRotateFromInterfaceOrientation: メソッドは、presentViewController:animated:completion: を呼び出すなどして、それ自体の上に全画面表示を行うビュー コントローラでは呼び出されなくなりました。
アプリがこれらのメソッドを使用してサブビューのレイアウトを管理していないことを確認する必要があります。代わりに、ビュー コントローラの viewWillLayoutSubviews メソッドを使用し、ビューの境界矩形を使用してレイアウトを調整する必要があります。iOS
6 では、UIViewController の viewWillUnload メソッドと viewDidUnload メソッドは非推奨になりました。これらのメソッドを使用してデータを解放していた場合は、代わりに didReceiveMemoryWarning メソッドを使用してください。このメソッドを使用すると、ビュー コントローラのビューが使用されていない場合にそのビューへの参照を解放することもできます。これを行う前に、ビューがウィンドウ内にないことをテストする必要があります。NSFontAttributeName
属性の値を指定せずに NSString 描画メソッドのいずれかを呼び出すと、例外がスローされる可能性があります。回避策は、NSAttributedString オブジェクトを描画またはサイズ設定する前に、NSFontAttributeName キーの値を設定することです。attributedText
プロパティに有効な属性付き文字列が含まれる UILabel オブジェクトの shadowOffset プロパティまたは shadowColor プロパティの値を設定することはサポートされていません。代わりに、属性付き文字列の NSShadowAttributeName 属性を使用して影を設定してください。NSTextAlignmentNatural
値はサポートされておらず、将来のシードで削除される予定です。Safari
と WebKit
iOS 上の WebKit では、こちらで説明されているように、JavaScript の requestAnimationFrame メソッドと cancelAnimationFrame メソッドがサポートされるようになりました。
仕様はまだワーキングドラフト段階であるため、これらのメソッドにはwebkitというプレフィックスが付きます(window.webkitRequestAnimationFrame、window.webkitCancelAnimationFrame)。
デフォルトのアプリキャッシュクォータが5MBから25MBに増加しました。JPEG
サブサンプリングのしきい値が、iPhone 3GSとiPod touch(第4世代)を除くすべてのサポート対象ハードウェアで2MP(メガピクセル)から5MPに増加しました。Web
フォームのタグのサポートが追加されました。ユーザーはフォトライブラリから既存の写真や動画をアップロードしたり、カメラを使って写真や動画を撮影したりできます。以前は、このフォームコントロールは常に無効でした。
OS X の Safari 6.0 では、開発者は接続された iOS デバイスおよび iOS シミュレータで Web インスペクタ (Web 開発ツール) を使用できるようになりました。開発者は Web インスペクタを使用して、Xcode からビルドおよび実行する独自のアプリで Safari および UIWebView クラスをデバッグできます。これは、Safari のデバッグ コンソール バナー
に代わるものです。iOS 6 以降では、UIWebView オブジェクトからの Web データ (SQL Web Storage および LocalStorage) を、バックアップされるディレクトリに保存できます。このデータのバックアップを有効にするには、アプリのユーザー デフォルトで WebKitStoreWebDataForBackup キーを YES に設定します。これは、アプリが再読み込みできない Web コンテンツ データに依存している場合にのみ行う必要があります。UIWebView オブジェクトが任意の Web コンテンツへのリンクを開く場合は、このキーを NO に設定する必要があります。このキーの値を切り替えても、既存の Web ビュー データは保持されません。iOS
6 以降では、Safari は共通 RSS/ATOM スキーム フィードに登録しなくなりました。これらの種類のフィードを表示できるアプリは、そのURLスキームに登録することをお勧めします。iOS
6ベータ1では、Safariのスマートアプリバナーに、アプリのApp Store情報がWebコンテンツの上に表示されます。このシードでは、スマートアプリバナーのアプリ起動UIと機能部分は利用できません。
ユーザーエクスペリエンス:
高速入力中にキーのクリック音がスキップされることに気付く場合があります。
キーボードを横向きに表示してからデバイスを縦向きにすると、キーボードの位置がずれてしまいます。キーボードを閉じて縦向きに戻すと、問題は解決するはずです。この問題はiOS 6ベータ1にのみ影響し、後続のリリースで修正される予定です。
havebin.com を Google ニュース フィードに追加します。
FTC: 収益を生み出す自動アフィリエイトリンクを使用しています。詳細はこちら。