앱에서 저전력 블루투스 (BLE) 비콘 첨부파일을 구독할 수 있습니다. Google이 게시한 메시지를 구독하는 데 사용되는 것과 동일한 기타 근처 기기에서 작동합니다. 정기 결제를 신청하면 앱에서 자동으로 비콘과 주변 장치 모두에서 메시지를 수신하게 됩니다.
BLE 비콘 메시지 구독
앱이 BLE 비콘 메시지를 구독할 수 있는 두 가지 방법이 있습니다.
포그라운드에서 구독
앱이 포그라운드에서 비콘 메시지를 구독하면 스캔은 지속적으로 실행됩니다 포그라운드만 시작 일반적으로 사용자 작업에 응답하여 앱이 활성 상태일 때 정기 결제에 사용됩니다.
앱에서 다음을 호출하여 포그라운드 구독을 시작할 수 있습니다.
Nearby.getMessagesClient(Activity).subscribe(MessageListener, SubscribeOptions)
드림
Strategy
옵션을 BLE_ONLY
로 설정합니다.
다음 코드 스니펫은 포그라운드 구독의 시작을 보여줍니다.
Nearby.getMessagesClient(Activity).subscribe(MessageListener, SubscribeOptions)
:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
Log.d(TAG, "Found message: " + new String(message.getContent()));
}
@Override
public void onLost(Message message) {
Log.d(TAG, "Lost sight of message: " + new String(message.getContent()));
}
}
}
// Subscribe to receive messages.
private void subscribe() {
Log.i(TAG, "Subscribing.");
SubscribeOptions options = new SubscribeOptions.Builder()
.setStrategy(Strategy.BLE_ONLY)
.build();
Nearby.getMessagesClient(this).subscribe(mMessageListener, options);
}
정기 결제가 더 이상 필요하지 않으면 앱에서 정기 결제를 취소해야 합니다.
(으)로
Nearby.getMessagesClient(Activity).unsubscribe(MessageListener)
백그라운드에서 구독하기
앱이 백그라운드에서 비콘 메시지를 구독하면 저전력 스캔을 화면 켜짐 이벤트 시 트리거되며 이는 앱이 현재 활성 상태가 아니어도 마찬가지입니다. 스캔 알림을 사용하여 '일어나기'를 할 수 있습니다. 앱에 대한 응답으로 확인할 수 있습니다. 백그라운드 구독은 배터리를 더 적게 소비합니다. 포그라운드 구독을 지원하지만 지연 시간이 길고 안정성이 낮습니다.
앱에서 다음을 호출하여 백그라운드 구독을 시작할 수 있습니다.
Nearby.getMessagesClient(Activity).subscribe(PendingIntent, SubscribeOptions)
드림
Strategy
옵션을 BLE_ONLY
로 설정합니다.
다음 코드 스니펫은 백그라운드 구독을 시작하는 방법을 보여줍니다.
통화
Nearby.getMessagesClient(Activity).subscribe(PendingIntent, SubscribeOptions)
// Subscribe to messages in the background.
private void backgroundSubscribe() {
Log.i(TAG, "Subscribing for background updates.");
SubscribeOptions options = new SubscribeOptions.Builder()
.setStrategy(Strategy.BLE_ONLY)
.build();
Nearby.getMessagesClient(this).subscribe(getPendingIntent(), options);
}
private PendingIntent getPendingIntent() {
return PendingIntent.getBroadcast(this, 0, new Intent(this, BeaconMessageReceiver.class),
PendingIntent.FLAG_UPDATE_CURRENT);
}
다음 코드 스니펫은
BeaconMessageReceiver
클래스.
@Override
public void onReceive(Context context, Intent intent) {
Nearby.getMessagesClient(context).handleIntent(intent, new MessageListener() {
@Override
public void onFound(Message message) {
Log.i(TAG, "Found message via PendingIntent: " + message);
}
@Override
public void onLost(Message message) {
Log.i(TAG, "Lost message via PendingIntent: " + message);
}
});
}
정기 결제가 더 이상 필요하지 않으면 앱에서 정기 결제를 취소해야 합니다.
(으)로
Nearby.getMessagesClient(Activity).unsubscribe(PendingIntent)
비콘 메시지 파싱
비콘 첨부파일 비콘에 추가할 수 있는 임의 데이터의 블롭입니다. 각 첨부파일은 다음과 같은 부분으로 구성됩니다.
- 네임스페이스: 네임스페이스 식별자입니다.
- 유형: 데이터 유형입니다.
- 데이터: 첨부파일의 데이터 값입니다.
다음 코드 스니펫은 메시지 리스너를 사용하여 파싱하는 방법을 보여줍니다. 메시지를 수신할 수 있습니다.
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
// Do something with the message here.
Log.i(TAG, "Message found: " + message);
Log.i(TAG, "Message string: " + new String(message.getContent()));
Log.i(TAG, "Message namespaced type: " + message.getNamespace() +
"/" + message.getType());
}
...
};
콘텐츠 파싱은 바이트 형식에 따라 다릅니다. 이 예시에서는 콘텐츠 바이트는 UTF-8 문자열을 인코딩하지만 비콘 메시지는 다른 바이트 형식을 인코딩합니다 (예: 직렬화된 프로토콜 버퍼). 자세한 내용은 비콘에 첨부파일 추가를 참조하세요.
프로젝트와 연결된 네임스페이스를 확인하려면 namespaces.list를 사용할 수 있습니다.
참고:
-
배터리 수명을 절약하려면
Nearby.getMessagesClient(Activity).unsubscribe()
를 호출합니다. (활동의onStop()
함수에서) 이는 포그라운드에서 구독합니다. -
지연 시간을 줄이려면
Nearby.getMessagesClient(Activity).subscribe()
를 호출할 때Strategy.BLE_ONLY
옵션을 사용합니다. 이 옵션을 설정하면 Nearby Messages API가 기본 블루투스를 트리거하지 않습니다. 스캔합니다. 시스템이 탐지되기 때문에 비콘 탐지 지연 시간이 단축되고 가능한 모든 스캔 유형을 순환하지 않습니다. - 비콘에 메시지 페이로드를 첨부하려면 근접 비콘 API.