2016-07-27 57 views
0

例如在這個page MSDN說:註冊的地理柵欄不會觸發輸入的事件兩次。爲什麼?

地理圍欄被保存在磁盤上,所以他們只需要添加到系統中一次。

但我想不出如何「使用」該功能。只有當我清除地理柵欄監視器(GeofenceMonitor.Current.Geofences.Clear();),然後重新創建它們或重新啓動設備時,我的應用程序纔會爲註冊的地理柵欄輸入事件。

要明白我的問題,我有這樣的情景官方MS UWP地理位置樣本:在菜單

  1. open UWP geolocation sample
  2. 第4項是:前景區域範圍設定
  3. 創建新的地理圍欄之後,使用此設置按鈕
  4. 註冊地理柵欄中出現新的地理柵欄
  5. 因爲我在幾秒鐘後在此處設置了按鈕,我在事件框中輸入了事件框
  6. 一切都OK
  7. 當我關閉應用程序,並再次運行它,我發現,從以前的(如預期),但在這裏註冊的地理圍欄框創建地理圍欄是我的問題 - 它永遠不會再次閃光進入事件

你能解釋一下我的原因嗎?這些是我需要調用的一些「重新註冊方法」嗎?或者我從壞的角度看待這個問題?或者我的方法是在每個應用程序啓動時調用GeofenceMonitor.Current.Geofences.Clear();

感謝

回答

0

在你的腳步,我沒有看到你觸發已退出狀態。如果您始終停留在您設置的地理圍欄中,則在您運行時不會觸發GeofenceStateChanged,並且同樣,後臺任務中的​​也不會觸發。所以你不會得到進入狀態兩次。如果您先離開地理圍欄,然後再次運行應用,則會在「事件」框中收到「已輸入」事件。

此外,以確保地理圍欄可以多次使用,我們需要設置Geofence.SingleUse propertyfalseGeofence.Duration property到足夠大的時間間隔或0

的時間間隔對於如何在UWP使用地理圍欄應用程序,請參閱Guidelines for geofencing appsSet up a geofence。如果您使用的是Mobile Emulator,則可以參考此博客:Using the Windows Phone Emulator for testing apps with geofencing

+0

謝謝。那麼是否有可能在進入輸入狀態後(例如10分鐘後)強制觸發退出狀態?或者,我是否必須採取一些解決方法,並在刪除和添加剛纔輸入的地理圍欄時使用? –

+0

@HonzaBejvl AFAIK,我們不能強迫觸發退出狀態。我不確定你爲什麼需要這樣做。通常,用戶不會始終處於地理圍欄中,退出狀態應該能夠遲早被觸發。但是,通過使用Geofence.Duration屬性,我們可以在一段時間後移除地理圍欄。或者我們可以使用計時器(例如[ThreadPoolTimer](https://msdn.microsoft.com/en-us/library/windows/apps/windows.system.threading。threadpooltimer))在進入Entered狀態時做我們想做的事情。 –

+0

謝謝你的幫助。我終於解決了這個。我知道通常用戶會離開籬笆,但這不是這種情況。我的應用程序告訴用戶附近有巴士站時。我必須使用相對較大的圍欄半徑,因此用戶很可能會在應用程序啓動的相同圍欄關閉應用程序。解決方案:當地理柵欄進入輸入狀態時,我保存地理柵欄的ID,當柵欄進入退出狀態時,我刪除該保存的ID。 - >在啓動過程中,我刪除並添加所有已保存的柵欄(通常爲0-3),因爲我只有250個柵欄,所以解決方案並不昂貴。 –

相關問題