Публикации близких людей

Важно!

Мои люди больше не поддерживаются в версиях Windows 11 и Windows 10 с применением КБ5034203.

Функция "Моя Люди" позволяет пользователям закреплять контакты на панели задач, позволяя им легко оставаться в контакте в любом месте Windows, независимо от того, какое приложение они подключены. Теперь пользователи могут совместно использовать содержимое с закрепленными контактами, перетащив файлы из проводник в закрепление моего Люди. Они также могут предоставлять общий доступ к любым контактам в магазине контактов Windows с помощью стандартного шарма общего ресурса. Читайте, чтобы узнать, как включить приложение в качестве целевого объекта общего доступа "Моя Люди".

My people sharing panel

Requirements

  • Windows 10 и Microsoft Visual Studio 2019. Дополнительные сведения об установке см. в статье "Настройка с помощью Visual Studio".
  • Знание основ C# или схожих объектно-ориентированных языков программирования. Сведения о начале работы с C#см. в статье "Создание приложения Hello, world".

Обзор

Для включения приложения в качестве целевого объекта общего доступа "Моя Люди" необходимо выполнить три шага.

  1. Объявите поддержку контракта активации shareTarget в манифесте приложения.
  2. Заметьте контакты, к которым пользователи могут предоставить общий доступ с помощью приложения.
  3. Поддержка нескольких экземпляров приложения, выполняющегося одновременно. Пользователи должны иметь возможность взаимодействовать с полной версией приложения, а также использовать ее для совместного использования с другими пользователями. Они могут одновременно использовать его в нескольких окнах общего доступа. Для поддержки этого приложение должно одновременно запускать несколько представлений. Чтобы узнать, как это сделать, см. статью "Показать несколько представлений для приложения".

После этого приложение будет отображаться в качестве целевого объекта общего доступа в окне "Мой Люди общий доступ", которое можно запустить двумя способами:

  1. Контакт выбирается с помощью чудо-кнопки общего доступа.
  2. Файлы перетаскиваются и удаляются на контакте, закрепленном на панели задач.

Объявление поддержки контракта общей папки

Чтобы объявить поддержку приложения в качестве целевого объекта общего доступа, сначала откройте приложение в Visual Studio. В Обозреватель решений щелкните правой кнопкой мыши Package.appxmanifest и выберите "Открыть с помощью". В меню выберите редактор XML (текст) и нажмите кнопку "ОК". Затем внесите следующие изменения в манифест:

До:

<Applications>
	<Application Id="MyApp"
	  Executable="$targetnametoken$.exe"
	  EntryPoint="My.App">
	</Application>
</Applications>

После:

<Applications>
	<Application Id="MyApp"
	  Executable="$targetnametoken$.exe"
	  EntryPoint="My.App">
		<Extensions>
			<uap:Extension Category="windows.shareTarget">
				<uap:ShareTarget Description="Share with MyApp">
					<uap:SupportedFileTypes>
						<uap:SupportsAnyFileType/>
					</uap:SupportedFileTypes>
					<uap:DataFormat>Text</uap:DataFormat>
					<uap:DataFormat>Bitmap</uap:DataFormat>
					<uap:DataFormat>Html</uap:DataFormat>
					<uap:DataFormat>StorageItems</uap:DataFormat>
					<uap:DataFormat>URI</uap:DataFormat>
				</uap:ShareTarget>
			</uap:Extension>
		 </Extensions>
	</Application>
</Applications>

Этот код добавляет поддержку для всех файлов и форматов данных, но вы можете указать, какие типы файлов и форматы данных поддерживаются (дополнительные сведения см . в документации по классам ShareTarget).

Аннотирование контактов

Чтобы разрешить окне общей папки "Мой Люди" отображать приложение в качестве целевого объекта общего доступа для контактов, необходимо написать их в хранилище контактов Windows. Сведения о том, как писать контакты, см. в примере интеграции с карточками контакта.

Чтобы приложение отображалось как целевой объект общей папки "Моя Люди" при совместном доступе к контакту, он должен записать заметку в этот контакт. Заметки — это фрагменты данных из приложения, связанных с контактом. Заметка должна содержать активируемый класс, соответствующий требуемому представлению в члене ProviderProperties , и объявить поддержку операции Share .

Вы можете заметить контакты в любой момент во время работы приложения, но обычно вы должны запишите контакты, как только они будут добавлены в хранилище контактов Windows.

if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
{
	// Create a new contact annotation
	ContactAnnotation annotation = new ContactAnnotation();
	annotation.ContactId = myContact.Id;

	// Add appId and Share support to the annotation
	String appId = "MyApp_vqvv5s4y3scbg!App";
	annotation.ProviderProperties.Add("ContactShareAppID", appId);
	annotation.SupportedOperations = ContactAnnotationOperations::Share;

	// Save annotation to contact annotation list
	// Windows.ApplicationModel.Contacts.ContactAnnotationList 
	await contactAnnotationList.TrySaveAnnotationAsync(annotation);
}

AppId — это имя семейства пакетов, за которым следует "!" и идентификатор активируемых классов. Чтобы найти имя семейства пакетов, откройте Package.appxmanifest с помощью редактора по умолчанию и перейдите на вкладку "Упаковка". Здесь "App" — это активируемый класс, соответствующий представлению целевого объекта Share.

Запуск в качестве целевого объекта для общей папки "Моя Люди"

Наконец, чтобы запустить приложение, переопределите метод OnShareTargetActivated в основном классе приложения для обработки целевой активации общей папки. Свойство ShareTargetActivatedEventArgs.ShareOperation.Contacts будет содержать контакты, которым предоставлен общий доступ, или будет пустым, если это стандартная операция общего доступа (а не моя Люди общий ресурс).

protected override void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
	bool isPeopleShare = false;
	if (ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 5))
	{
		// Make sure the current OS version includes the My People feature before
		// accessing the ShareOperation.Contacts property
		isPeopleShare = (args.ShareOperation.Contacts.Count > 0);
	}

	if (isPeopleShare)
	{
  		// Show share UI for MyPeople contact(s)
	}
	else
	{
		// Show standard share UI for unpinned contacts
	}
}

См. также