[go: up one dir, main page]

Skip to content

johnspurlock/app-privacy-report-viewer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

app-privacy-report-viewer

Local viewer for App Privacy Reports in iOS 15

iOS 15 introduces a new feature in Privacy Settings called Record App Activity.

When enabled, you can save Save App Activity to dump the data to a newline-delimited json file of the form App_Privacy_Report_v4_<time>.ndjson

e.g.

{
  "stream": "com.apple.privacy.accounting.stream.tcc",
  "accessor": { "identifier": "com.google.ProjectFi", "identifierType": "bundleID" },
  "tccService": "kTCCServiceAddressBook",
  "identifier": "BE766661-F44C-46F8-A3E5-258FAE68D603",
  "kind": "event",
  "timestamp": "2021-06-09T14:19:48.270-05:00",
  "version": 3
}

This tool is a simple app to import these files and display them in a web interface running on your local computer.

To get started:

  • Ensure deno is installed (it's easy to install)
  • Run deno run --allow-net --allow-env --allow-read=.,`which deno` --allow-write=. https://raw.githubusercontent.com/johnspurlock/app-privacy-report-viewer/v0.8/src/app.ts
  • Open the locally-running web app at http://localhost:8015
  • Drag and drop your App_Privacy_Report_v4_<time>.ndjson file into the web app

If you encounter an error with the deno run command (which constrains to minimum os permissions) on your particular os/shell, try a less-restrictive alternate:

  • deno run --allow-net --allow-env --allow-read --allow-write https://raw.githubusercontent.com/johnspurlock/app-privacy-report-viewer/v0.8/src/app.ts

Once imported, you can filter by filename, date, type of access, and bundleId (app).

For example, filter to all activity from the Apple Podcasts app: http://localhost:8015/?bundleId=com.apple.podcasts

Screenshot of webapp


The data never leaves your machine, it's stored locally in a sqlite db called reports.db in your run directory, so you can open it for custom queries with any standard sqlite client like DB Browser for SQLite.

All processing is done on your local machine (should be able to run it offline after first launch), and the code is available here on github for full transparency.