Android应用内结算一般问题

时间:2011-03-26 18:08:46

标签: android billing

我知道应用内结算是Android中的新功能,我想使用它,但版本要求让我三思而后行是否值得付出努力。我非常感谢那些已经实施或使用In App Billing的人提供的任何意见。

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

2 个答案:

答案 0 :(得分: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 );
        }
    }
}

答案 1 :(得分:1)

问题2:否,如果项目是UNMANAGED。是的,如果是的话。 这就是托管项目的重点,让谷歌的服务器为这类案件管理(重新)购买的物品。

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

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