0

如下所以我建立的地理围栏:地理栅栏触发程序说明需要?

GeofenceModel modelExit = new GeofenceModel.Builder("id_oi_456") 
       .setTransition(Geofence.GEOFENCE_TRANSITION_DWELL) 
       .setExpiration(Geofence.NEVER_EXPIRE) 
       .setLatitude(40.414341) 
       .setLongitude(49.928548) 
       .setRadius(CLIENT_GEOFENCE_RADIUS) 
       .build(); 


    SmartLocation.with(this).geofencing() 
       .add(modelExit) 
       .start(this); 

我一次运行此代码,这里面居住的地理围栏(如预期)时触发。然后我删除该代码段并重新运行该项目。但是,即使设置了NEVER_EXPIRE,地理围栏也不会触发。所以基本上我想知道的是geonfences存储在哪里。如果它们存储在应用程序内存之外,那么为什么“删除代码段”会清除地理围栏?

回答

2

我认为它按预期工作。重新运行的项目会将该应用视为全新安装。正如文件中指出 - Use Best Practices for Geofencing

应用程序必须重新注册地理围栏,如果他们出现下列情况之后仍然需要,因为系统无法恢复的地理围栏在下列情况下:

  • 该设备重新启动。应用程序应该监听设备的启动完成操作,然后重新注册所需的地理栅栏。
  • 该应用程序已卸载并重新安装。
  • 该应用程序的数据被清除。
  • Google Play服务数据已清除。
  • 该应用已收到GEOFENCE_NOT_AVAILABLE通知。这通常发生在NLP(Android的网络位置提供程序)被禁用之后。

希望这会有所帮助。