2016-07-26 8 views
3

iOS 앱에서 주변 메시지 API를 사용하여 Eddystone 비콘에서 트리거 된 메시지를 수신하고 있습니다. 정상적으로 작동합니다. 나는 애플 리케이션의 백엔드를 위해 파이어베이스의 실시간 데이터베이스를 사용하고있다. Firebase의 캐싱은 꽤 멋지 기 때문에 앱을 실제로 오프라인으로 작동시킬 수 있습니다.Google Nearby Messages API를 오프라인에서 사용 하시겠습니까?

제 질문은 누군가가 사전에 비콘과 관련된 첨부 파일을 캐싱하기 위해 (아마도 Firebase와 결합 된) 기술을 알고 있거나 사용하고 있는지 (예 : 특정 네임 스페이스의 모든 Eddystone 첨부 파일을 캐시하는 등) 비콘 첨부 파일을 효율적으로 가져올 수 있는지 여부입니다. 앱이 인터넷에 연결되어 있지 않습니다.

탐험 할 영역에 대한 조언이나 제안 사항이 있으면 좋을 것입니다.

답변

4

하나의 옵션은 Proximity Beacon API의 beaconinfo:getforobserved 방법을 사용하여 앱에서 알고있는 모든 표지에 대한 첨부 파일을 사전에 가져 오는 것입니다. 그 문서를 볼 수 있습니다 here.

앱은 알려진 각 신호에 대한 모든 첨부 정보를 얻기 위해 주기적으로 (예 : 인터넷 연결이 시작될 때 또는 시작할 때)이 호출을 할 수 있습니다. 메서드 호출에 대한 응답은 첨부 데이터가있는 BeaconInfo의 배열을 반환합니다. 그런 다음 응용 프로그램은 Firebase 또는 Eddystone 네임 스페이스 및 인스턴스 ID로 키가 지정된 다른 로컬 데이터 저장소에이 데이터를 저장할 수 있습니다.

분명히 앱이 작동하려면 모든 비컨 식별자를 알아야합니다. 웹 서비스 호출은 iOS 앱에서 API_KEY를 사용하여 만들 수 있습니다.

캐시에이 정보가 있으면 여전히 비콘 탐지을 기반으로 사용자에게 메시지를 보내도록 앱을 실행하는 방법이 필요합니다. 내가 아는 한, iOS 용 Nearby API는 첨부 파일 정보를 사용할 수없는 경우 오프라인으로 처리하지 않습니다. 평소와 같이 멋진 대답 (내가 기대하지 않았다 -

self.beaconScanner = [RNLBeaconScanner sharedBeaconScanner]; 
[self.beaconScanner startScanning]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRangeBeacons:) name:@"didRangeBeacons" object:nil];  

... 

- (void) didRangeBeacons: (NSNotification *) notification { 
    NSArray *beacons = notification.userInfo[@"beacons"]; 
    for (RNLBeacon *beacon in beacons) { 
     NSString *eddystoneNamespace = beacon.id1; 
     NSString *eddystoneInstance = beacon.id2; 
     // TODO: look up cached attachments for this beacon in data store 
    } 
    } 
+0

감사 데이비드 : 당신은 아직도 내가이와 함께 here.를 넣어 같은 아이폰 OS Eddystone 비콘 스캔 툴킷을 사용하여이 작업을 할 수 있습니다, 당신은 이런 식으로 뭔가를 할 수 당신은 이것이 Radius 플랫폼이 아닌 Google의 Nearby Messages API에 주로 관한 것이라는 점을 감안할 때 이것에 답할 것입니다 :-) 나는 후속 작업을 위해 이메일을 보낼 것입니다. – James