我正在尝试将geofencing实施到我的代号为一个应用程序。我在github上的示例中给出了所有内容,但我的输入和退出方法似乎没有被触发。我在构建提示中包含了GPlayServices以及android.playService。*和ios.locationUsageDescription。
我试过用ios和android设备测试它。
以下是我的代码
在onStart()方法中
public void start() {
if(current != null){
current.show();
return;
}
u = new UIBuilder();
Display.getInstance().lockOrientation(true);
Location loc = new Location();
loc.setLatitude(-26.15739);
loc.setLongitude(28.127099999999928);
Geofence gf = new Geofence("test", loc, 1000, 100000);
LocationManager.getLocationManager().addGeoFencing(GeofenceListenerImpl.class, gf);
if (Preferences.get("userId", "error").equals("error")) {
setUpLoginForm();
} else {
setUpMainPage();
}
}
实施
public class GeofenceListenerImpl implements GeofenceListener {
public GeofenceListenerImpl() {
}
public void onExit(String id) {
if(Display.getInstance().isMinimized()) {
LocalNotification ln = new LocalNotification();
ln.setId("LnMessage1");
ln.setAlertTitle("Welcome");
ln.setAlertBody("Thanks for arriving! isminimized");
Display.getInstance().scheduleLocalNotification(ln, System.currentTimeMillis() + 1000, LocalNotification.REPEAT_NONE);
} else {
Display.getInstance().callSerially(new Runnable(){
public void run() {
Dialog.show("Welcome", "Thanks for arriving notminimized ", "OK", null);
}
});
}
}
public void onEntered(String id) {
if(Display.getInstance().isMinimized()) {
LocalNotification ln = new LocalNotification();
ln.setId("LnMessage2");
ln.setAlertTitle("Welcome");
ln.setAlertBody("Thanks for arriving! isminimized");
Display.getInstance().scheduleLocalNotification(ln,
System.currentTimeMillis() + 1000, LocalNotification.REPEAT_NONE);
} else {
Display.getInstance().callSerially(new Runnable(){
public void run() {
Dialog.show("Welcome", "Thanks for arriving
notminimized ", "OK", null);
}
});
}
}
}
答案 0 :(得分:1)
通过google挖掘后我发现我必须添加构建提示:ios.background_modes = location,现在当应用程序第一次在设备上打开时,它会要求用户允许用户轮询其位置。背景。然而,地理围栏仍然没有触发,我会玩我的价值观。 Android有类似的构建提示吗?因为在Android设备上它仍然没有拉动该位置。