该 API 还是实验性的,仅对 dev 分支的 Chrome 用户可用。

chrome.copresence

描述 使用 chrome.copresence API 通过 Google 的共存服务与附近的设备通信。
可用版本 仅用于 Dev 分支。了解更多内容
权限 "copresence"

摘要

类型
Strategy
Message
AccessPolicy
PublishOperation
SubscribeOperation
UnpublishOperation
UnsubscribeOperation
Operation
方法
execute chrome.copresence.execute(array of Operation operations, function callback)
事件
onMessagesReceived
onStatusUpdated

类型

Strategy

属性
boolean (可选)
lowPower

尝试使用低功耗模式,默认为 false。

boolean (可选)
onlyBroadcast

只尝试广播,同时使用 onlyScan 会使设备完全被忽略。默认为 false。

boolean (可选)
onlyScan

只尝试扫描,同时使用 onlyBroadcast 会使设备完全被忽略。默认为 false。

boolean (可选)
audible

尝试使用可听的音频,默认为 false。

Message

属性
string type

要发布的消息类型,不能为空。

ArrayBuffer payload

消息内容,以原始字节的形式表示。

AccessPolicy

属性
boolean (可选)
onlyEarshot

只将该消息发送到可听范围内的设备。默认为 false。

PublishOperation

属性
string id

标志本次发布的唯一标志符。

Message message

要发布的消息。

integer (可选)
timeToLiveMillis

本次发布活动的时间,以毫秒为单位,不超过 24 小时。如果未提供,默认为 5 分钟。

AccessPolicy (可选)
policy

指定什么设备能收到该消息的策略。

Strategy (可选)
strategies

发布消息时采取的手段,这些手段仅仅是对共存服务的建议,可能遵守也可能不遵守。

SubscribeOperation

属性
string id

标志本次订阅的唯一标志符。

object filter

定义需要订阅哪些消息的过滤器。

string type

要订阅的消息类型,不能为空。

integer (可选)
timeToLiveMillis

本次订阅活动的时间,以毫秒为单位,不超过 24 小时。如果未提供,默认为 5 分钟。

Strategy (可选)
strategies

使用指定过滤器订阅时采取的手段,这些手段仅仅是对共存服务的建议,可能遵守也可能不遵守。

UnpublishOperation

属性
string unpublishId

要取消发布的消息标识符,如果操作类型为 'unpublish' 则必须指定。

UnsubscribeOperation

属性
string unsubscribeId

要取消的订阅标识符,如果操作类型为 'unsubscribe' 则必须指定。

Operation

属性
PublishOperation (可选)
publish

发布详情,如果操作类型为 'publish' 则必须指定。

SubscribeOperation (可选)
subscribe

订阅详情,如果操作类型为 'subscribe' 则必须指定。

UnpublishOperation (可选)
unpublish

取消发布的详情,如果操作类型为 'unpublish' 则必须指定。

UnsubscribeOperation (可选)
unsubscribe

取消订阅的详情,如果操作类型为 'unsubscribe' 则必须指定。

方法

execute

chrome.copresence.execute(array of Operation operations, function callback)

批量进行一系列共存操作,要么全部执行,要么完全不执行(由于其中某一个或多个操作的错误)。发布/订阅操作按照数组中存在的顺序执行,取消发布和取消订阅操作最后处理,同样按照数组中存在的顺序。

参数
array of Operation operations
function callback

返回 batchExecute() 调用状态的回调函数。

callback 参数应该是一个如下形式的函数:

function(enum of "success", "failed", "serverError", or "initFailed" status) {...};
enum of "success", "failed", "serverError", or "initFailed" status
success
发送给 batchExecute 的所有操作都成功了。
failed
发送给 batchExecute 的某一项操作失败了。
serverError
Copresence 服务器连接失败。
initFailed
Copresence 服务无法初始化。

事件

onMessagesReceived

收到新消息时产生。

addListener

chrome.copresence.onMessagesReceived.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(string subscriptionId, array of Message messages) {...};
string subscriptionId
array of Message messages

onStatusUpdated

新的共存状态更新可用时产生。

addListener

chrome.copresence.onStatusUpdated.addListener(function callback)
参数
function callback

callback 参数应该是一个如下形式的函数:

function(enum of "audioFailed", or "serverError" status) {...};
enum of "audioFailed", or "serverError" status
audioFailed
尝试广播音频但是失败了。
serverError
Copresence 服务器连接失败。