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)