Manifest prywatności firmy Apple
Firma Apple ma zasady ochrony prywatności dla aplikacji przeznaczonych dla systemu iOS w sklepie App Store. Wymaga to, aby aplikacja zawierała manifest prywatności w pakiecie aplikacji, który zawiera listę typów danych aplikacji .NET MAUI lub zestawów SDK i pakietów innych firm oraz przyczyny używania dowolnych wymaganych interfejsów API przyczyn. Jeśli używasz wymaganych interfejsów API przyczyny lub zestawów SDK innych firm, nie zostanie zadeklarowana w manifeście prywatności, aplikacja może zostać odrzucona przez sklep App Store. Aby uzyskać więcej informacji na temat manifestów prywatności, zobacz Pliki manifestu prywatności w developer.apple.com.
W zależności od tego, czy używasz interfejsu MAUI platformy .NET do tworzenia aplikacji, czy udostępniania pakietów powiązań do użycia z aplikacjami .NET MAUI, wymóg zapewnienia manifestu prywatności może się różnić.
Manifest prywatności dla aplikacji MAUI platformy .NET
Wszystkie aplikacje MAUI platformy .NET przeznaczone dla urządzeń z systemem iOS lub iPadOS wymagają manifestu prywatności w pakiecie aplikacji. Aby uzyskać więcej informacji, zobacz Dodawanie wymaganych wpisów do manifestu prywatności.
Należy również przejrzeć własny kod, dowolny kod natywny oraz praktyki zbierania i śledzenia danych oraz odpowiednio zaktualizować manifest prywatności:
- Jeśli aplikacja lub zestaw SDK zbiera dane dotyczące osoby korzystającej z aplikacji, musisz opisać użycie danych w manifeście prywatności. Aby uzyskać informacje, zobacz Opis użycia danych w manifestach prywatności w developer.apple.com.
- Jeśli aplikacja lub zestaw SDK zawiera interfejsy API platformy .NET, które nazywają wymagane interfejsy API przyczyn firmy Apple, należy ocenić użycie każdego z tych interfejsów API i zadeklarować przyczyny ich używania. Aby uzyskać więcej informacji o wymaganych interfejsach API, zobacz Opis użycia wymaganego interfejsu API przyczyny w developer.apple.com.
Uwaga
Jeśli aplikacja zawiera dowolne zestawy SDK lub pakiety innych firm, te składniki innych firm muszą zawierać własne manifesty prywatności oddzielnie.
Manifest prywatności jest automatycznie dodawany do nowych projektów aplikacji .NET MAUI utworzonych przy użyciu interfejsu wiersza polecenia platformy .NET lub programu Visual Studio. Aby uzyskać informacje na temat dodawania manifestu prywatności do istniejącej aplikacji .NET MAUI, zobacz Dodawanie manifestu prywatności do istniejącej aplikacji.
Ważne
Powyższe wytyczne są udostępniane dla Twojej wygody. Przed utworzeniem manifestu prywatności dla projektu należy przejrzeć dokumentację firmy Apple dotyczącą plików manifestu prywatności.
Manifest prywatności dla powiązań projektów
Powiązania projektów dzielą się na dwie kategorie: powiązania struktury statycznej i powiązania struktury dynamicznej. Manifest prywatności powinien zostać dołączony do struktury, umieszczając go w pakiecie struktury. Po poprawnym umieszczeniu projektu powiązania automatycznie doda go do pakietu aplikacji, aby deweloperzy aplikacji nie musieli podawać przyczyn użycia interfejsu API platformy. Aby uzyskać więcej informacji, zobacz Umieszczanie zawartości w pakiecie.
W przypadku struktury dynamicznej platforma jest dodawana do pakietu aplikacji. Manifest zasad ochrony prywatności jest dodawany do lokalizacji, w której sklep App Store oczekuje, że będzie, i nie ma nic do zrobienia dla dewelopera aplikacji.
Obecnie w przypadku powiązania struktury statycznej deweloperzy aplikacji będą musieli ręcznie scalić manifest prywatności dołączony do struktury statycznej w manifeście prywatności aplikacji. Wynika to z tego, jak biblioteki statyczne są połączone z głównym plikiem binarnym aplikacji, co powoduje usunięcie potrzeby platformy.
Dodawanie manifestu prywatności do istniejącej aplikacji
Aby dodać manifest prywatności do istniejącego projektu aplikacji .NET MAUI, dodaj nowy plik XML o nazwie PrivacyInfo.xcprivacy do folderu Platforms/iOS projektu aplikacji. Upewnij się, że plik PrivacyInfo.xcprivacy nie ma rozszerzenia .xml . Następnie dodaj następujący kod XML do pliku:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict/>
</plist>
Następnie zmodyfikuj plik projektu aplikacji .NET MAUI (*.csproj) i dodaj następujący element kompilacji dla systemu iOS w dolnej części elementu głównego <Project>
:
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
<BundleResource Include="Platforms\iOS\PrivacyInfo.xcprivacy" LogicalName="PrivacyInfo.xcprivacy" />
</ItemGroup>
Dzięki temu manifest prywatności zostanie spakowany do aplikacji systemu iOS w katalogu głównym pakietu.
Dodawanie wymaganych wpisów do manifestu prywatności
Wszystkie aplikacje MAUI platformy .NET przeznaczone dla urządzeń z systemem iOS lub iPadOS wymagają manifestu prywatności w pakiecie aplikacji. Jest to spowodowane środowiskiem uruchomieniowym platformy .NET i biblioteką klas bazowych (BCL) przy użyciu wymaganych interfejsów API przyczyn, które nie są usuwane niezależnie od trybu konsolidatora. Trzy kategorie interfejsów API i powiązane z nimi przyczyny, które muszą znajdować się w manifeście prywatności w aplikacji .NET MAUI, przedstawiono w poniższej tabeli:
Kategoria interfejsu API | Przyczyna | Link |
---|---|---|
NSPrivacyAccessedAPICategoryFileTimestamp |
C617.1 |
Interfejsy API sygnatury czasowej pliku |
NSPrivacyAccessedAPICategorySystemBootTime |
35F9.1 |
Interfejsy API czasu rozruchu systemu |
NSPrivacyAccessedAPICategoryDiskSpace |
E174.1 |
Interfejsy API miejsca na dysku |
Jeśli ręcznie dodano manifest prywatności do istniejącej aplikacji .NET MAUI, musisz dodać do niej te wpisy. W tym celu otwórz plik PrivacyInfo.xcprivacy w edytorze tekstów i dodaj klucz, w którym będzie następnie dodawana każda wymagana kategoria interfejsu NSPrivacyAccessAPITypes
API przyczyny:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
</array>
</dict>
</plist>
Następnie dodaj kategorię NSPrivacyAccessedAPICategoryFileTimestamp
z przyczyną C617.1
, NSPrivacyAccessedAPICategorySystemBootTime
kategoria z przyczyną i NSPrivacyAccessedAPICategoryDiskSpace
kategorią z przyczyną 35F9.1
E174.1
do NSPrivacyAccessedAPITypes
tablicy w manifeście prywatności:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
</dict>
</array>
</dict>
</plist>
Te wpisy są minimalnymi wymaganiami aplikacji. Jeśli używasz dowolnego z wymaganych interfejsów API w sposób, który nie jest objęty podanymi kodami przyczyn, należy dodać dodatkowe kody przyczyn, aby obsługiwać użycie interfejsu API. Aby uzyskać więcej informacji na temat używania interfejsu API w środowisku uruchomieniowym platformy .NET, bibliotece klas podstawowych platformy .NET (BCL), .NET dla systemów iOS i .NET MAUI, które mogą spowodować, że potrzebujesz dodatkowych kodów przyczyn, zobacz linki w sekcji Zobacz również .
Jeśli aplikacja .NET MAUI korzysta z interfejsu API preferencji lub bezpośrednio używasz interfejsu NSUserDefaults API, musisz uwzględnić przyczyny użycia w manifeście prywatności. Użyj ciągu NSPrivacyAccessedAPICategoryUserDefaults
jako wartości klucza w NSPrivacyAccessedAPITypes
słownikuNSPrivacyAccessedAPIType
. Jeśli na przykład aplikacja lub zestaw SDK bezpośrednio lub pośrednio korzysta z interfejsu NSUserDefaults API, za pośrednictwem interfejsu API preferencji programu .NET MAUI plik PrivacyInfo.xcprivacy powinien zawierać dodatkowy dict
element w NSPrivacyAccessedAPITypes
tablicy klucza:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>E174.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>
</dict>
</plist>
Musisz podać co najmniej jeden kod przyczyny z domyślnych interfejsów API użytkownika w developer.apple.com. Dodaj co najmniej jeden kod przyczyny poniżej, aby wskazać prawidłowe użycie:
CA92.1
— aby uzyskać dostęp do domyślnych ustawień użytkownika tylko w aplikacji.1C8F.1
— aby uzyskać dostęp do domyślnych ustawień użytkownika z aplikacji, rozszerzeń aplikacji i klipów aplikacji, które są członkami tej samej grupy aplikacji.C56D.1
— aby uzyskać dostęp do domyślnych ustawień użytkownika z zestawu SDK.AC6B.1
— aby uzyskać dostęp do domyślnych ustawień użytkownika, aby odczytać klucz com.apple.configuration.managed lub com.apple.feedback.managed.
Ważne
Jeśli zmodyfikujesz kod w aplikacji, może być konieczne zaktualizowanie pliku PrivacyInfo.xcprivacy aplikacji. Obejmuje to dodanie pakietu NuGet lub projektu powiązania do aplikacji, która wywołuje dowolny z wymaganych interfejsów API przyczyn firmy Apple.
Zobacz też
Skorzystaj z poniższych linków, aby dowiedzieć się więcej o wymaganych przyczynach użycia interfejsu API na platformie .NET MAUI, .NET dla systemu iOS oraz środowiska uruchomieniowego platformy .NET i listy BCL: