3

我知道应用内计费是 Android 中的新功能,我想使用它,但版本要求让我三思而后行是否值得。我将不胜感激那些详细实施或使用 In App Billing 的人提供的任何意见。

  1. 我还有 10% 的 1.5 个用户。应用内计费需要至少 1.6 才能工作。这是否意味着 1.5 个用户会立即崩溃?如果没有,它在什么时候失败?我不想编写一堆 hacky 代码来保持与 1.5 用户的兼容性。
  2. 如果用户重新安装应用程序,是否会记住他们购买的应用程序?
  3. 如果您没有所需的市场版本,它会在什么时候失败?

谢谢。

4

2 回答 2

1

关于版本支持,您将编写一些额外的代码来检测设备操作系统版本(请参阅 android.os.Build.VERSION),因此请确保它可以在 1.5 设备上运行。我强烈建议将该代码隔离在其自己的类中,并且仅在您的版本检查后实例化该类。这样你的代码就会保持干净(不是“hacky”),而且你不会意外地从类字段中引用 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 );
        }
    }
}
于 2011-03-26T18:30:14.003 回答
1

问题 2:否,如果项目未管理。是的,如果他们是的话。这就是托管项目的重点,让谷歌的服务器管理(记住)此类案例的购买项目。

(如果您要销售游戏关卡或应用程序功能等物品,“按用户帐户管理”购买类型很有用。这些物品不是临时的,通常需要在用户重新安装您的应用程序时恢复,擦除他们设备上的数据,或在新设备上安装您的应用程序。)

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

于 2011-03-29T11:59:15.887 回答