diff --git a/Amplify/Resources/PrivacyInfo.xcprivacy b/Amplify/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/Amplify/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/API/Sources/AWSAPIPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/API/Sources/AWSAPIPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/API/Sources/AWSAPIPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..0c69ba3b3a
--- /dev/null
+++ b/AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,17 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+
+
diff --git a/AmplifyPlugins/Core/AWSPluginsCore/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Core/AWSPluginsCore/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/Core/AWSPluginsCore/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..0c69ba3b3a
--- /dev/null
+++ b/AmplifyPlugins/DataStore/Sources/AWSDataStorePlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,17 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+
+
diff --git a/AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/Internal/Sources/InternalAWSPinpoint/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Internal/Sources/InternalAWSPinpoint/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..0c69ba3b3a
--- /dev/null
+++ b/AmplifyPlugins/Internal/Sources/InternalAWSPinpoint/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,17 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+
+
diff --git a/AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..0c69ba3b3a
--- /dev/null
+++ b/AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,17 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+ NSPrivacyAccessedAPIType
+ NSPrivacyAccessedAPICategoryUserDefaults
+ NSPrivacyAccessedAPITypeReasons
+
+ CA92.1
+
+
+
+
+
diff --git a/AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/Predictions/AWSPredictionsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Predictions/AWSPredictionsPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/Predictions/AWSPredictionsPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/Predictions/CoreMLPredictionsPlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Predictions/CoreMLPredictionsPlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/Predictions/CoreMLPredictionsPlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Resources/PrivacyInfo.xcprivacy b/AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Resources/PrivacyInfo.xcprivacy
new file mode 100644
index 0000000000..74f8af8564
--- /dev/null
+++ b/AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin/Resources/PrivacyInfo.xcprivacy
@@ -0,0 +1,8 @@
+
+
+
+
+ NSPrivacyAccessedAPITypes
+
+
+
diff --git a/Package.swift b/Package.swift
index e03c21866e..2fa9b9a4e8 100644
--- a/Package.swift
+++ b/Package.swift
@@ -23,6 +23,9 @@ let amplifyTargets: [Target] = [
exclude: [
"Info.plist",
"Categories/DataStore/Model/Temporal/README.md"
+ ],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
]
),
.target(
@@ -34,6 +37,9 @@ let amplifyTargets: [Target] = [
path: "AmplifyPlugins/Core/AWSPluginsCore",
exclude: [
"Info.plist"
+ ],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
]
),
.target(
@@ -116,6 +122,9 @@ let apiTargets: [Target] = [
exclude: [
"Info.plist",
"AWSAPIPlugin.md"
+ ],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
]
),
.testTarget(
@@ -157,7 +166,10 @@ let authTargets: [Target] = [
.product(name: "AWSCognitoIdentityProvider", package: "aws-sdk-swift"),
.product(name: "AWSCognitoIdentity", package: "aws-sdk-swift")
],
- path: "AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin"
+ path: "AmplifyPlugins/Auth/Sources/AWSCognitoAuthPlugin",
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
+ ]
),
.target(
name: "libtommathAmplify",
@@ -198,6 +210,9 @@ let dataStoreTargets: [Target] = [
exclude: [
"Info.plist",
"Sync/MutationSync/OutgoingMutationQueue/SyncMutationToCloudOperation.mmd"
+ ],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
]
),
.testTarget(
@@ -224,6 +239,9 @@ let storageTargets: [Target] = [
path: "AmplifyPlugins/Storage/Sources/AWSS3StoragePlugin",
exclude: [
"Resources/Info.plist"
+ ],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
]
),
.testTarget(
@@ -251,6 +269,9 @@ let geoTargets: [Target] = [
path: "AmplifyPlugins/Geo/Sources/AWSLocationGeoPlugin",
exclude: [
"Resources/Info.plist"
+ ],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
]
),
.testTarget(
@@ -279,7 +300,10 @@ let internalPinpointTargets: [Target] = [
.product(name: "AWSPinpoint", package: "aws-sdk-swift"),
.product(name: "AmplifyUtilsNotifications", package: "amplify-swift-utils-notifications")
],
- path: "AmplifyPlugins/Internal/Sources/InternalAWSPinpoint"
+ path: "AmplifyPlugins/Internal/Sources/InternalAWSPinpoint",
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
+ ]
),
.testTarget(
name: "InternalAWSPinpointUnitTests",
@@ -298,7 +322,10 @@ let analyticsTargets: [Target] = [
dependencies: [
.target(name: "InternalAWSPinpoint")
],
- path: "AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin"
+ path: "AmplifyPlugins/Analytics/Sources/AWSPinpointAnalyticsPlugin",
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
+ ]
),
.testTarget(
name: "AWSPinpointAnalyticsPluginUnitTests",
@@ -316,7 +343,10 @@ let pushNotificationsTargets: [Target] = [
dependencies: [
.target(name: "InternalAWSPinpoint")
],
- path: "AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin"
+ path: "AmplifyPlugins/Notifications/Push/Sources/AWSPinpointPushNotificationsPlugin",
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
+ ]
),
.testTarget(
name: "AWSPinpointPushNotificationsPluginUnitTests",
@@ -343,7 +373,10 @@ let predictionsTargets: [Target] = [
.product(name: "AWSTranslate", package: "aws-sdk-swift")
],
path: "AmplifyPlugins/Predictions/AWSPredictionsPlugin",
- exclude: []
+ exclude: [],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
+ ]
),
.testTarget(
name: "AWSPredictionsPluginUnitTests",
@@ -359,6 +392,9 @@ let predictionsTargets: [Target] = [
path: "AmplifyPlugins/Predictions/CoreMLPredictionsPlugin",
exclude: [
"Resources/Info.plist"
+ ],
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
]
),
.testTarget(
@@ -380,7 +416,10 @@ let loggingTargets: [Target] = [
.target(name: "AWSPluginsCore"),
.product(name: "AWSCloudWatchLogs", package: "aws-sdk-swift"),
],
- path: "AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin"
+ path: "AmplifyPlugins/Logging/Sources/AWSCloudWatchLoggingPlugin",
+ resources: [
+ .copy("Resources/PrivacyInfo.xcprivacy")
+ ]
),
.testTarget(
name: "AWSCloudWatchLoggingPluginTests",
diff --git a/README.md b/README.md
index 1111369176..68e101a6ce 100644
--- a/README.md
+++ b/README.md
@@ -152,6 +152,18 @@ do {
}
```
+## Describing use of required reason API
+
+As required by the Apple App Store, we provide the new `PrivacyInfo.xcprivacy` file for describing use of required reason API, see [Describing use of required reason API
+](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api). You can also export the privacy report after archiving your App in Xcode, see [Create your app’s privacy report](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests#4239187).
+
+The following Amplify targets have been identified to be using the [User defaults APIs](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api#4278401):
+
+* `AWSCognitoAuthPlugin`
+* `AWSDataStorePlugin`
+* `AWSCloudWatchLoggingPlugin`
+* `InternalAWSPinpoint`
+
## Reporting Bugs/Feature Requests
[![Open Bugs](https://img.shields.io/github/issues/aws-amplify/amplify-swift/bug?color=d73a4a&label=bugs)](https://github.com/aws-amplify/amplify-swift/issues?q=is%3Aissue+is%3Aopen+label%3Abug)