android - 具有多个帐户的应用内购买

标签 android google-play google-play-services in-app-billing android-billing

我遇到了应用内购买/订阅问题:

如果设备上有多个帐户,我无法获得使用第二个帐户进行的购买。 有时可以通过从 Google Play 网络界面安装应用程序来临时解决此问题,但一段时间后,购买的内容不会出现在查询中,从而迫使用户重新安装。

我正在使用 this sample 中的 IabHelper 类.

做一些谷歌搜索,我发现这个错误存在一段时间,但不幸的是我无法找出错误是在 IabHelper 类中还是在谷歌方面。

我想提请注意 Google,因此他们在 IabHelper 类或 Play 服务中为此提供了适当的解决方案,或者提供了如何处理此问题的信息。

我在一个应用程序中使用代码,(在撰写本文时)有 900.000 个活跃用户安装,因此我必须触发大量退款。

如果我错过了解决此问题的方法,请告诉我。

编辑: 有时,即使手机上只有一个帐户,也根本无法检索购买的内容。

最佳答案

似乎没有单一的方法可以解决这个问题,但让我们尝试这样做。

  1. 当用户首次安装应用时,获取他/她的主要电子邮件地址或设备上的所有帐户

  2. 询问用户他们将使用什么电子邮件进行 future 付款/或哪个帐户可用于 google play。

    您可以使用此代码获取帐户

    Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
    Account[] accounts = AccountManager.get(context).getAccounts();
    for (Account account : accounts) {
        if (emailPattern.matcher(account.name).matches()) {
            String possibleEmail = account.name;
            ...
        }
    }
    

    别忘了请求许可

    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    

    用户选择邮箱后,您可以通过邮箱发送链接确认该邮箱

  3. 将所有付款引导至该特定电子邮件。

方法二

future 使用新的“使用 Gmail 汇款和收款”

  1. 创建电子邮件 Intent 并将特定数据发送到电子邮件 Intent 并进行付款。

  2. 成功后,向用户邮箱发送代码

  3. 使用代码激活他们购买的任何商品。

方法3

使用其他支付库或网关进行应用内购买,而不是 Google Play。

关于android - 具有多个帐户的应用内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28811490/

相关文章:

android自定义键盘: touch area of space key not completely covered

java - 为什么 DialogPreference.needInputMethod() 被隐藏?

android - 如何在 Play 商店获取应用版本

c# - 无法将 Google Play 服务添加到 Xamarin Android 项目

android - java.lang.ClassNotFoundException : Didn't find class on DexPathList 异常

android - 建议用户使用 Google Play 更新 Android 应用(Google 应用内更新支持)

android - 如何为 setCompoundDrawablesWithIntrinsicBounds 设置色调颜色?

android - 为什么 SystemClock.currentThreadTimeMillis() 似乎以半速率运行?

android - Google Play Beta 测试和发布问题

android - 客户经理为 com.google 返回空值