1
1

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 3 years have passed since last update.

fastlaneでAppStoreのPrivacyDetails(プライバシー詳細情報)を管理する

Posted at

概要

2021/08 現在での fastlane アクションを利用したAppStoreプライバシー詳細情報のダウンロード・アップロード方法などを記載します。

なぜ??

今後 Apple がプライバシーポリシーに力を入れていくことは明白であり、プロダクトベンダー側も逐一サービスやアプリがプライバシーポリシーを徹底して管理していくことが求められます。
そうなった時、AppStoreのGUIだけではバージョン管理やissue起票などの観点から不安要素が多々あり、メタデータによる管理・更新の機構があった方が安全といえます。

前準備

■ プライシー詳細情報に関するメタデータのダウンロード

すでにアプリがAppStoreConnectに作成済みであれば、現状のプライバシー詳細設定をダウンロードすることができます。
メタデータ送信用の設定項目を1から作成するのは大変なので、AppStoreConnect からGUI上で一度プライバシー詳細情報を更新し、そのファイルをダウンロードして管理していくことをおすすめします。

ドキュメントはこちら

fastlane からメタデータをダウンロードするには download_app_privacy_details_from_app_store のアクションを利用しますが、こちらは AppStore API Key に対応していないので、CIでの駆動は現状難しいです。
したがって fastlaneAppStoreConnectへのログインを可能にした上で、ローカル実行することになります。
この場合、コマンド途中に 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"
    ]
  }
]

プライバシー詳細情報のアップロード

ファイルが用意できたらアップロードを行います。
fastlaneupload_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で一度更新状態を確認してみてください。

以上です!

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?