我从Android的xamarin应用内结算组件调用queryinventoryasync,但即使我在Google Play中添加了4个应用内商品,我也总是收到0个产品。我已经做了以下尝试让它工作:
这是我的代码:
static internal InAppBillingServiceConnection _serviceConnection;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
_serviceConnection = new InAppBillingServiceConnection(this, APP_KEY);
_serviceConnection.OnInAppBillingError += ServiceConnection_OnInAppBillingError;
_serviceConnection.OnConnected += () =>
{
GetInventory();
};
_serviceConnection.Connect();
global::Xamarin.Forms.Forms.Init(this, bundle);
Core.App.ALLOW_ADULT_SWITCH = false;
LoadApplication(new Core.App());
}
//For testing purposes only.
private async void GetInventory()
{
var products = await _serviceConnection.BillingHandler.QueryInventoryAsync(new List<string>
{
ReservedTestProductIDs.Purchased
},
ItemType.Product);
if (products == null)
{
return;
}
}
private void ServiceConnection_OnInAppBillingError(InAppBillingErrorType error, string message)
{
throw new System.Exception(message);
}
protected override void OnDestroy()
{
if (_serviceConnection != null && _serviceConnection.Connected)
_serviceConnection.Disconnect();
_serviceConnection = null;
base.OnDestroy();
}
答案 0 :(得分:0)
上帝,这是一个工作的噩梦!这就是我做的,
1)跳过queryinventoryasync调用并专注于方法 BuyProduct(situation.PurchaseId,ItemType.Product,user.EmailAddress); 此重载允许您通过直接传入产品ID来跳过queryinventoryasync。
2)有了这个,我开始使用了机器人保留的测试ID,并且它起作用了。但实际产品ID并没有起作用。
3)我上传了一个新的apk并点击了发布,而在alpha测试中,发布按钮被放置在一个不直观的地方。但显然如果在alpha测试中按下发布,它只会发布给你的测试人员。
4)在浏览器上以测试人员身份登录,然后点击google开发者控制台中的选择加入链接,注册为google play的测试人员。
5)app的调试版本不适用于应用内商品,您必须从设备手动从googleplay下载应用版本并安装,然后运行,最后您可以测试应用内商品! !!
答案 1 :(得分:0)
在您的APK以alpha模式批准后几个小时,它也可以在您自己的产品的调试模式下工作。
答案 2 :(得分:0)
确保:
id
时的公钥是否正确IabHelper
为我的包名称添加前缀,导致Google Play将其识别为不同的包,即使公钥是我的生产应用程序的公钥。第