🔍
Privacy Manifest対応: 理由が求められるAPIを使っているか探すスクリプトを書いた
いよいよ Privacy Manifest 対応が求められる時期が近づいているが各位いかがお過ごしだろうか。
App Storeへの提出におけるプライバシー要件のアップデート - 最新ニュース - Apple Developer
この対応のうち、「利用するにあたって理由の説明が求められるAPI」が定義された。
2024年春以降、Privacy Manifestに記載がないまま対象のAPIを使っている場合、アプリの申請が受け付けられなくなる。
対象のシグネチャを探す
そこで、自分の関わるプロジェクトに該当の要素が含まれるか探すスクリプトを書いた。
前提
- BSDgrep (BSD grep, GNU compatible) 2.6.0-FreeBSD
作業ディレクトリは以下の構成になっているものとする。
project_root/
project_root/bin
project_root/bin/今回作ったスクリプト
project_root/src
project_root/src/ソースコードたくさん
スクリプト
#!/bin/bash
readonly ROOT=$(cd $(dirname ${BASH_SOURCE:-$0})/..; pwd)
cd $ROOT
# 使用にあたって理由が求められるAPI
# ref. https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api?language=objc
readonly REQUIRED_REASON_APIS=(
# File timestamp APIs
NSFileCreationDate
creationDate
NSFileModificationDate
modificationDate
fileModificationDate
NSURLContentModificationDateKey
contentModificationDateKey
NSURLCreationDateKey
creationDateKey
getattrlist
getattrlistbulk
fgetattrlist
stat
fstat
fstatat
lstat
getattrlistat
# System boot time APIs
systemUptime
mach_absolute_time
# Disk space APIs
NSURLVolumeAvailableCapacityKey
volumeAvailableCapacityKey
NSURLVolumeAvailableCapacityForImportantUsageKey
volumeAvailableCapacityForImportantUsageKey
NSURLVolumeAvailableCapacityForOpportunisticUsageKey
volumeAvailableCapacityForOpportunisticUsageKey
NSURLVolumeTotalCapacityKey
volumeTotalCapacityKey
NSFileSystemFreeSize
systemFreeSize
NSFileSystemSize
systemSize
statfs
statvfs
fstatfs
fstatvfs
getattrlist
fgetattrlist
getattrlistat
# Active keyboard APIs
activeInputModes
# User defaults APIs
NSUserDefaults
UserDefaults
)
# echo "${REQUIRED_REASON_APIS[@]}"
# exit
for api_name in "${REQUIRED_REASON_APIS[@]}"; do
echo "Search $api_name" >&2
grep -E "$api_name\W" -r $ROOT/src
# 目視検査用。緩く広範にマッチさせようとする。
#grep "$api_name" -r $ROOT/src
done
雑感
- やっぱりシェルスクリプトなんだよな
- とはいえシェルスクリプトの配列なんて久々に使った
Discussion