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