Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Apps mit Paketidentität können ihre Kontakte in Windows speichern. Diese Kontakte können als Vorschläge im Personen-Widget, Windows Suche und dem Freigabeblatt angezeigt werden. In diesem Artikel wird erläutert, wie Sie ein Benutzerdatenkonto erstellen, Kontakte speichern und den Zugriff für Windows-Erfahrungen konfigurieren.
UserDataAccount für den People-Vertrag erstellen
Erstellen Sie zunächst ein Benutzerkonto. Apps von Drittanbietern sind erforderlich, um ein UserDataAccount mit UserDisplayName als "com.microsoft.peoplecontract" zu erstellen.
UserDataAccountStore udas =
await UserDataAccountManager.RequestStoreAsync(UserDataAccountStoreAccessType.AppAccountsReadWrite);
UserDataAccount uda = await udas.CreateAccountAsync("com.microsoft.peoplecontract");
Fügen Sie als nächstes "com.microsoft.windows.system" zur Liste der ExplictReadAccessPackageFamilyNames für das Konto hinzu. Dadurch wird der eingeschränkte Zugriff von Kontakten von Drittanbietern auf Windows-Erfahrungen ermöglicht.
uda.ExplictReadAccessPackageFamilyNames.Add("com.microsoft.windows.system");
await uda.SaveAsync();
Speichern von Kontakten
Der erste Schritt beim Speichern von Kontakten besteht darin, eine Kontaktliste zu erstellen. Drittanbieter-Apps müssen dazu die neue Kontaktliste für einen UserDataAccount im Windows ContactStore erstellen. Apps können den Standard-Zugriffstyp OtherAppReadAccess für die Kontaktliste beibehalten. Wenn sie auf None gesetzt wird, wird verhindert, dass andere Apps Zugriff auf diese Kontakte haben. Eine vollständige Liste der verfügbaren Zugriffstypen finden Sie in ContactListOtherAppReadAccess.
ContactStore store = await ContactManager.RequestStoreAsync(ContactStoreAccessType.AppContactsReadWrite);
this.contactList = await store.CreateContactListAsync(contactListsName, uda.Id);
contactList.OtherAppReadAccess = ContactListOtherAppReadAccess.None;
await contactList.SaveAsync();
Beim Speichern eines Kontakts müssen Apps von Drittanbietern alle relevanten Informationen enthalten, die für Windows-Erfahrungen erforderlich sind, um einen Kontakt zu unterstützen.
Die folgenden Felder sind beim Speichern eines Kontakts erforderlich:
FirstNameRemoteIdDisplayPicture
Folgende Felder sind optional:
LastNamePhonesEmails
Dieser Codeausschnitt veranschaulicht, wie ein Kontakt gespeichert wird:
foreach (var appContact in AppContacts)
{
var cont = new Contact
{
FirstName = appContact.FirstName,
LastName = appContact.LastName,
RemoteId = appContact.Id,
SourceDisplayPicture = RandomAccessStreamReference.CreateFromUri(new Uri(appContact.ProfilePicPath)),
Phones = { new ContactPhone { Number = appContact.Phone } }
};
await this.contactList.SaveContactAsync(cont);
}
Note
Der DisplayName für den Kontakt wird mit FirstName und LastName erstellt. Wenn der Nachname nicht angegeben wird, DisplayName entspricht die für den Vornamen angegebene Zeichenfolge.
Datenschutz und Zustimmung
Nur ausdrücklich angegebene Kontakte hinzufügen
Ihre App sollte nur die Kontakte beitragen, die der Benutzer explizit hinzugefügt oder autorisiert hat. Nie:
- Hochladen des gesamten Adressbuchs
- Automatische Synchronisierung von Kontakten ohne Zustimmung des Benutzers
- Freigeben von Kontakten aus Unternehmensverzeichnissen ohne explizite Berechtigung
Fragen Sie um Erlaubnis, bevor Sie Kontakte in Windows-Kontakte speichern:
private async Task<bool> RequestContactStoreAccessAsync()
{
// Requesting a writable ContactStore prompts the user for consent.
// Your app must declare the contacts capability in its manifest.
ContactStore store = await ContactManager.RequestStoreAsync(
ContactStoreAccessType.AppContactsReadWrite);
return store != null;
}
Datenschutzeinstellungen des Benutzers respektieren
Benutzern erlauben:
- Wählen Sie aus, welche Kontakte für Windows freigegeben werden sollen.
- Deaktivieren der Windows People-Integration
- Ihre Kontakte jederzeit aus Windows löschen
// Provide a setting to disable sync
if (this.ShouldSyncContactsWithWindows)
{
await SyncContactsAsync();
}
else
{
// Clear contacts if the user disables sync
await ClearWindowsContactsAsync();
}
Verwandte Inhalte
Windows developer