2012-01-18 87 views
16

我目前在Android市場上有兩個版本的我的應用程序,一個是付費的,一個是免費的。但我希望將應用內付款整合到我的免費應用程序中,並在訂閱基礎上向客戶收費,價格低於付費應用程序的當前價格。如何從付費Android應用程序遷移到使用應用內結算付費的應用程序?

但是,我應該如何處理現有客戶?讓他們再次支付使用付費功能似乎是不公平的,而他們是我的應用程序的早期採用者。理想情況下,我實現了一些可以讓現有用戶訪問我的免費應用程序中的解鎖功能的東西。

有關如何完成此任務的任何想法?一個好的方法的提綱就足夠了,我不介意去研究如何真正實現這種方法。

+2

您是否曾經爲此找到過解決方案?我正在考慮做同樣的事情,需要找到一種方法爲現有付費用戶提供我打算通過應用內購買解鎖的功能。我正在考慮做這樣的事情(http://stackoverflow.com/questions/2133986/how-to-know-my-android-application-has-been-upgraded-in-order-to-reset-an-alarm)以檢測升級與乾淨安裝,但擔心它不會像給現有用戶免費提供適當的應用內購買那樣安全(如果可能的話)。 – 2012-12-31 03:28:50

+0

我還沒有找到解決方案。我正在考慮一個解決方案,用於檢查付費應用是否安裝在設備上,如果有,請向已更新的免費應用的共享首選項添加條目,並在應用內訂閱,以指示用戶應具有解鎖功能我的應用程序但我還沒有花時間研究這種解決方案的優缺點。 – 2013-01-07 11:05:04

+0

@ Jan-Henk找到解決方案了嗎?你是怎麼做到的?我也願意實施這一點。分享我的經驗。我買了SwiftKey付費版本。然後Swiftkey變成了應用購買的概念。我不知道他們是如何做到的,但他們「知道」我是付費用戶,並讓我有1個免費主題。 – rxlky 2015-05-18 03:31:24

回答

-1

Android開發網站涵蓋了這個相當不錯。

http://developer.android.com/guide/market/billing/index.html

+7

您的鏈接涵蓋了如何實現應用內結算,但我的問題的主要焦點是如何將用戶從現有的付費應用程序遷移到實施應用程序內結算的免費應用程序。我正在尋找一種解決方案,讓這些用戶不必再次支付。 – 2012-01-18 23:07:50

+0

Android開發站點根本不包括這個用例。 – donturner 2015-07-15 20:43:31

0

糾正我,如果我的理解不正確。您提到的訂閱方式意味着用戶詳細信息+數據庫+附加信息?

如果你的應用程序沒有數據庫或任何東西來保存用戶記錄。我會建議發佈更新付費應用程序,並啓用sharedpreference或通用的ini文件。 使用免費的應用程序來閱讀相同的sharedpreferenece文件或您自己的ini文件來讀取設置。

去數據庫將幫助您在未來進行更多的客戶關係活動。

1
  • 遞增數據庫版本(例如34 - > 35)
  • 在方法SqliteOpenHelper解鎖特徵爲先前用戶

實施例:

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 
    if(oldVersion != 0 and oldVersion <= 34){ 
     appConf.unlockAllFeatures() 
    } 
} 
  • 如果應用程序不使用數據庫,在onCreate中執行,但請注意,在第一次調用數據庫時調用onCreate
2

你可以保留付費您免費/ IAB版本,但它們基礎上都相同的庫項目,這樣你就必須只有一套源文件的維護。圖書館項目可以解鎖目前付費用戶可用於付費版本的所有功能(例如通過測試應用程序的軟件包名稱激活),並且只有在通過IAB付款後才能解鎖免費版本的相同功能。

這也可以讓您向付費版本的用戶收取除付費應用程序之外的附加功能的附加功能,如果您將來添加一些真正意義上的功能並且想要額外收費這些金額。

它還有一個好處,就是你現在的付費用戶根本不用做任何事情;對他們來說,似乎沒有發生變化。尤其是,他們不必安裝免費/ IAB應用程序,或者通過任何特殊的授權程序。

缺點是你將不得不爲每個版本構建和上傳兩個項目。但是,這可能會部分自動化。

+0

只是注意到你的問題是2012年!這裏的其他一些答案是從2013年開始的,所以我錯過了這一點。希望你已經解決了你的問題;也許這個答案會幫助別人。 – Carl 2013-01-19 13:04:57

4

發佈一個單獨的免費版本的應用程序;使用付費版本,就好像它是免費版的許可證密鑰一樣。

PackageManager manager = getPackageManager(); 
if (manager.checkSignatures("old.package.name", "new.package.name") 
    == PackageManager.SIGNATURE_MATCH) { 
    //full version 
} 
+0

這是最簡單的解決方案。天才! – hunterp 2013-11-14 22:40:30

+1

這是一個簡單的解決方案,但是它不需要用戶安裝舊付費應用程序,即使他們不再使用它了嗎? – 2014-07-30 07:42:08

+0

如果用戶安裝了付費應用程序,那麼您可以運行一次檢查,然後將結果存儲在持久性存儲中,以便後續運行免費應用程序時始終運行完整版本。完成後,您可以向用戶顯示一個對話框,告訴他們卸載付費版本。 – donturner 2015-07-15 20:38:35

相關問題