Как вы поддерживаете 2 набора кода покупки в приложении для Google Play и Amazon App Store

Из опроса за последний год (не уверен, что он все еще актуален) кажется, что разработчики получают больше дохода в Amazon App Store, чем в Google Play. Это удивительно, так как я думал, что Google Play есть на каждом Android-устройстве. Предполагается, что он будет приносить наибольший доход. Не уверен, почему.

Поэтому я планировал попробовать в Amazon App Store. Однако я понимаю, что мне нужно поддерживать 2 набора кода покупки в приложении для Google Play и Amazon App Store?

Мне интересно, как большинство из вас поддерживает такой код? Помимо использования RoboBillingLibrary . Я по-прежнему стараюсь не полагаться на сторонние библиотеки, если только мне это действительно не нужно. Поскольку не так просто иметь стабильный поток покупок в приложении. Время от времени я получаю отчет о сбое, связанный с покупкой в ​​приложении, и понятия не имею, почему. Хотя почти весь код просто копирует и вставляет из официального примера кода.


person Cheok Yan Cheng    schedule 27.06.2013    source источник


Ответы (1)


Я использую BAT-файл для сборки разных версий (Android, Kindle Fire, iOS). Каждая версия создается с различным значением символа условной компиляции, который указывает целевой рынок.

Я использую этот подход для своего кода:

  1. Создайте интерфейс IBilling, типичными членами которого являются init(), isAvailable(), Purchase(sku), getInventory(player) и т. д.
  2. Создайте классы Billing, BillingGoogle, BillingAmazon и BillingApple. Все внедряют IBilling.
  3. В каждом методе основного класса Billing символ условной компиляции используется для вызова соответствующего метода в одном из трех рыночных классов Billing. Код для конкретного рынка обрабатывает детали.

    class Billing implements IBilling
    {
        void init() 
        {
           if marketplace-conditional-var == 'G'
                 BillingGoogle.init();
           if marketplace-conditional-var == 'A'
                 BillingAmazon.init();
           if marketplace-conditional-var == 'P'
                 BillingApple.init();
        }
    
        // similar code for isAvailable(), purchase(sku), etc. follows
     }
    
person Greg    schedule 27.06.2013