概要
2021/08 現在での fastlane
アクションを利用したAppStoreプライバシー詳細情報のダウンロード・アップロード方法などを記載します。
なぜ??
今後 Apple がプライバシーポリシーに力を入れていくことは明白であり、プロダクトベンダー側も逐一サービスやアプリがプライバシーポリシーを徹底して管理していくことが求められます。
そうなった時、AppStoreのGUIだけではバージョン管理やissue起票などの観点から不安要素が多々あり、メタデータによる管理・更新の機構があった方が安全といえます。
前準備
■ プライシー詳細情報に関するメタデータのダウンロード
すでにアプリがAppStoreConnectに作成済みであれば、現状のプライバシー詳細設定をダウンロードすることができます。
メタデータ送信用の設定項目を1から作成するのは大変なので、AppStoreConnect からGUI上で一度プライバシー詳細情報を更新し、そのファイルをダウンロードして管理していくことをおすすめします。
ドキュメントはこちら
fastlane
からメタデータをダウンロードするには download_app_privacy_details_from_app_store
のアクションを利用しますが、こちらは AppStore API Key
に対応していないので、CIでの駆動は現状難しいです。
したがって fastlane
にAppStoreConnectへのログインを可能にした上で、ローカル実行することになります。
この場合、コマンド途中に 2FA 認証のパスワードが聞かれることになります。
desc 'Json定義のプライバシー要件をAppStoreConnectからダウンロード'
lane :upload_privacy_details do
download_app_privacy_details_from_app_store(
username: "your@email.com",
team_name: "Your Team",
app_identifier: "com.your.bundle",
output_json_path: "fastlane/app_data_usages.json"
)
end
アクション説明ドキュメント
完了すると下記のようなプライバシー情報のJSONが落とせると思います。
[
{
"category": "BROWSING_HISTORY",
"purposes": [
"ANALYTICS",
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "CRASH_DATA",
"purposes": [
"ANALYTICS",
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "CUSTOMER_SUPPORT",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "DEVICE_ID",
"purposes": [
"ANALYTICS",
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "EMAIL_ADDRESS",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_LINKED_TO_YOU"
]
},
{
"category": "OTHER_USAGE_DATA",
"purposes": [
"ANALYTICS"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "OTHER_USER_CONTENT",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "PERFORMANCE_DATA",
"purposes": [
"ANALYTICS",
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "PHOTOS_OR_VIDEOS",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "PRECISE_LOCATION",
"purposes": [
"ANALYTICS"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "PRODUCT_INTERACTION",
"purposes": [
"ANALYTICS"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "PURCHASE_HISTORY",
"purposes": [
"ANALYTICS",
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "SEARCH_HISTORY",
"purposes": [
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
},
{
"category": "USER_ID",
"purposes": [
"ANALYTICS",
"APP_FUNCTIONALITY"
],
"data_protections": [
"DATA_NOT_LINKED_TO_YOU"
]
}
]
プライバシー詳細情報のアップロード
ファイルが用意できたらアップロードを行います。
fastlane
の upload_app_privacy_details_to_app_store
アクションを利用します。
ここで一つ注意なのが、アクションの引数に設定する team_id
が、他の箇所で利用しているような 英数字のID
ではなく 数値のみのID
であることです。
これを調べる方法がよくわからなかったのですが、一度このアクションを実行すると、ログインしているアカウントのチームID(数値のもの)がコマンドラインにプリントされますので、そこで確認してみてください。
#### プライバシー要件のアップロード
desc 'Json定義のプライバシー要件をアップロード'
lane :upload_privacy_details do
upload_app_privacy_details_to_app_store(
team_id: "1******1",
json_path: "fastlane/app_privacy_details.json"
)
end
ドキュメント
成功すれば以上で完了です。
AppStoreConnectのGUIで一度更新状態を確認してみてください。
以上です!