Формат данных вложения

Самый простой способ добавить вложения «Уведомления поблизости» — через панель инструментов Google Beacon . Альтернативно вы можете использовать API маяка близости и формат данных вложения, описанный ниже.

Вложения для функции «Уведомления поблизости» должны использовать пространство имен com.google.nearby и тип, состоящий из двухбуквенного кода языка и необязательного суффикса -debug .

Вложения должны быть отформатированы с использованием JSON. Например:

    {
      "title": "Example",
      "url": "https://www.example.com"
    }

Формат JSON дополнительно допускает более конкретный таргетинг, как показано ниже:

    {
      "title": "Example",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startDate": "2017-01-01",
          "endDate": "2017-01-31",
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00",
          "anyOfDaysOfWeek": [1, 2, 3, 4, 5, 6, 7],
          "anyOfAppInstallStates": ["INSTALLED", "NOT_INSTALLED"]
        }
      ]
    }

Где:

  • title — Название контента. Длина title должна быть менее 40 символов и не более 50 символов. В идеале это должно дать пользователю призыв к действию. Например, Order with your phone, skip the line , Set up your thermostat или Learn more about sea otters .
  • url — URL-адрес приложения, веб-сайта или службы.
  • таргетинг — дополнительные правила для ограничения видимости уведомлений в зависимости от контекста устройства.

Форматы URL-адресов

Уведомления поблизости поддерживают три формата URL-адресов:

URL-адрес веб-страницы

Веб-URL — это именно обычный URL-адрес. При получении веб-URL-адреса пользователю предлагается открыть URL-адрес в браузере по умолчанию. Никакой специальной настройки приложения не требуется. Веб-URL-адреса должны использовать HTTPS и форматироваться как обычный URL-адрес:

  https://www.example.com

Если ваш веб-URL не вызывает уведомление, наиболее вероятные причины:

  • Использование HTTP вместо HTTPS
  • Ссылки на магазины приложений, такие как play.google.com, запрещены. Веб-страница должна быть отдельной и предлагать полезную информацию или действия непосредственно на целевой странице.

Цель приложения

URL-адреса намерений приложения используются для запуска намерения в приложении. Когда получен URL-адрес намерения приложения, связанное приложение реагирует на параметры, содержащиеся в URL-адресе, при условии, что присутствует соответствующий фильтр намерений приложения. Если приложение не установлено, пользователь перенаправляется в Play Store для установки приложения. После установки приложения они могут запустить его и продолжить работу с функцией, указанной разработчиком. URL-адреса намерений приложения форматируются следующим образом:

  intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui;end;

Дополнительные сведения о форматировании URL-адресов намерений см. в разделе «Намерения Android с Chrome» . Обратите внимание, что дополнительные намерения не передаются.

Вы также можете правильно создать URL-адрес, создав намерение, а затем используя intent.toUri(Intent.URI_INTENT_SCHEME) , как показано здесь:

    Intent intent = new Intent()
        .setData(new Uri.Builder()
            .scheme("yourscheme")
            .authority("host")
            .appendPath("path")
            .build())
        .setPackage("com.yourapp.ui");
    Log.i(TAG, "Use this intent url: " + intent.toUri(Intent.URI_INTENT_SCHEME));

Намерение приложения в свободной форме

Этот параметр следует использовать для намерений приложения, которые не могут соответствовать формату схемы, пути и имени пакета. Используйте эту опцию только в том случае, если вы уверены, что ваш URL-адрес намерения отформатирован правильно.

Вы можете отправить пользователя по указанному URL-адресу вместо Play Store в случае, если приложение не установлено, добавив параметр S.browser_fallback_url в намерение:

intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui; \
  S.browser_fallback_url=http%3A%2F%2Fm.yoursite.com%2Fpath%2F%;end;

Контекстный таргетинг

Правила

Уведомления поблизости поддерживают четыре правила таргетинга:

Дата

dateStart и dateEnd используются для указания диапазона дат, в котором отображается вложение, в формате ISO 8601. В следующем примере показано уведомление в январе 2017 г.:

    {
      "title": "January 2017",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startDate": "2017-01-01",
          "endDate": "2017-01-31"
        }
      ]
    }

Время суток

«timeOfDayStart» и «timeOfDayEnd» используются для указания дневного диапазона времени, в течение которого видно вложение, в формате ISO 8601. В следующем примере показано уведомление с 9:00 до 17:00 ежедневно:

    {
      "title": "Work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
        }
      ]
    }

День недели

«anyOfDaysOfWeek» используется для указания дней недели, когда вложение отображается. Формат — ISO 8601, от 1 (понедельник) до 7 (воскресенье). В следующем примере показано уведомление в субботу и воскресенье:

    {
      "title": "Weekends",
      "url": "https://www.example.com",
      "targeting":[
        {
          "anyOfDaysOfWeek": [6, 7]
        }
      ]
    }

Статус установки приложения

«anyOfAppInstallStates» предназначен для настройки видимости вложений на основе состояний установки приложения. Это работает только для URL-адреса намерения приложения . В следующем примере показано уведомление, когда приложение не установлено.

    {
      "title": "App not installed",
      "url": "intent://host/path#Intent;package=com.example",
      "targeting":[
        {
          "anyOfAppInstallStates": ["NOT_INSTALLED"]
        }
      ]
    }

Комбинация правил

Для каждого вложения может быть несколько правил таргетинга. Правила из одного и того же объекта таргетинга объединяются оператором AND. В следующем примере показано уведомление с 9:00 до 17:00 по субботам и воскресеньям.

    {
      "title": "Weekend and work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
          "anyOfDaysOfWeek": [6, 7]
        }
      ]
    }

Правила из разных объектов таргетинга объединяются по ИЛИ. В следующем примере показано уведомление с 9:00 до 17:00 ежедневно с понедельника по пятницу, а также в течение всего дня по субботам и воскресеньям.

    {
      "title": "Weekend or work time",
      "url": "https://www.example.com",
      "targeting":[
        {
          "anyOfDaysOfWeek": [6, 7]
        },
        {
          "startTimeOfDay": "9:00",
          "endTimeOfDay": "17:00"
        }
      ]
    }

Добавьте фильтр намерений в свое приложение

Приложения должны быть настроены для обработки схемы, хоста и пути для данного URL-адреса. Для этого вы должны добавить элемент в свой AndroidManifest.xml, чтобы объявить <intent-filter> , соответствующий схеме, хосту и пути, и пометить его как доступный для просмотра с помощью фильтра категории, как показано здесь:

  <intent-filter>
    <action android:name="android.intent.action.VIEW"/>
     <!-- both categories below are required -->
     <category android:name="android.intent.category.BROWSABLE"/>
     <category android:name="android.intent.category.DEFAULT"/>
    <data android:host="host"
          android:pathPrefix="/path"
          android:scheme="yourscheme"/>
  </intent-filter>

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