2014-01-09 46 views
7

我在Google Play商店中成功獲得應用付費,並希望將此應用更新爲免費應用內購買。使用應用內購買將已付費的Android應用更改爲免費應用

我剛剛完成開發應用程序的免費版本,該應用程序允許用戶限制訪問,然後可以使用應用內購買系統解鎖。

我遇到的問題是,所有爲應用付費的現有用戶都會升級,然後再次被提示重新付費,當然這是不對的。

是否有任何方法檢查用戶的購買歷史記錄,確定他們之前是否爲應用付費過,並在沒有應用內購買的情況下解鎖額外功能?

感謝您的任何幫助。 劉易斯

+0

你不能做到這一點 – Goofy

+0

你能找到一個解決辦法?我處於同一位置,可以通過應用結算方式免費獲得付費應用 – abedfar

回答

4

它已經過了一年,所以OP可能不需要這個,但萬一別人發生在這一個...

你可以處理這個幾個方法。很明顯,您的新應用內購買應用有一些業務邏輯來跟蹤誰已付/未付款。所以這兩種方式我看你能去這個問題如下:

理念1:

你可以做一個初步的更新您的付費應用程序,存儲SharedPreference或一些其他持久性應用程序(你可以存儲versionCode,所以你知道你要升級什麼,並且有業務邏輯)。然後更新到免費版本,並有免費版本檢查您的共享偏好,並從「付費」versionCode更新做正確的事情。

理念2:

你可以保留兩個獨立的應用程序(有付費版本,並在應用內購買免費)和推送更新到付費版本有一個BroadcastReceiver並沒有真正除了聽特定的意圖之外別做任何事情,並進行應用內購買檢查,看看是否有東西會接收到您的定製意圖。如果您的舊付費版本存在,那麼他們就會付錢,如果不是這樣的話。 (如果他們支付的付費版然後卸載你就會有很明顯的問題...)

理念3:

你可以保留兩個獨立的應用程序(有付費版本,並在 - 免費應用程序購買),並將更新推送到付費版本,只需發佈​​Intent以打開應用程序內購買應用程序(如果已安裝)並附帶一些特殊參數,讓他們知道他們通過付費應用程序打開了應用程序,並執行正確操作把它們設置爲在應用程序中支付它的東西。打開自己了一些檢測問題,但...(可解,但那種笨重)

0

對於Google Play而言,支付應用程序或免費下載應用程序並無區別。例如,如果用戶在免費下載應用程序的情況下下載應用程序,並且以後更改爲付費應用程序,則該用戶仍可以完全訪問該應用程序,甚至可以在其他設備上下載該應用程序。

有一些跛變通爲:

  • 啓用付費版本google play game services並試圖說服用戶連接到它。使用谷歌播放服務,將「付費購買」信息存儲到雲中,並在用戶登錄時將其恢復。
  • 給所有購買了某些密鑰的用戶解鎖功能
  • 爲免費版本創建一個不同的遊戲

這就是說,請記住,許多遊戲已經在一段時間後變得自由了。也許用戶不會介意那麼多。

1

您可以保留現有的付費版本並創建另一個免費版本。

如果您確實不想擁有2個版本,只需將其免費並告訴用戶「如果您購買了付費版本,請與我們聯繫。我們會給你兌換代碼解鎖xxx'。

0

https://developer.android.com/distribute/tools/launch-checklist.html#decide-price

此鏈接似乎有關,希望它有助於

在谷歌Play上,您可以發佈應用程序免費下載或定價。 Google Play中的任何Android用戶均可下載免費應用。付費應用程序只能由位於支持付費下載的國家/地區的用戶下載,並且可以在Google Play中註冊一種付款方式,例如信用卡或Direct Carrier結算。

確定您的應用是免費還是付費很重要,因爲在Google Play上,免費應用必須保持免費。

將應用程序作爲免費應用程序發佈後,無法將其更改爲定價應用程序。不過,您仍然可以通過Google Play的應用內結算服務銷售應用內商品和訂閱。 如果您將應用作爲定價應用發佈,您可以隨時將其更改爲免費應用(但不能將其更改爲定價)。您還可以銷售應用內商品和訂閱。 如果您的應用需要定價,或者您要銷售應用內商品,則需要先設置Google Payments商家帳戶,然後才能發佈。

0

我覺得最簡單的方法是使用密碼

這給你的舊版本代碼

SharedPreferences prefs = getSharedPreferences("Name_of_Prefs", MODE_PRIVATE); 
int oldVersionCode = prefs.getInt("version_code", -1); 

這給你的當前版本的代碼theese行

int currentVersionCode = getPackageManager().getPackageInfo(getPackageName(),0).versionCode; 

現在你可以比較和做你想做的事情。不要忘記,每次 與這行代碼後更新

prefs.edit().putInt(PREF_VERSION_CODE_KEY, currentVersionCode).commit(); 
相關問題