3

iOS アプリで Nearby Messages API を使用して、Eddystone ビーコンによってトリガーされたメッセージを受信して​​いますが、うまく機能しています。アプリのバックエンドに Firebase のリアルタイム データベースを使用しています。Firebase のキャッシングは非常に優れているため、アプリをオフラインでうまく機能させることができます。

私の質問は、アプリに接続がないときにビーコンの添付ファイルを効果的に取得できるように、ビーコンに関連付けられた添付ファイルを事前にキャッシュする (たとえば、すべての Eddystone 添付ファイルを特定の名前空間にキャッシュする) 手法 (おそらく Firebase と組み合わせたもの) を誰かが知っている/使用しているかどうかです。インターネットへ。

探索する領域のアドバイスや提案は素晴らしいでしょう。

4

1 に答える 1

5

1 つのオプションは、Proximity Beacon API のbeaconinfo:getforobservedメソッドを使用して、アプリが認識しているすべてのビーコンの添付ファイルを積極的に取得することです。そのためのドキュメントはこちらでご覧いただけます。

アプリは、この呼び出しを定期的に (たとえば、起動時またはインターネット接続があるときに) 行い、既知の各ビーコンのすべての添付ファイル情報を取得できます。メソッド呼び出しへの応答は、添付データを持つBeaconInfoの配列を返します。アプリケーションは、これを Firebase または Eddystone 名前空間とインスタンス ID をキーとする他のローカル データ ストアに保存できます。

明らかに、アプリはこれが機能するためにすべてのビーコン識別子を前もって知る必要があります. Web サービス呼び出しは、API_KEY を使用して iOS アプリから行うことができます。

この情報をキャッシュに入れたら、ビーコン検出に基づいてアプリをトリガーしてユーザーにメッセージを送信する方法が必要です。私の知る限り、iOS 用の Nearby 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
    }
  }
于 2016-07-26T13:33:29.757 に答える