Amazon In App Purchase в Live тестирование приложений не работает - PullRequest
0 голосов
/ 16 июня 2019

Я столкнулся с некоторыми проблемами при покупке приложений в Amazon в тестировании приложений. Я застрял в этом с прошлых 4-5 дней, перепробовал много решений, но не мог двигаться дальше. Я использую Amazon в приложении покупки SDK. Я взял пример проекта, который поставляется с Amazon SDK. Я изменил свой SKU в нем, для локального тестирования я использую App Tester, и приложение работает нормально. Теперь я загрузил приложение для тестирования приложения Live и создал элемент IAP в учетной записи Amazon, после чего приложение в режиме тестирования приложения Live перестало работать.

Код активности на резюме ниже-

 @Override
    protected void onResume() {
        super.onResume();
        sampleIapManager.activate();
        Log.d(TAG, "onResume: call getUserData");
        PurchasingService.getUserData();
        Log.d(TAG, "onResume: getPurchaseUpdates");
        PurchasingService.getPurchaseUpdates(false);

        System.out.println(TAG + " onResume: call getProductData for skus: " + MySku.values());
        final Set<String> productSkus = new HashSet<String>();
        for (final MySku mySku : MySku.values()) {
            System.out.println("TAG , SKU information = "+mySku.getSku());
            productSkus.add(mySku.getSku());
        }
        PurchasingService.getProductData(productSkus);

    }

SKU JSON, определенный в магазине -

{
  "com.amazon.sample.iap.subscription.mymagazine.quarter": {
    "smallIconUrl": "https://com-amazon-mas-catalog.s3.amazonaws.com/amzn1.devportal.fileupload.6b3d68d2073e4bfb9f9d273448d51cc6_23d65d61-4fb7-44bd-b7c1-aeb6bc885981_09a3dbc2307fb170a718a981c150c1f1",
    "title": "Subscription Plan",
    "itemType": "SUBSCRIPTION",
    "price": 12,
    "description": "Subscription to My Magazine",
    "languageTitleMap": {
      "US": "Subscription Plan"
    },
    "languageDescriptionMap": {
      "US": "Subscription to My Magazine"
    },
    "currencyPriceMap": {
      "US": 0
    },
    "subscriptionParent": "com.amazon.sample.iap.subscription.mymagazine"
  },
  "com.amazon.sample.iap.subscription.mymagazine.month": {
    "smallIconUrl": "https://com-amazon-mas-catalog.s3.amazonaws.com/amzn1.devportal.fileupload.6b3d68d2073e4bfb9f9d273448d51cc6_23d65d61-4fb7-44bd-b7c1-aeb6bc885981_09a3dbc2307fb170a718a981c150c1f1",
    "title": "Subscription Plan",
    "itemType": "SUBSCRIPTION",
    "price": 5,
    "description": "Subscription to My Magazine",
    "languageTitleMap": {
      "US": "Subscription Plan"
    },
    "languageDescriptionMap": {
      "US": "Subscription to My Magazine"
    },
    "currencyPriceMap": {
      "US": 0
    },
    "subscriptionParent": "com.amazon.sample.iap.subscription.mymagazine"
  }
}

MySku.java в коде -

    package com.example.sampleiap;
/**
 * 
 * MySku enum contains all In App Purchase products definition that the sample
 * app will use. The product definition includes two properties: "SKU" and
 * "Available Marketplace".
 * 
 */
public enum MySku {

    //The only subscription product used in this sample app
    MY_MAGAZINE_SUBS("com.amazon.sample.iap.subscription.mymagazine", "US"),
    MY_MAGAZINE_SUBS_MONTH("com.amazon.sample.iap.subscription.mymagazine.month", "US"),
    MY_MAGAZINE_SUBS_QUARTER("com.amazon.sample.iap.subscription.mymagazine.quarter", "US");

    private final String sku;
    private final String availableMarkpetplace;

    /**
     * Returns the Sku string of the MySku object
     * @return
     */
    public String getSku() {
        return this.sku;
    }

    /**
     * Returns the Available Marketplace of the MySku object
     * @return
     */
    public String getAvailableMarketplace() {
        return this.availableMarkpetplace;
    }

    private MySku(final String sku, final String availableMarkpetplace) {
        this.sku = sku;
        this.availableMarkpetplace = availableMarkpetplace;
    }

    /**
     * Returns the MySku object from the specified Sku and marketplace value.
     * @param sku
     * @param marketplace
     * @return
     */
    public static MySku fromSku(final String sku, final String marketplace) {
       /* if (MY_MAGAZINE_SUBS.getSku().equals(sku) && (null == marketplace || MY_MAGAZINE_SUBS.getAvailableMarketplace()
                .equals(marketplace))) {
            return MY_MAGAZINE_SUBS;
        }*/

        return MY_MAGAZINE_SUBS.getSku().equals(sku) && (null == marketplace || MY_MAGAZINE_SUBS.getAvailableMarketplace()
                .equals(marketplace)) ? MY_MAGAZINE_SUBS :

                (MY_MAGAZINE_SUBS_MONTH.getSku().equals(sku) && (marketplace == null || MY_MAGAZINE_SUBS_MONTH.getAvailableMarketplace().equals(marketplace)))
                ? MY_MAGAZINE_SUBS_MONTH : (MY_MAGAZINE_SUBS_QUARTER.getSku().equals(sku) && (marketplace == null || MY_MAGAZINE_SUBS_QUARTER.getAvailableMarketplace().equals(marketplace))) ? MY_MAGAZINE_SUBS_QUARTER : null;

    }

}

Код сборки.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "com.example.sampleiapus"
        minSdkVersion 15
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation files('libs/in-app-purchasing-2.0.76.jar')
}

Файл Proguard -

-dontwarn com.amazon.**
-keep class com.amazon.** {*;}
-keepattributes *Annotation*
-optimizations !code/allocation/variable

Если файл proguard не содержит -оптимизаций! Code / allocation / variable затем, когда я нажимаю кнопку покупки, появляется диалоговое окно с сообщением об ошибке.

enter image description here

и если я помещаю строку -optimizations! Code / allocation / variable , то я не получаю событие onPurchase. Пожалуйста, помогите мне в этом. я застрял с прошлых 5 дней в нем. Заранее спасибо

1 Ответ

0 голосов
/ 20 июня 2019

Отправляете ли вы элементы IAP на консоль разработчика Amazon?Их статус должен быть «ЖИВОЙ», иначе ваше приложение не сможет получить их во время выполнения.Я подозреваю, что именно это вызвало сообщение об ошибке.

Если проблема не в этом, проверка logcat должна помочь определить основную причину.

...