添加“附近通知”附件的最简单方法是使用 <ph type="x-smartling-placeholder"></ph> Google 信标信息中心。 或者,您也可以使用 <ph type="x-smartling-placeholder"></ph> Proximity 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
的长度应较短 且必须少于 50 个字符。理想情况下,这应该能够提供 向用户显示号召性用语。例如Order with your phone, skip the line
、Set up your thermostat
或Learn more about sea otters
。 - url - 应用、网站或服务的网址。
- 定位 - 用于限制通知公开范围的可选规则 根据设备上下文进行调整
网址格式
附近通知支持三种网址格式:
网址
网址就是普通的网址。收到网址后, 系统提示用户在默认浏览器中打开网址。无特殊应用 配置。网址必须使用 HTTPS,并采用 常规网址:
https://www.example.com
如果您的网址没有触发通知,最可能的原因是:
- 使用 HTTP 而不是 HTTPS
- 禁止链接到应用商店(例如 play.google.com)。网页 独立提供有用的信息或操作, 着陆页。
应用 intent
应用 intent 网址用于在应用中触发 intent。当应用 intent 收到网址后,关联的应用会对 网址,前提是存在相应的应用 intent 过滤器。如果应用 未安装,则将用户引导至 Play 商店以安装该应用。更新后 安装应用后,用户便可启动应用并继续使用该功能 由开发者指定应用 intent 网址格式如下:
intent://host/path#Intent;scheme=yourscheme;package=com.yourapp.ui;end;
如需详细了解如何设置 intent 网址的格式,请参阅 在 Chrome 中使用 Android intent。 请注意,系统不会传递 intent extra。
您还可以通过创建 intent,然后使用
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));
自由格式应用 intent
此选项应用于与 scheme、路径或 以及软件包名称格式仅当您确定自己的意图网址 格式正确。
您可以选择将用户转到指定网址,而不是 通过添加 S.browser_fallback_url 参数添加到 intent:
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 年 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"用于根据应用来设置附件的公开范围 安装状态。它仅适用于应用 intent 网址。以下 示例会在未安装应用时显示通知。
{
"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]
}
]
}
来自不同定位对象的规则以 OR 关系结合在一起。以下 示例显示了一条通知,通知时间为星期一至星期五每天上午 9 点至下午 5 点, 以及周六和周日全天投放
{
"title": "Weekend or work time",
"url": "https://www.example.com",
"targeting":[
{
"anyOfDaysOfWeek": [6, 7]
},
{
"startTimeOfDay": "9:00",
"endTimeOfDay": "17:00"
}
]
}
向应用添加 intent 过滤器
应用必须配置为可处理指定网址的 scheme、主机和路径。
为此,您必须在 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>
如需了解详情,请参阅 处理应用链接。