2013-01-14 129 views
7

在我正在開發的Android應用中,我希望能夠根據用戶的位置向用戶的手機發送通知。例如,一位用戶在當地餐館的特殊優惠中獲得通知。根據用戶位置發送通知

我想知道做到這一點的最佳方法? (沒有代碼,只是如何做的一般結構)。

我已經想到了兩種可能的方式:

方法1:

1)安裝了該應用獲取用戶的位置,並報告給服務器每5分鐘。 2)如果用戶位於設置的位置半徑,向他們發送通知。

方式2:

1)發送出通知和使用的應用廣播接收器的方法/ s的過濾和僅顯示通知來在正確的區域內的用戶。

這兩種方式看起來都非常低效,因爲方式1依賴於持續運行的服務,而方式2嚮應用程序的所有用戶發送通知,並且由於通知將非常區域化,所以幾乎100%的時間通知不會與用戶相關(因此未顯示)。

我已經寫了GCM代碼,也可以得到用戶的位置,我只需要一種方式來鏈接它們。

我希望我已經明確提出了我的問題。

+0

你最終決定了什麼? –

回答

5

'Way 1.5'(1和2的組合)怎麼樣?

您可以獲取用戶的位置並將其發送到服務。 它將使用廣泛的範圍(例如城市範圍)進行通知。 應用程序將只顯示實際範圍的通知。

但是,應用程序知道廣泛範圍的通知,所以如果用戶移動,應用程序能夠在不連接到服務的情況下顯示新的通知(在廣泛範圍內)。

一些額外的想法:

  • 如果用戶離開廣泛,應用程序可以自動連接到 您的服務再次請求新一批的通知。
  • 您可以使廣泛的範圍可配置,因此用戶可以偏好大量的通信或更廣泛的範圍。
  • 根據用戶的速度(例如,如果他(她)在汽車或步行中),可以調整廣泛的通知範圍。
+1

「如果用戶離開廣泛範圍」 - 該服務如何解決這個問題?一箇中心點和一個來自服務器的半徑,然後檢查它是否仍然在圈內? –

+0

該服務可以發送這些詳細信息(例如中心點和半徑)以及其他信息,因此您的應用程序可以檢查是否需要更新。不需要用這個打擾服務! – Veger