Поиск с помощью веб-разметки в Xamarin.iOS

Для приложений, которые предоставляют доступ к содержимому через веб-сайт (не только из приложения), веб-содержимое можно пометить с помощью специальных ссылок, которые будут обходиться Apple и предоставлять глубокие ссылки на приложение на устройстве iOS 9 пользователя.

Если ваше приложение iOS уже поддерживает мобильные глубокие ссылки, а веб-сайт представил глубокие ссылки на содержимое в приложении, веб-обходчик Applebot будет индексировать это содержимое и автоматически добавлять его в свой облачный индекс:

Cloud Index overview

Apple будет отображать эти результаты в результатах поиска в центре внимания и поиска Safari. Если пользователь нажимает на один из этих результатов (и у него установлено приложение), он будет доставлен в содержимое в приложении:

Deep linking from a website in search results

Включение индексирования веб-контента

Существует четыре шага, необходимых для поиска содержимого приложения с помощью веб-разметки:

  1. Убедитесь, что Apple может обнаруживать и индексировать веб-сайт вашего приложения, определяя его как веб-сайт поддержки или маркетинга в iTunes Подключение.
  2. Убедитесь, что веб-сайт вашего приложения содержит необходимую разметку для реализации глубокого связывания мобильных устройств. Дополнительные сведения см. в приведенных ниже разделах.
  3. Включите глубокую обработку ссылок в приложении iOS.
  4. Добавьте разметку для структурированных данных, представленных веб-сайтом вашего приложения, чтобы обеспечить богатый и привлекательный результат для конечного пользователя. Хотя этот шаг не является строгим обязательным, настоятельно рекомендуется Apple.

В следующих разделах подробно описаны эти действия.

Сделать веб-сайт приложения обнаруживаемым

Самый простой способ найти веб-сайт вашего приложения — использовать его как веб-сайт поддержки или маркетинга при отправке приложения в Apple через iTunes Подключение.

Использование баннеров смарт-приложений

Предоставьте баннер смарт-приложения на веб-сайте, чтобы представить четкую ссылку на приложение. Если приложение еще не установлено, Safari автоматически предложит пользователю установить приложение. В противном случае можно коснуться ссылки на представление , чтобы запустить приложение с веб-сайта. Например, чтобы создать баннер smart App, можно использовать следующий код:

<meta name="AppName" content="app-id=123456, app-argument=http://company.com/AppName">

Дополнительные сведения см. в документации по продвижению приложений Apple с помощью баннеров Smart App.

Новые для iOS 9 универсальные ссылки обеспечивают более эффективную альтернативу смарт-баннерам приложений или существующим пользовательским схемам URL-адресов, предоставив следующее:

  • Unique — один и тот же URL-адрес нельзя запросить несколькими веб-сайтами.
  • Безопасный — подписанный сертификат необходим для веб-сайта, который гарантирует, что веб-сайт принадлежит вам и действительно связан с приложением.
  • Гибкий — конечный пользователь может контролировать, запускает ли URL-адрес веб-сайт или приложение.
  • Универсальный — один и тот же URL-адрес можно использовать для определения содержимого веб-сайта и вашего приложения.

Использование картОчек Twitter

Вы можете предоставить подробные ссылки на содержимое приложения с помощью twitter-карты. Например:

<meta name="twitter:app:name:iphone" content="AppName">
<meta name="twitter:app:id:iphone" content="AppNameID">
<meta name="twitter:app:url:iphone" content="AppNameURL">

Дополнительные сведения см. в документации по протоколу Twitter Card Protocol .

Вы можете предоставить подробные ссылки на содержимое приложения с помощью ссылки на приложение Facebook. Например:

<meta property="al:ios:app_name" content="AppName">
<meta property="al:ios:app_store_id" content="AppNameID">
<meta property="al:ios:url" content="AppNameURL">

Дополнительные сведения см. в документации по ссылкам приложений Facebook.

Необходимо добавить поддержку открытия и отображения глубоких ссылок в приложении Xamarin.iOS. Измените файл AppDelegate.cs и переопределите OpenURL метод для обработки пользовательского формата URL-адреса. Например:

public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
{

  // Handling a URL in the form http://company.com/appname/?123
  try {
    var components = new NSUrlComponents(url,true);
    var path = components.Path;
    var query = components.Query;

    // Is this a known format?
    if (path == "/appname") {
      // Display the view controller for the content
      // specified in query (123)
      return ContentViewController.LoadContent(query);
    }
  } catch {
    // Ignore issue for now
  }

  return false;
}

В приведенном выше коде мы ищем URL-адрес, /appname содержащий и передавая значение query (123 в этом примере) в пользовательский контроллер представления в нашем приложении, чтобы отобразить запрошенное содержимое пользователю.

Предоставление расширенных результатов структурированными данными

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

Богатые результаты более привлекательны и могут помочь улучшить рейтинг в облачном индексе поиска, заманив больше пользователей для взаимодействия с ними.

Одним из вариантов предоставления разметки структурированных данных является использование Open Graph. Например:

<meta property="og:image" content="http://company.com/appname/icon.jpg">
<meta property="og:audio" content="http://company.com/appname/theme.m4a">
<meta property="og:video" content="http://company.com/appname/tutorial.mp4">

Дополнительные сведения см. на веб-сайте Open Graph .

Другим общим форматом разметки структурированных данных является формат microdata schema.org. Например:

<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
  <span itemprop="ratingValue">4** stars -
  <span itemprop="reviewCount">255** reviews

Те же сведения можно представить в формате JSON-LD в schema.org:

<script type="application/ld+json">
  "@content":"http://schema.org",
  "@type":"AggregateRating",
  "ratingValue":"4",
  "reviewCount":"255"
</script>

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

Rich search results via Structured Data Markup

В настоящее время Apple поддерживает следующие типы схем из schema.org:

  • Агрегирование
  • ImageObject
  • InteractionCount
  • Предложения
  • Организация
  • PriceRange
  • Рецепт
  • SearchAction

Дополнительные сведения об этих типах схем см. в schema.org.

Предоставление действий со структурированными данными

Определенные типы структурированных данных позволяют результату поиска действовать конечным пользователем. В настоящее время поддерживаются следующие действия:

  • Набирая номер телефона.
  • Получение направления карты заданному адресу.
  • Воспроизведение звукового или видеофайла.

Например, определение действия для набора номера телефона может выглядеть следующим образом:

<div itemscope itemtype="http://schema.org/Organization">
  <span itemprop="telephone">(408) 555-1212**

При отображении этого результата поиска пользователю будет отображаться небольшой значок телефона. Если пользователь нажимает значок, будет вызван номер.

Следующий HTML-код добавит действие для воспроизведения звукового файла из результата поиска:

<div itemscope itemtype="http://schema.org/AudioObject">
  <span itemprop="contentUrl">http://company.com/appname/greeting.m4a**

Наконец, следующий HTML-код добавит действие, чтобы получить направления из результата поиска:

<div itemscope itemtype="http://schema.org/PostalAddress">
  <span itemprop="streetAddress">1 Infinite Loop**
  <span itemprop="addressLocality">Cupertino**
  <span itemprop="addressRegion">CA**
  <span itemprop="postalCode">95014**

Дополнительные сведения см. на сайте разработчика поиска приложений Apple.