これはSWWDC39 発表用のネタを再構成したものです
仙台iOS開発者コミュニティ SWWDC39 - 忘年LT会 - connpass
TCCAccessRequestエラー
iOS10 から実装されたセキュリティ制限
記述が無いと、容赦なくアプリが落ちます。
TCCAccessRequest_block_invoke
使用例
カメラの使用、フォトライブラリの参照などを行う場合、info.plistに説明文の記述が必要。
- カメラ : NSCameraUsageDescription
- フォトライブラリ : NSPhotoLibraryUsageDescription
罠
- iOS SDKに用意されている、標準的な画面でも各種ユーザーデータへアクセスするものがある
- この場合でも、plistに記述がないと、容赦無くアプリが落ちる
罠1 : WKWebView
Webサイトを表示するView
WKWebViewで必要なアクセス権限
- NSPhotoLibraryUsageDescription ... !?
- NSPhotoLibraryAddUsageDescription ... !?
Why?
- webページ内の画像を長押しすると「フォトライブラリに画像を保存」ができる
- フォトライブラリへのアクセス許可がないと、アプリが落ちる
罠2 : EKEventEditViewController
EKEventEditViewControllerで必要なアクセス権限
- NSCalendarsUsageDescription ... わかる
- NSLocationWhenInUseUsageDescription ... !?
- NSContactsUsageDescription ... !?
Why Location?
- カレンダーイベントの"場所"を編集できる
Why Contact?
- カレンダーイベントの"場所"を検索するとき、"連絡先"内の住所を参照する
まとめ
- 一見無関係なセキュリティ許可が不足していて、アプリが落ちる場合がある
- 「WebViewで画像を保存すると落ちる」とか、正直、わからんです
- Crashレポートに以下が出ていないか注意しましょう
- "TCCAccessRequest_block_invoke"