2016-05-12 73 views
-1

上週我推出了一款移動應用程序,適用於iOS和Android(如果這可能會產生任何影響,則使用離子框架構建)。事實上,它更像是一個測試版本。 現在,有人已經安裝了該應用程序。不是那麼多,但無論如何。 我現在開發了一個新版本。事情是,該應用程序依賴於服務器。而服務器已經改變了很多東西。 因此,商店上的客戶端應用程序與服務器代碼並不真正同步。 當我發佈此應用程序的更新版本時,那些使用「舊」應用程序的人將獲得真正無法預料的結果的機會非常大。發佈更新的移動應用程序版本

有沒有一個標準的方法來面對這個?我無法通知用戶該應用程序已過時,但僅依靠操作系統告訴用戶有可用的新版本。

+0

你使用推送通知嗎? –

回答

2

這確實是一個通用的編程問題,這無關任何具體的平臺。

您的應用程序的版本1,需要您的服務器API 1.0版本,然後你需要更新服務器的API第2版爲您的應用程序的版本2。

在您的應用第2版發佈後,您的用戶羣將同時包含應用的版本1和版本2。

這意味着您的服務器需要能夠響應其兩個版本的API。有幾種可能的方式來支持這一點。

  1. 對每個版本兩種完全不同的URL。例如:http://version1.server.com/ ...和http://version2.server.com/ ...只需在每個應用程序中使用正確的URL。
  2. 將版本號作爲URL的一部分傳遞。例如:http://server.com?ver=2&other=whatever。如果URL中沒有ver參數,您可以讓服務器採用版本1。

的關鍵點在於應用的1.0版本是在那裏。服務器需要在一段時間內支持該版本的API。服務器需要一種支持兩者的方式。因此,應用程序的第2版現在可以在發佈之前進行修復,以便在服務器上進行任何更改以支持其舊API和新API。

+1

注意:方式#1仍然依賴於應用程序的版本。方式#1和#2之間的區別就在於你有代碼來處理這兩個版本 - 在服務器或應用程序上。但是,這兩種方式都有效! :) – mray190

+2

@ mray190不是。該應用的第1版已經寫入使用特定的URL。這不能改變。但應用程序的第2版可以更改(在發佈之前),以使用不同的URL。所以選項1仍然可以完成,並且不需要應用程序的版本。 – rmaddy

+0

唉好點!完全滑了我的腦海... – mray190

-1

假設一箇舊版本的應用程序試圖與服務器進行通信,可以在服務器上輕鬆地檢測這一點,並告訴它該應用程序需要更新的用戶(比如如何的WhatsApp /其他郵件客戶端)。

1

作爲一名應用程序開發人員,這一直都是您頭腦中的首要問題。這會發生,並且也是非常頻繁的。

你應該做的是向服務器發送每一個請求,你應該提供應用程序版本。您的後端應該使用這個應用程序版本來解釋您的請求的參數並相應地爲移動應用程序提供服務。

在Android上,您可以使用以下讓你的應用程序版本:

String vName, vCode; 
try { 
    PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0); 
    vName = pInfo.versionName; 
    vCode = Integer.toString(pInfo.versionCode); 
} catch (Exception) { 
    Log.d("App","Error!"); 
} 
2

也許有點晚了,但規劃:

1)在您的服務器「商店」應用程序的最新版本號(我用火力地堡這個)。當您的應用程序運行時,讓它根據存儲在服務器上的版本號來檢查其版本號。因此,如果該應用程序已過期,您可以立即顯示一條消息,通知用戶進行更新。 (也許甚至還從服務器檢索到定製消息,通知他們這個特定更新的相對重要性)

2)如果可行,您可以確保您的服務器同時爲較舊版本和較新版本維護工作代碼。在您的Google Analytics中,一旦您看到每個人都在使用新版本,就可以刪除舊的支持代碼。

1

如果您使用的是push notification,您可以使用它,或者您可以將API服務剪切到此應用程序以強制用戶重新安裝您的應用程序。

相關問題