启用 Google 附近的消息 API 离线?

Enabling Google Nearby Messages API offline?

我正在使用我的 iOS 应用程序中的附近消息 API 接收由 Eddystone 信标触发的消息,并且效果很好。我正在为应用程序的后端使用 Firebase 的实时数据库。由于 Firebase 的缓存非常棒,我能够让该应用离线运行得非常好。

我的问题是是否有人 knows/uses 一种技术(可能与 Firebase 结合)来提前缓存与信标关联的附件(例如,缓存特定名称空间中的所有 Eddystone 附件)以便我可以有效地获取信标当应用程序没有连接到互联网时的附件。

任何关于要探索的领域的意见或建议都会很棒。

一种选择是使用 Proximity Beacon API 的 beaconinfo:getforobserved 方法 主动获取您的应用已知的所有信标的附件.您可以查看 here.

的文档

该应用程序可以定期进行此调用(例如,在启动时或在有互联网连接的其他时间)以获取每个已知信标的所有附件信息。对方法调用的响应将 return 包含附件数据的 BeaconInfo 数组。然后,应用程序可以将其存储在 Firebase 或由 Eddystone 命名空间和实例 ID 键控的其他本地数据存储中。

显然,应用程序需要事先知道所有信标标识符才能正常工作。可以使用 API_KEY.

从 iOS 应用程序调用 Web 服务

在缓存中获得此信息后,您仍然需要一种方法来触发应用根据信标检测向用户发送消息。据我所知,iOS 附近的 API 不会在附件信息不可用时离线执行此操作。你仍然可以通过使用 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
    }
  }