2017-09-25 107 views
1

我在製作Android應用程序。我們使用JSON鏈接從服務器獲取數據到android應用程序。例如:產品要交付時,服務器端會進行更改,但只有當應用程序發出GET請求時,應用程序纔會知道這些更改。由於此GET請求需要位於後臺服務中,因此我正在使用Alarm Manager。在鬧鐘管理器中,我必須設置特定的時間來檢查json網址中的更改,就像我保留一天的時間間隔一樣。我如何使它動態化,以便在服務器端發生更改時,應用程序將獲取GET請求。我的問題是後臺服務如何知道服務器端實時發生的變化。請幫助。謝謝你的閱讀。在服務器上發生更改時顯示通知

回答

3

您可以使用前臺服務運行所有的時間並在10秒後ping服務器。通過使用這個你可以做到這一點。 或者您也可以使用MQTT在服務器和應用程序之間推送和發佈消息。 您可以參考,這個鏈接,如何使用MQTT Android中 Basic Steps for Using MQTT in android

一步一步說明 https://www.survivingwithandroid.com/2016/10/mqtt-protocol-tutorial.html

這裏是鏈接,MQTT服務在Android上使用。 https://github.com/eclipse/paho.mqtt.android

+0

會嘗試使用Foreground服務,但對於應用程序來說它不是太勞動密集型的,我猜它不能用於推送通知,所以MQTT可能會像你說的那樣有用,但我使用GCM,無論如何感謝您的幫助 –

+0

你肯定是有幫助的!我認爲MQTT只用於I.O.T項目,我知道它也可以用於android也 –

+0

所以請接受我的回答,以便其他人可以從中受益。謝謝@DivyangShah –

1

你檢查出FCM

火力地堡雲消息允許服務器異步JSON消息發送到應用程序。您的應用可以通過實施FCM客戶端接收消息並執行任何操作。

你的選擇可能是:

  1. 只要在服務器上所做的更改,發送FCM消息包含變化的JSON數據體。可能效率低下,因爲需要在FCM消息中發送大量數據。
  2. 每當服務器數據發生變化時,嚮應用程序發送最小的FCM消息。當應用程序獲取此消息時,它可以創建一個GET請求到服務器。因此,只有當數據發生變化並且應用程序已收到有關更改的通知時,纔會需要您的GET請求。
+0

即時通訊不使用firebase,所以我使用GCM,發佈這個問題後,我來了解GCM,我的數據是在PHP服務器上。 –

+0

那麼,如果您要在您的應用程序中整合新的雲消息傳遞服務,我會推薦FCM而不是GCM。 https://medium.com/glucosio-project/whats-new-in-firebase-cloud-messaging-and-how-to-migrate-from-gcm-578019c2167d https://stackoverflow.com/questions/37311188/migration-from-gcm-to-fcm-needed –