2016-08-24 7 views
0

私のobjective-cプロジェクトでビーコンをスキャンするためのGoogle Nearby APIを設定しました。付近のAPI iOSですでにビーコンが検出されていません

ビーコンの範囲に移動するとビーコンが正常に検出されますが、既に範囲内に入っているときにアプリを起動しても機能しません。私はビーコンから離れて戻らなければなりません。

私はバックグラウンドスキャンを使用していません。私が使用libにバージョンがある:0.10.0

私のコードは次のとおりです。

[GNSMessageManager setDebugLoggingEnabled:YES]; 

_messageManager = [[GNSMessageManager alloc] initWithAPIKey:@"..."]; 

_beaconSubscription = [_messageManager subscriptionWithMessageFoundHandler:^(GNSMessage *message) { 
    NSLog(@"beacon found: %@",message); 
    ... 
} messageLostHandler:^(GNSMessage *message) { 
    NSLog(@"beacon lost: %@",message); 
    ... 
} paramsBlock:^(GNSSubscriptionParams *params) { 
    params.deviceTypesToDiscover = kGNSDeviceBLEBeacon; 
    params.beaconStrategy = [GNSBeaconStrategy strategyWithParamsBlock:^(GNSBeaconStrategyParams *params) { 
     params.includeIBeacons = YES; 
    }]; 
}]; 

私はコア場所フレームワークdidEnterRegion/didExitRegionの境界を越えたときにのみ呼ばれ方法について知っています私はdidDetermineStateメソッドを使用することができますが、NearbyAPIが内部でどのように動作するのですか?また、アプリケーションが起動時にすでに範囲内のビーコンを検出できるようにするにはどうすればよいですか?

答えて

0

これは実際に、近隣のメッセージがiBeacon領域を監視する方法のバグです。 didEnterRegion/didExitRegionを使用していますが、指定したとおり、スキャン開始時に既に地域にいる場合は、didEnterRegionは呼び出されません。

私はdidDetermineStateを使って実験しましたが、少しの作業でこのケースを処理できるようになりました。これを次のバグ修正リリースに含める予定です。

これまでのところ、アプリケーションのテスト中にこの問題を避けるために使うことができるトリックです:ビーコンをメタルエンクロージャ(ファラデーケージ)に入れ、アプリケーションがビーコンのスキャンを開始した後にエンクロージャからビーコンを取り外します。ビーコン領域への移動をシミュレートします。私はファラデーケージに小さなカクテルシェーカーを使用しますが、少量のアルミホイルも機能します。

+0

私はちょうど[近くのメッセージ](https://cocoapods.org/pods/NearbyMessages)のバージョン1.1.0をiBeaconスキャン修正でリリースしました。何か問題がある場合は教えてください。 –

関連する問題