2016-07-26 3 views
3

Я получаю сообщения, вызванные маяками Eddystone, используя API-интерфейс Near Messages в моем приложении iOS, и он работает хорошо. Я использую базу данных Firebase в реальном времени для бэкэнда приложения. Так как кэширование Firebase довольно удивительное, я могу заставить приложение работать хорошо в автономном режиме.Включить API Google Apps для сообщений офлайн?

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

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

ответ

4

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

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

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

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

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

Благодаря David - удивительный ответ, как обычно (я не ожидал вы должны ответить на это, учитывая, что это в первую очередь о платформе Google «Недоступные сообщения Google», а не «Радиус» :-) Я отправлю вам электронное письмо для последующего наблюдения. – James