Создание приложений, подключающихся к программам «Люди» и «Календарь». Часть 1: карточки контактов

OSzone.net » Microsoft » Разработка приложений » Windows (до Windows 10) » Создание приложений, подключающихся к программам «Люди» и «Календарь». Часть 1: карточки контактов
Автор: Зайнаб Хаким
Иcточник: MSDN
Опубликована: 26.06.2014

В Windows 8.1 мы представили новые контракты «приложение — приложение», дающие пользователям возможность с легкостью взаимодействовать с людьми, чьи данные указаны в адресной книге, и интегрировать события в свои календари. В этой статье, состоящей из двух частей, мы рассмотрим оба этих контракта. Начнем с карточек контактов, которые работают непосредственно с приложением «Люди». Во второй статье мы рассмотрим использование календарей.

Краткая сводка по контрактам. Чтобы выполнить контракт, Windows создает канал коммуникаций между исходным приложением (инициирующим действие) и конечным (принимающим команду и способным выполнить подобное действие). Конечное приложение запускается в специальном месте пользовательского интерфейса для выполнения определенного задания. Например, чтобы поделиться статьей из «Новостей» с помощью приложения «Почта», используется контракт общих данных либо адрес контакта выбирается из приложения «Люди» посредством контракта выбора контакта и отображается на карте в приложении «Карты». Благодаря контрактам приложения лучше взаимодействуют с системой и друг с другом, если пользователь установил много программ, обращающихся к контрактам.

В данной серии статей мы хотим поделиться с вами нашими идеями, на основе которых были созданы новые контракты для приложений «Люди» и «Календарь», а также продемонстрировать снимки экрана реальных приложений Windows и показать, как просто можно внедрить эти инструменты в ваши приложения.

Необходимость в коммуникациях, привязанных к приложению «Люди»

Люди, с которыми мы общаемся и делимся информацией, сильно влияют на то, как мы используем современные устройства. Электронная почта, сообщения, телефонные и видеозвонки, обновления в социальных сетях и комментарии — это лишь несколько примеров активной деятельности, связанной с людьми, которую мы ежедневно ведем с помощью телефонов, ПК и планшетов. Приложение «Люди» в Windows создано специально для современных способов коммуникации. Оно позволяет вам соединиться с различными учетными записями в социальных сетях — Hotmail, Facebook, Twitter, LinkedIn и пр. — и синхронизирует копию списка контактов с облаком, собирая все контакты в одном месте, облегчая доступ к ним и использование пространства. Отсюда можно связаться с кем угодно с помощью любого нужного сервиса.

Однако общение с другими пользователями не должно ограничиваться приложением «Люди». Вы не должны выходить из любимого приложения, только чтобы найти контакт или написать сообщение. Вам, как разработчику, необходимо, чтобы пользователи как можно дольше оставались в вашем приложении. Очень часто разработчики пытаются добиться этого через дублирование функциональных возможностей, предоставляемых другими приложениями и не являющихся главной ценностью данного приложения. Например, для общения в чате или отправки электронного письма нужно создавать соответствующую функциональность в вашем приложении, не говоря уж о защите конфиденциальных данных, которую вы также должны обеспечить своими силами! Вместо этого хотелось бы получить простые функции, чтобы пользователи могли «соединяться» с людьми прямо из вашего приложения и дольше в нем оставаться, а система самостоятельно управляла контактной информацией. Как раз это мы и решили сделать с помощью карточек контактов Windows. Это пользовательский интерфейс, демонстрирующий базовую информацию о контакте и различные способы связи с ним, где каждое действие запускает программу, предпочитаемую пользователем для его выполнения.

Карточки контактов в некоторых реальных приложениях

Карточки контактов — это системный всплывающий элемент, который всегда находится поверх интерфейса вызывающего его приложения. Это простой, контекстный и согласованный способ отображения информации о контакте, не требующий выхода из приложения. Он служит отправной точкой для запуска приложений, предпочитаемых пользователем для простого взаимодействия с контактами напрямую из вашего приложения. Давайте рассмотрим весь рабочий процесс на нескольких примерах.

С помощью приложения DePaul University CDM в Магазине Windows студенты могут оставаться в курсе всех новостей, событий, курсов, расписания профессоров и доступности компьютерных лабораторий колледжа. Студенты могут искать профессоров и преподавателей, находить их контактные данные и с легкостью связываться с ними (рисунок 1). Приложение (исходное приложение) вызывает WinRT API для отображения карточки контакта, когда пользователь щелкает или касается иконки, обозначающей контактную информацию (рисунок 2).

*
Увеличить

Рисунок 1

*

Рисунок 2

В этом случае приложение предоставляет контактную информацию — имя, фотографию, адрес электронной почты, телефон, должность, номер кабинета и т. п. Windows использует адрес электронной почты и телефон, чтобы выполнить поиск нужного человека в базе данных с контактами пользователя в приложении «Люди». Если соответствие найдено, то полная контактная информация из базы данных контактов становится доступна системе для заполнения карточки контакта. Обратите внимание, что приложению, вызывающему API карточки контактов, не предоставляется общий доступ к контактной информации — все данные пользователь видит только в самой карточке. Таким образом сохраняется конфиденциальность пользовательских данных, исходному приложению не нужно беспокоиться об этом.

В нашем примере Джейн Хуанг (Jane Huang) не была найдена в моих контактах, соответственно, информация, предоставленная приложением, используется для заполнения данных и действий в контактной карточке Джейн. В контактной карточке я могу нажать такие действия, как Email (Электронное письмо) или Call (Звонок) для общения с Джейн. Нажатие действия Email запускает приложение «Почта» (мое предпочитаемое приложение для электронной почты) рядом с приложением DePaul University CDM согласно настройкам размера окна, заданным в приложении «Почта» (рисунок 3). Я пишу сообщение Джейн, жму «Отправить» и одним движением пальца убираю приложение «Почта» с экрана. Мне, как пользователю, очень нравится, что исходное приложение располагается на экране рядом с выбранным конечным приложением, выполняющим действие.

*
Увеличить

Рисунок 3

Итак, поскольку Джейн не указана в контактах моей адресной книги, на карточке контактов отображается действие Add Contact (Добавить контакт). Нажатие на Add Contact позволяет мне быстро сохранить контактные данные Джейн в приложении «Люди». Мы с Джейн также знаем друг друга в других сетях, например, в LinkedIn и Skype. Приложение «Люди» автоматически собирает всю эту информацию для меня. В следующий раз, когда я буду искать карточку контактов Джейн в приложении DePaul University или любом другом приложении Магазина Windows, я увижу полную информацию о Джейн из моей адресной книги.

Обратите внимание, что это работает и за пределами приложений. Если я в любое время решу поискать Джейн Хуанг с помощью Windows Search, то увижу те же результаты с агрегированной контактной информацией Джейн. Я по-прежнему могу общаться с ней с помощью моего любимого механизма (сообщений) и используя мое любимое приложение (Skype).

Давайте рассмотрим карточки контактов в других приложениях: «Почта», «Календарь» и «Люди» в Windows 8.1.

*
Увеличить

Рисунок 4

*
Увеличить

Рисунок 5

На рисунке 4 я вытаскиваю контактную карточку Бена (Ben) из приложения «Почта» и посылаю ему сообщение через Skype. Приложение Skype запускается рядом с приложением «Почта» (рисунок 5). Я посылаю сообщение и надеюсь получить быстрый ответ от Бена в Skype или по электронной почте!

*
Увеличить

Рисунок 6

*
Увеличить

Рисунок 7

Из встречи, отмеченной в моем приложении «Календарь», я вытаскиваю карточку Деборы (Debra) и читаю ее адрес, чтобы отправиться к ней на вечеринку (рисунок 6). Я могу быстро отметить адрес на карте с помощью приложения «Карты Bing», расположенного рядом с приложением «Календарь» (рисунок 7). Обратите внимание, что на «Картах Bing» отображается также фотография Деборы и ее имя для более полного и персонализированного впечатления.

Вопросы и ответы по карточкам контактов

В: Какие действия могут отображаться в карточке контактов? Это ограниченный набор?

О: Да, набор поддерживаемых коммуникационных действий в Windows 8.1 ограничен. Они включают:

В: Как карточка контактов определяет, какие именно действия нужно показать?

О: Слой бизнес-логики карточки контактов определяет возможные действия на основе данных, доступных для контакта.

Например, если для контакта указан адрес электронной почты, а не номер телефона, то действие «Звонок» для него выполнить нельзя и оно не будет показано в карточке контактов.

В: Могут ли для одной карточки контакта отображаться несколько адресов электронной почты или телефонных номеров?

О: Да, конечно. Контакты достаточно часто имеют несколько адресов электронной почты (рабочий, домашний) и телефонных номеров (рабочий, домашний, сотовый). Карточка контактов запоминает данные, недавно использованные для действия, и отображает их по умолчанию для каждого действия. Остальные номера, адреса электронной почты, обычные адреса и т. п. можно просматривать и выбирать с помощью раскрывающего списка рядом с каждым действием.

*

В: Есть ли лимит на количество действий, которые можно отобразить на карточке контактов?

О: Набор действий, отображаемых на карточке, всегда ограничен тремя, чтобы не перегружать интерфейс и не усложнять их использование. Самый высокий приоритет имеют «Электронное письмо», «Звонок» и «Сообщение» (если доступны). Если пользователь хочет связаться с контактом с помощью действия, которого нет на карточке контакта (например, отметить адрес на карте или написать сообщение в социальной сети), он должен нажать кнопку View Profile (Просмотр профиля), чтобы запустить приложение «Люди» рядом с вашим приложением и получить полный набор действий, доступных для этого контакта.

В: Получат ли другие приложения доступ к контактным данным пользователя?

О: Нет. Никакие контактные данные, отображаемые в карточке контактов, не предоставляются исходному приложению. Если пользователь выбирает действие в карточке контакта, то целевому приложению, вызванному для обработки этого действия, предоставляются из карточки только те данные, которые нужны для его выполнения. В любом случае, полные данные адресной книги пользователя никогда не предоставляются никакому приложению. Вашему приложению крайне важно построить и сохранить доверительные отношения с пользователями. Благодаря этой модели не нужно беспокоиться о сохранности данных ваших пользователей. Пользователи чувствуют себя уверенно с вашим приложением и в то же время с выгодой используют всю предоставляемую им богатую интерактивность.

В: Как карточка контактов выбирает цвет своего баннера?

О: Windows устанавливает цвет баннера в соответствии с цветом плитки приложения. Благодаря этому карточка контактов ощущается скорее как часть приложения, а не системы. Приложение может изменить только цвет плитки для карточки.

В: Можно ли отображать данные из моего приложения в карточке контактов?

О: Нет. Если соответствующий контакт найден в базе контактов Windows, то агрегированные контактные данные всегда будут использоваться для заполнения карточки контактов. Это позволяет обеспечить одинаковый уровень удобства работы с контактами для пользователя во всех приложениях, отображающих карточки контактов.

В: Что будет, если у пользователя нет конечного приложения для выполнения действий из карточки контактов? А если пользователь имеет несколько конечных приложений для одного действия?

О: Если для выполнения определенного действия нет установленных программ, пользователь увидит диалоговое окно Windows с сообщением о том, что отсутствуют приложения для выполнения задания, и ссылкой на Магазин Windows для поиска приложений. Если у пользователя установлено несколько программ и выбор по умолчанию не задан, Windows попросит указать конечное приложение из общего списка программ, поддерживающих данное действие. После этого выбранное приложение станет выбором по умолчанию до тех пор, пока пользователь не изменит это через PC Settings (Настройки ПК) > Search and Apps (Поиск и приложения) > Defaults (Варианты по умолчанию).

В: Как пользователь может скрыть и закрыть карточку контактов?

О: Карточка контактов — это интерфейс с функцией исчезновения. Это значит, что можно коснуться или щелкнуть на любом месте вне карточки контактов, и она исчезнет. Кроме того, карточка контактов закрывается, когда пользователь выбирает действие и запускается конечное приложение для его выполнения.

Отображение карточки контактов в приложениях

Мы вас убедили. Вам очень нравится эта функция. Теперь вы хотите узнать, как внедрить ее в ваши приложения. Ну что же, вы скоро увидите, что нашим API пользоваться легко и просто.

Исходное приложение получает доступ к карточке с помощью метода ContactManager.ShowContactCard(). Приложение передает объект Contact, чтобы определить контакт, который нужно показать. Приложение должно как минимум предоставить или адрес электронной почты, или телефонный номер в рамках объекта Contact. Если у приложения имеются дополнительные контактные данные, оно может их предоставить в виде других свойств Contact. Windows использует адреса электронной почты и телефонные номера внутри объекта Contact для составления запроса к локальной базе данных контактов (с данными из приложения «Люди»). Если соответствие найдено, отображается карточка контактов с информацией из базы контактов, если нет — карточка контактов с информацией, предоставленной исходным приложением внутри объекта Contact.

JavaScript

function ShowContactCard(evt) {
    var ContactsNS = Windows.ApplicationModel.Contacts;
    var emailAddress = document.getElementById("inputEmailAddress").value;
    var phoneNumber = document.getElementById("inputPhoneNumber").value;

    // Создаем входной объект contact для вызова ContactManager.showContactCard()
    var contact = new ContactsNS.Contact();

 // Предоставляем адрес электронной почты
    var email = newContactsNS.ContactEmail();
    email.address = emailAddress;
    contact.emails.append(email);

    // Предоставляем телефонный номер
    var phone = new ContactsNS.ContactPhone();
    phone.number = phoneNumber;
    contact.phones.append(phone);

    // Получаем прямоугольное выделения нажатой кнопки для отображения карточки контактов
    var boundingRect = evt.srcElement.getBoundingClientRect();
    var selectionRect = { x: boundingRect.left, y: boundingRect.top, width: boundingRect.width, height: boundingRect.height };

    ContactsNS.ContactManager.showContactCard(contact, selectionRect, Windows.UI.Popups.Placement.default);
  }
})

C#

/// Это обработчик нажатия для кнопки 'Show contact card'
/// <param name="sender"></param>
/// <param name="e"></param>
void ShowContactCardButton_Click(object sender, RoutedEventArgs e)
{
  // Создаем входной объект contact
  Contact contact = new Contact();
ContactEmail email = new ContactEmail();
  email.Address = this.EmailAddress.Text;
  contact.Emails.Add(email);
ContactPhone phone = new ContactPhone();
  phone.Number = this.PhoneNumber.Text;
  contact.Phones.Add(phone);
// Получаем прямоугольное выделение нажатой кнопки для отображения карточки контактов
  Rect rect = Helper.GetElementRect(sender as FrameworkElement);
ContactManager.ShowContactCard(contact, rect, Windows.UI.Popups.Placement.Default);
}

Обработка действий карточки контактов конечным приложением

Как мы уже видели ранее, карточка контактов — это отправная точка для таких коммуникационных действий, как сообщение, звонок, электронное письмо, видео и т. п. Если ваше приложение предоставляет функциональность для обработки одного или нескольких подобных действий, оно становится для них конечным приложением. Если ваше приложение является предпочитаемым для сообщения или звонка, пользователь может запускать его из карточки контакта или средства «Поиск контактов Windows 8.1». Чтобы получить конечное приложение, сначала необходимо зарегистрировать манифесты для каждого действия, поддерживаемого вашим приложением, в категории расширений «windows.contact». Теперь приложение можно активировать для контракта с поддерживаемым действием.

В примере ниже показана регистрация манифеста для действия «Звонок» с помощью телефонного номера или идентификатора Skype.

<Package xmlns="http://schemas.microsoft.com/appx/2010/manifest" xmlns:m2="http://schemas.microsoft.com/appx/2013/manifest">
<m2:Extension Category="windows.contact">
<m2:Contact>
 <m2:ContactLaunchActions>
   <m2:LaunchAction Verb="call" DesiredView="useLess">
      <m2:ServiceId>telephone</m2:ServiceId>
   </m2:LaunchAction>
  <m2:LaunchAction Verb="call" DesiredView="useLess">
     <m2:ServiceId>skype.com</m2:ServiceId>
  </m2:LaunchAction>
 </m2:ContactLaunchActions>
</m2:Contact>
</m2:Extension>

Активацию действия можно обнаружить, изучая ActivationKind в событии активации. ActivationKind — это то же самое, что и Windows.ApplicationModel.Activation.ActivationKind.contact для действий с контактами. Используйте свойство verb в аргументах события, чтобы определить тип действия с контактом. Используйте свойство serviceId в аргументах события, чтобы определить сервис, который должно использовать ваше приложение для выполнения действия (например, звонка через Skype). Приложение получает объект contact через аргументы события активации. Объект contact всегда содержит базовую информацию, необходимую для выполнения действия (например, телефонный номер для звонка). Кроме того, он содержит дополнительные сведения о контакте, например, имя и фотографию. Приложение может изучить объект contact на предмет наличия этих опциональных параметров и, если они есть, улучшить взаимодействие пользователя с приложением.

Ниже представлен фрагмент кода, демонстрирующий, как обнаруживать активацию действия «Звонок» для телефонного номера и извлекать параметры phoneNumber, name и thumbnail в JavaScript.

function activatedHandler(e) {
  if (e.detail.kind === Windows.ApplicationModel.Activation.ActivationKind.contact) {
    if (e.detail.verb === Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs.Call) {
      if (e.detail.serviceId == "telephone") {
        var phoneNumberToCall = e.detail.serviceUserId;
        var contactName = e.detail.contact.displayName;
        var contactThumbnail = e.detail.contact.thumbnail;
      }
    }
  }
}

Чтобы получить информацию об активации приложения для действий с контактом, обратитесь к примеру SDK «Обработка действий с контактами».

В заключение

Сегодня мы используем множество различных приложений — для социальных сетей, учебы, средства управления событиями, программы для отслеживания дней рождения, фитнес-приложения, социальные игры и т. п., которые применяют контакты и взаимодействуют с людьми. Если у вас имеется такое приложение в Магазине (или вы его разрабатываете), подумайте о том, как с помощью карточек контактов улучшить социальный фактор этого приложения и сделать его более привлекательным. Соединяйте свои приложения с приложением «Люди» через карточки контактов Windows, предоставляя лишь адрес электронной почты или телефонный номер либо же полную информацию. С помощью карточки контактов можно осуществлять быстрый поиск по агрегированной информации всех контактов прямо из вашего приложения. Это замечательная отправная точка, откуда пользователи могут с легкостью инициировать отправку электронного письма или сообщения, совершение звонка и т. п. с помощью предпочитаемых приложений для коммуникации. Предоставьте всю тяжелую работу Windows и исходным приложениям, а сами сосредоточьтесь на главных преимуществах своего приложения.

Во второй части этой статьи мы рассмотрим главное хранилище данных для пользователей — «Календарь» — и покажем, как упростилась интеграция приложений с пользовательскими календарями благодаря новому контракту «Календарь».


Ссылка: http://www.oszone.net/24507/