Jam*_*mes 3 firebase eddystone beacon google-nearby
我在iOS应用中使用“附近的消息” API接收了由Eddystone信标触发的消息,它运行良好。我正在使用Firebase的实时数据库作为应用程序的后端。由于Firebase的缓存非常棒,因此我能够使该应用程序在离线状态下运行良好。
我的问题是,是否有人知道/使用一种技术(可能与Firebase结合使用)来预先缓存与信标关联的附件(例如,将所有Eddystone附件缓存在特定名称空间中),以便在应用程序没有连接时可以有效地获取信标附件上网。
任何探索领域的建议都将是不错的。
一种选择是使用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)
| 归档时间: |
|
| 查看次数: |
653 次 |
| 最近记录: |