3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[iOS]予期せぬTCCAccessRequest エラーに注意

Last updated at Posted at 2018-12-28
1 / 13

これはSWWDC39 発表用のネタを再構成したものです

仙台iOS開発者コミュニティ SWWDC39 - 忘年LT会 - connpass


TCCAccessRequestエラー

iOS10 から実装されたセキュリティ制限

[iOS 10] 各種ユーザーデータへアクセスする目的を記述することが必須になるようです | DevelopersIO

記述が無いと、容赦なくアプリが落ちます。

 TCCAccessRequest_block_invoke

使用例

カメラの使用、フォトライブラリの参照などを行う場合、info.plistに説明文の記述が必要。

  • カメラ : NSCameraUsageDescription
  • フォトライブラリ : NSPhotoLibraryUsageDescription

  • iOS SDKに用意されている、標準的な画面でも各種ユーザーデータへアクセスするものがある
  • この場合でも、plistに記述がないと、容赦無くアプリが落ちる

罠1 : WKWebView

Webサイトを表示するView

webview.png

WKWebViewで必要なアクセス権限

  • NSPhotoLibraryUsageDescription ... !?
  • NSPhotoLibraryAddUsageDescription ... !?

Why?

  • webページ内の画像を長押しすると「フォトライブラリに画像を保存」ができる
  • フォトライブラリへのアクセス許可がないと、アプリが落ちる
webview_image.png

罠2 : EKEventEditViewController

本体カレンダーのイベントを編集するView
EKEventEditViewController.png


EKEventEditViewControllerで必要なアクセス権限

  • NSCalendarsUsageDescription ... わかる
  • NSLocationWhenInUseUsageDescription ... !?
  • NSContactsUsageDescription ... !?

Why Location?

  • カレンダーイベントの"場所"を編集できる
EKEventEditViewController_point.png

Why Contact?

  • カレンダーイベントの"場所"を検索するとき、"連絡先"内の住所を参照する
EKEventEditViewController_contact.png

まとめ

  • 一見無関係なセキュリティ許可が不足していて、アプリが落ちる場合がある
    • 「WebViewで画像を保存すると落ちる」とか、正直、わからんです
  • Crashレポートに以下が出ていないか注意しましょう
    • "TCCAccessRequest_block_invoke"
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?