2011-03-26 71 views
3

我知道應用內結算是Android中的新功能,我想使用它,但版本要求讓我三思而行,是否值得付出努力。我將非常感謝來自已經實施或使用In App Billing的人員的任何意見。Android應用內結算一般問題

  1. 我還有10%1.5個用戶。在應用賬單中,至少需要1.6才能工作。這是否意味着1.5個用戶會立即崩潰?如果不是,它在什麼時候失敗?我不想寫一堆hacky代碼來保持與1.5個用戶的兼容性。
  2. 如果用戶重新安裝應用程序,是否記住他們的應用程序購買?
  3. 如果您沒有所需的市場版本,它在什麼時候失敗?

謝謝。

+0

不錯的問題+1 – Sameer 2012-02-02 09:13:16

回答

1

關於版本支持,您將編寫一些額外的代碼來檢測設備操作系統版本(請參閱android.os.Build.VERSION),確保它可以在1.5設備上運行。我強烈建議在自己的類中隔離該代碼,並且在版本檢查後僅實例化該類。這樣你的代碼保持乾淨(不是「哈克」),並且你不會意外地從類字段引用1.6+類。在我的代碼中,我擁有如下所示的版本測試類:

public class Android8 { 
    private static final String TAG = "Android8"; 

    // public test variables 
    public static final boolean IS_V8; 
    public static final boolean AT_LEAST_V8; 

    private static final Object pimpl; 

    static { 
     int sdk_int = 0; 
     try { 
      Field field = Build.VERSION.class.getField("SDK"); 
      String sdk_str = (String)field.get(null); 
      sdk_int = Integer.parseInt(sdk_str); 
     } catch(Throwable e) { 
     } 

     IS_V8 = (sdk_int==8); 
     AT_LEAST_V8 = (sdk_int>=8); 

     if(AT_LEAST_V8) { 
      pimpl = new Implementation(); 
     } else { 
      pimpl = null; 
     } 
    } 

    // Version safe interface 
    public static void Camera_setDisplayOrientation(Camera camera, int degrees) { 
     if(AT_LEAST_V8) 
      ((Implementation)pimpl).Camera_setDisplayOrientation(camera, degrees); 
    } 

    // Will cause a verify error if loaded in a pre Android8 environment 
    private static final class Implementation { 
     public static void Camera_setDisplayOrientation(Camera camera, int degrees) { 
      camera.setDisplayOrientation(degrees); 
     } 
    } 
} 
1

問題2:否,如果項目處於UNMANAGED狀態。是的,如果他們是。 這就是管理項目的重點,讓我們的Google服務器管理(remenber)爲這種情況下購買的項目。

(如果您銷售的是遊戲級別或應用程序功能等項目,則「用戶帳戶管理」購買類型非常有用,這些項目不是臨時性的,通常需要在用戶重新安裝應用程序時恢復,擦除數據或者將您的應用程序安裝到新設備上。)

來自:http://developer.android.com/guide/market/billing/billing_admin.html#billing-purchase-type