Включение Google Nearby Messages API в автономном режиме?

Я получаю сообщения, инициированные маяками Eddystone, используя API ближайших сообщений в моем приложении для iOS, и это работает хорошо. Я использую базу данных Firebase в реальном времени для серверной части приложения. Поскольку кеширование Firebase довольно крутое, я могу заставить приложение работать очень хорошо в автономном режиме.

Мой вопрос заключается в том, знает ли кто-нибудь/использует ли метод (возможно, в сочетании с Firebase) для предварительного кэширования вложений, связанных с маяками (например, кэширование всех вложений Eddystone в определенном пространстве имен), чтобы я мог эффективно получать вложения маяков, когда приложение не имеет подключения в интернет.

Любые советы или предложения областей для изучения были бы замечательными.


person James    schedule 26.07.2016    source источник


Ответы (1)


Одним из вариантов является использование метода beaconinfo:getforobserved API Proximity Beacon для упреждающего извлечения вложений для всех маяков, о которых знает ваше приложение. Вы можете просмотреть документацию по этому здесь.

Приложение может выполнять этот вызов периодически (например, при запуске или в другое время, когда у него есть подключение к Интернету), чтобы получить всю информацию о вложениях для каждого известного маяка. Ответ на вызов метода вернет массив BeaconInfo который имеет данные вложения. Затем приложение может сохранить это в Firebase или другом локальном хранилище данных с ключом пространства имен Eddystone и идентификатором экземпляра.

Очевидно, что приложению необходимо заранее знать все идентификаторы маяков, чтобы это работало. Вызов веб-службы можно сделать из приложения iOS с помощью API_KEY.

Когда у вас есть эта информация в кеше, вам по-прежнему нужен способ заставить приложение отправлять сообщения пользователю на основе обнаружения маяка. Насколько мне известно, Nearby API для iOS не делают этого в автономном режиме, когда информация о вложении недоступна. Вы по-прежнему можете выполнить эту работу, используя набор инструментов для сканирования маяков Eddystone для iOS, подобный тому, который я собрал здесь. С этим вы можете сделать что-то вроде этого:

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
    }
  }
person davidgyoung    schedule 26.07.2016
comment
Спасибо, Дэвид - отличный ответ, как обычно (я не ожидал, что вы ответите на этот вопрос, учитывая, что речь идет в первую очередь о Google Nearby Messages API, а не о платформе Radius :-) Я напишу вам электронное письмо для продолжения. - person James; 26.07.2016