离线启用Google附近消息API?

Jam*_*mes 3 firebase eddystone beacon google-nearby

我在iOS应用中使用“附近的消息” API接收了由Eddystone信标触发的消息,它运行良好。我正在使用Firebase的实时数据库作为应用程序的后端。由于Firebase的缓存非常棒,因此我能够使该应用程序在离线状态下运行良好。

我的问题是,是否有人知道/使用一种技术(可能与Firebase结合使用)来预先缓存与信标关联的附件(例如,将所有Eddystone附件缓存在特定名称空间中),以便在应用程序没有连接时可以有效地获取信标附件上网。

任何探索领域的建议都将是不错的。

dav*_*ung 5

一种选择是使用Proximity Beacon API的beaconinfo:getforobserved方法来主动获取您的应用程序知道的所有信标的附件。您可以在此处查看有关文档

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

显然,该应用需要预先知道所有信标标识符,才能正常工作。可以通过iOS应用程序使用API​​_KEY进行Web服务调用。

将这些信息保存在缓存中后,您仍然需要一种方法来触发应用程序根据信标检测向用户发送消息。据我所知,当附件信息不可用时,iOS的Nearest API不会离线执行此操作。您仍然可以通过使用iOS Eddystone信标扫描工具包(如我在此处组合的工具包)来完成此工作 这样,您可以执行以下操作:

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
    }
  }
Run Code Online (Sandbox Code Playgroud)