用户授予所有必需权限后,您的应用就可以开始投放广告并发现设备,以便查找附近的设备。
首先,为您的用例选择 Strategy
。您选择的 Strategy
可确定您的应用的连接拓扑(一个广告客户对应 N 个发现者,M 个广告客户对应 N 个发现者)。
在将要通告的设备上,使用想要的 Strategy
和用于标识应用的 serviceId
参数调用 startAdvertising()
。
在将发现附近广告客户的设备上,请使用相同的 Strategy
和 serviceId
调用 startDiscovery()
。
serviceId
值必须能唯一标识您的应用。最佳实践是,使用应用的软件包名称(例如 com.google.example.myapp
)。
以下示例展示了如何投放广告:
private void startAdvertising() { AdvertisingOptions advertisingOptions = new AdvertisingOptions.Builder().setStrategy(STRATEGY).build(); Nearby.getConnectionsClient(context) .startAdvertising( getLocalUserName(), SERVICE_ID, connectionLifecycleCallback, advertisingOptions) .addOnSuccessListener( (Void unused) -> { // We're advertising! }) .addOnFailureListener( (Exception e) -> { // We were unable to start advertising. }); }
ConnectionLifecycleCallback
参数是当探索器请求连接到广告客户时调用的回调函数。如需详细了解如何定义此回调,请参阅管理连接。
以下示例展示了如何发现:
private void startDiscovery() { DiscoveryOptions discoveryOptions = new DiscoveryOptions.Builder().setStrategy(STRATEGY).build(); Nearby.getConnectionsClient(context) .startDiscovery(SERVICE_ID, endpointDiscoveryCallback, discoveryOptions) .addOnSuccessListener( (Void unused) -> { // We're discovering! }) .addOnFailureListener( (Exception e) -> { // We're unable to start discovering. }); }
EndpointDiscoveryCallback
参数是当发现附近的广告客户或失去附近的广告客户时,系统将调用的回调函数。如需详细了解如何定义此回调,请参阅管理连接。
如果您不再需要通告,请调用 stopAdvertising()
;如果您不再需要发现广告,请调用 stopDiscovery()
。