Android In-App биллинг общие вопросы - PullRequest
3 голосов
/ 26 марта 2011

Я знаю, что биллинг в приложении является новым в Android, и я хотел бы его использовать, но требования к версии заставляют меня дважды подумать, стоит ли это усилий. Буду признателен за любую информацию от тех, кто реализовал или работал с In App Billing подробно.

  1. У меня все еще есть 10% 1,5 пользователей. В приложении биллинга требуется как минимум 1.6 для работы. Означает ли это, что 1,5 пользователя сразу вылетят? Если нет, то в какой момент он терпит неудачу? Я не хочу писать кучу хакерского кода, чтобы оставаться совместимым с 1,5 пользователями.
  2. Если пользователь переустанавливает приложение, запоминаются ли его покупки?
  3. В какой момент происходит сбой, если у вас нет нужной версии Market?

Спасибо.

Ответы [ 2 ]

1 голос
/ 29 марта 2011

Вопрос 2: НЕТ, если предметы НЕ ОБРАБОТАНЫ. Да, если они есть. В этом все дело с управляемыми предметами, давайте позволим серверам Google управлять (переименовывать) купленными предметами для такого рода дел.

(Тип покупки «Управление по учетной записи пользователя» полезен, если вы продаете такие предметы, как игровые уровни или функции приложения. Эти элементы не являются временными и обычно требуют восстановления, когда пользователь переустанавливает ваше приложение, стирает данные с их устройство, или устанавливает ваше приложение на новом устройстве.)

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

1 голос
/ 26 марта 2011

Что касается поддержки версий, вам придется написать дополнительный код для определения версии ОС устройства (см. 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 );
        }
    }
}
...