我正在尝试开发一个系统来进行 android 应用内购买。如果我使用一台设备,我可以很好地集成系统,当用户购买 noConsumible 项目并重新安装应用程序时,会给出这个项目。
使用具有相同帐户的其他设备时会出现问题。在某些设备上进行购买时,另一个在重新启动或重新安装应用程序时无法检测到购买,并显示下一条消息“物品已拥有”,但我无法捕捉到此错误并提供该物品。
- 要遵循的步骤:
- 在设备 A 上安装应用程序
- 在设备 A 上购买无消耗品
- 在 deice B 上安装应用程序
- 检查设备 B 上没有提供耗材项目
- 在设备 B 上购买无消耗品
- 在设备 A 上重新启动应用程序
- 检查项目 No Consumible 未在设备 A 上提供
代码:
private void initializeUnityIAP()
{
if (IStoreListener != null && IStoreListener.IsUnityIAPInicialized())
{
return;
}
// Create a builder, first passing in a suite of Unity provided stores.
var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
//Configure google play
builder.Configure<IGooglePlayConfiguration>().SetPublicKey(GOOGLE_PLAY_KEY);
// Adding currency pack
foreach (VirtualCurrencyPack currencyPack in storeAssets.packs)
{
builder.AddProduct(currencyPack.id, ProductType.Consumable, new IDs() {
{ currencyPack.id, AppleAppStore.Name },
{ currencyPack.id, GooglePlay.Name },
});
}
// Adding offers
foreach (VirtualOffer virtualOffer in storeAssets.offers)
{
builder.AddProduct(virtualOffer.id, ProductType.NonConsumable, new IDs() {
{ virtualOffer.id, AppleAppStore.Name },
{ virtualOffer.id, GooglePlay.Name },
});
}
IStoreListener = new AxesBillingStoreListener();
UnityPurchasing.Initialize(IStoreListener, builder);
}
public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
m_StoreController = controller;
m_StoreExtensionProvider = extensions;
foreach (var item in controller.products.all)
{
//Product is available
if (item.availableToPurchase)
{
// Update definition data product
AxesBillingManager.instance.GetElementById(item.definition.id).purchaseType.amount = (double)(item.metadata.localizedPrice);
AxesBillingManager.instance.GetElementById(item.definition.id).purchaseType.currencyCode = item.metadata.isoCurrencyCode;
// Product was purchase
if (item.hasReceipt)
{
VirtualObject element = AxesBillingManager.instance.GetElementById(item.definition.id);
element.Give(element.amountToGive);
}
}
else
{
//Product is not available in store
AxesBillingManager.instance.GetElementById(item.definition.id).isAvailableInGoogleStore = false;
}
}
}
谁能帮我?