私がしたこと:-
私はジンバル ビーコンを使用しており、 "angular js + ionic + cordova"を使用してハイブリッド アプリケーションを作成しています。アプリケーションは正常に動作していますが、フォアグラウンドとバックグラウンドの両方でビーコンの入力と終了に時間がかかりすぎます。この問題を解決するにはどうすればよいですか?コード スニペットを以下に添付します。
手順:-
まず、cordova を使用して angular からデリゲートを呼び出しています
私の iOS デリゲート メソッドが呼び出されますが、長い遅延の後
didEnterRegion - 10 秒後に呼び出されます
didExitRegion - 20 ~ 30 秒後に呼び出されます
ジンバル送信間隔 (MS) を 100 に設定しました
私のスニペット:-
Angular-js スニペット:
// Request permission from user to access location info.
cordova.plugins.locationManager.requestAlwaysAuthorization();
// Create delegate object that holds beacon callback functions.
var delegate = new cordova.plugins.locationManager.Delegate();
console.log(delegate)
cordova.plugins.locationManager.setDelegate(delegate);
// Set delegate functions.
delegate.didDetermineStateForRegion = onDidDetermineStateForRegion;
delegate.didRangeBeaconsInRegion = onDidRangeBeaconsInRegion;
delegate.didEnterRegion = onDidRangeBeaconsInRegion
iOS スニペット:-
-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {
[self.queue addOperationWithBlock:^{
[self _handleCallSafely:^CDVPluginResult *(CDVInvokedUrlCommand *command) {
[[self getLogger] debugLog:@"didEnterRegion: %@", region.identifier];
[[self getLogger] debugNotification:@"didEnterRegion: %@", region.identifier];
NSMutableDictionary* dict = [NSMutableDictionary new];
[dict setObject:[self jsCallbackNameForSelector:(_cmd)] forKey:@"eventType"];
[dict setObject:[self mapOfRegion:region] forKey:@"region"];
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:dict];
[pluginResult setKeepCallbackAsBool:YES];
return pluginResult;
} :nil :NO :self.delegateCallbackId];
}];
}
-(void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region {
[self.queue addOperationWithBlock:^{
[self _handleCallSafely:^CDVPluginResult *(CDVInvokedUrlCommand *command) {
[[self getLogger] debugLog:@"didExitRegion: %@", region.identifier];
[[self getLogger] debugNotification:@"didExitRegion: %@", region.identifier];
NSMutableDictionary* dict = [NSMutableDictionary new];
[dict setObject:[self jsCallbackNameForSelector:(_cmd)] forKey:@"eventType"];
[dict setObject:[self mapOfRegion:region] forKey:@"region"];
CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:dict];
[pluginResult setKeepCallbackAsBool:YES];
return pluginResult;
} :nil :NO :self.delegateCallbackId];
}];
}