我在我的应用中遇到了一个关键边缘案例。我会试着解释一下情况。
我有一个应用程序,通过应用内购买提供一些优质内容。用户在其设备上有一个与Play商店相关联的电子邮件ID。
以下是该方案:
1)用户使用abc@gmail.com登录应用程序并购买优质内容。此人从未购买过高级内容,因此他的isPremiumPurchased
旗帜为false
。
购买成功,我授予他优质内容并将标志更改为true。 按预期工作。
2)用户在我的应用中退出帐户,然后使用其他帐户(例如xyz@gmail.com)再次登录我的应用。他继续再次购买优质内容。此帐户是一个不同的帐户,因此他的" isPremiumPurchased
" flag是false
。
此用户拥有与前一个帐户不同的帐户,对吗?但如果他试图购买,我总是得到"物品已经拥有" ,这也是预期的。该项目已由与相同Play商店地址关联的其他帐户购买,现在此帐户无法购买。
处理这种情况的理想方法应该是什么?我不应该允许第二个帐户访问高级内容。这是一个完全独立的帐户,不是吗?我甚至无法消耗该物品。我该如何解决这个问题
答案 0 :(得分:2)
如果您想根据应用中使用的电子邮件区分购买,则购买必须与用于登录您应用的电子邮件相关联。我不确定,但您可以使用developerPayload参数。
<强>采购:强>
iabHelper.launchPurchaseFlow(activity, SKU1, RC_REQUEST, purchaseListener, current_email);
<强>验证强>
private boolean validateDeveloperPayload(Purchase purchaseDetails) {
String payload = purchaseDetails.getDeveloperPayload();
if(payload.equals(current_email)){
return true;
}
return false;
}
答案 1 :(得分:1)
非常简单。在应用中,购买与Google Play商店中的主要帐户相关联。
说,您有一个与Google Play商店相关联的帐户myaccount@gmail.com。
以下是该方案:
1)用户使用abc@gmail.com登录应用程序并购买 优质内容。此人从未购买过优质内容 所以他的“isPremiumPurchased旗帜是假的。
购买成功,我授予他优质内容和 将标志更改为true。按预期工作。
优质内容购买与 myaccount@gmail.com 相关联,而不是 abc@gmail.com ,这是您应用的本地内容。
2)用户在我的应用中退出其帐户并登录到我的应用 再次使用不同的帐户,比如xyz@gmail.com。他接着说 再次购买优质内容。这个帐户是不同的 因此他的“isPremiumPurchased”标志是假的。
此用户拥有与前一个帐户不同的帐户,对吗?但如果 他试图购买,我总是得到“物品已经拥有”,这是 预计也是如此。
用户从您的应用退出而不是从Google Play注销。因此,当您检查优质商品的purchse状态时,Google Play会在购买时回复您。
该项目已由另一个帐户购买 与相同的Play商店地址相关联,现在是此帐户 无法购买。
请确保帐户的切换位置,是在您的应用或Google帐户中?
这是一个小小的简报;
下载&amp;使用帐户' xxx@gmail.com '从Play商店安装应用,购买商品。 在设备' yyy@gmail.com '中添加尚未完成商品购买的Google帐户。 将Playstore切换到帐户 yyy@gmail.com 和测试项目。 物品仅处于PURCHASE状态。
将应用程序下载的帐户视为主要帐户,以检查来自Play商店的购买详情
下载&amp;使用帐户' xxx@gmail.com '从Play商店安装应用,购买商品。 在设备' yyy@gmail.com '中添加尚未完成商品购买的Google帐户。 将Playstore切换到帐户 yyy@gmail.com 和测试项目。 商品仅处于 PURCHASE 状态。 从设备中删除帐户 xxx@gmail.com ,然后检查该项目。 商品处于未购买状态。
由于删除了“ xxx@gmail.com ”,因此主帐户为“ yyy@gmail.com ”。 现在不购买“ yyy@gmail.com ”的IN APP项目。