첨부파일 데이터 형식

Nearby 알림 첨부파일을 추가하는 가장 쉬운 방법은 Google 비콘 대시보드를 사용하는 것입니다. 또는 Proximity Beacon API와 아래에 설명된 첨부파일 데이터 형식을 사용할 수 있습니다.

Nearby 알림 기능 첨부파일은 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 형식

Nearby 알림에서 지원하는 3가지 URL 형식은 다음과 같습니다.

웹 URL

웹 URL이란 정확히 일반 URL입니다. 웹 URL이 수신되면 사용자에게 기본 브라우저에서 URL을 열라는 메시지가 표시됩니다. 특별한 앱 구성은 필요하지 않습니다. 웹 URL은 HTTPS를 사용해야 하며 일반 URL 형식으로 지정됩니다.

  https://www.example.com

웹 URL이 알림을 트리거하지 않는 경우 가장 일반적인 원인은 다음과 같습니다.

  • HTTPS 대신 HTTP 사용
  • play.google.com과 같은 앱 스토어에 연결하는 것은 금지됩니다. 웹페이지는 그 자체로 독립되어야 하며 방문 페이지에서 직접 유용한 정보나 작업을 제공해야 합니다.

앱 의도

앱 인텐트 URL은 앱에서 인텐트를 트리거하는 데 사용됩니다. 앱 인텐트 URL이 수신되면 해당 앱 인텐트 필터가 있는 경우 연결된 앱이 URL에 포함된 매개변수에 응답합니다. 앱이 설치되지 않은 경우 사용자는 앱을 설치할 수 있는 Play 스토어로 이동합니다. 앱이 설치되면 앱을 실행하고 개발자가 지정한 기능으로 계속 진행할 수 있습니다. 앱 인텐트 URL의 형식은 다음과 같습니다.

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

인텐트 URL 형식 지정에 관한 자세한 내용은 Chrome이 포함된 Android 인텐트를 참고하세요. 인텐트 추가 항목은 전달되지 않습니다.

다음과 같이 인텐트를 만든 후 intent.toUri(Intent.URI_INTENT_SCHEME)를 사용하여 URL을 올바르게 구성할 수도 있습니다.

    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의 형식이 적절하다고 확신하는 경우에만 이 옵션을 사용하세요.

앱이 설치되지 않은 경우 인텐트에 S.browser_fallback_url 매개변수를 추가하여 사용자를 Play 스토어 대신 지정된 URL로 보내도록 선택할 수 있습니다.

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

문맥 타겟팅

규칙

Nearby 알림에서 지원하는 4가지 타겟팅 규칙

날짜

dateStartdateEnd는 연결이 표시되는 기간을 ISO 8601 형식으로 지정하는 데 사용됩니다. 다음 예는 2017년 1월의 알림을 보여줍니다.

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

시간

'timeOfDayStart' 및 'timeOfDayEnd'는 연결이 표시되는 일일 시간 범위를 ISO 8601 형식으로 지정하는 데 사용됩니다. 다음 예시는 매일 오전 9시부터 오후 5시까지의 알림을 보여줍니다.

    {
      "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시부터 오후 5시까지의 알림을 보여줍니다.

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

서로 다른 타겟팅 객체의 규칙이 ORed로 설정되어 있습니다. 다음 예는 월요일부터 금요일까지 매일 오전 9시부터 오후 5시까지, 그리고 토요일과 일요일에는 종일 알림을 표시합니다.

    {
      "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>

자세한 내용은 앱 링크 처리를 참고하세요.