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的網絡位置提供程序)被禁用之後。

希望這會有所幫助。