【问题标题】:Android: Get information about app purchaseAndroid:获取有关应用购买的信息
【发布时间】:2015-12-17 11:27:37
【问题描述】:

是否有任何android api 来获取有关购买应用程序的信息?我不谈论应用内购买。只是普通的应用程序购买。

我需要任何唯一标识符,例如事务 ID 或类似的东西。

【问题讨论】:

  • 对不起,我不清楚应用购买。您是否在询问用于获取有关 Google Play 应用程序的信息(价格、可用性、国家/地区等)的 API?
  • no...应用程序本身必须识别自己的购买,因为应用程序应该只做一次,即使卸载并重新安装,所以我们必须能够检查这个动作是否已经已完成此次购买
  • 如下所述,我不确定是否可以开箱即用。但如果我是你,我会在你的服务器端实现一些微小的 API 端点,并将用户的 accountId 的散列版本(参见 Accessing Google Account Id /username via Android )和此方法的初始调用的时间戳响应发送给这个特定的用户 Id(即一旦他换了手机 - 你仍然会跟踪他)。我不知道它是否可以被视为对您问题的回答。(如果可以,我会将其转换为答案)
  • @Konstatin PeopleApi 似乎已被弃用,AccountManager 没有显示哪个帐户购买了该应用程序,但我们正在检查后续 api:“Plus Api”

标签: android in-app-purchase


【解决方案1】:

正如其他答案中提到的,它似乎没有公共 API。 (我相信,这样做的原因是默认情况下 - 一旦用户启动应用程序 - 他已经从 Google Play 获得了 if。所以在理想的世界中,应该不需要这个检查)

如果我是你,我会在你的服务器端实现一些微小的 API 端点,并将初始调用的用户 accountId 的散列版本(参见 Accessing Google Account Id /username via Android)和时间戳响应(或任何其他合理的数据返回)发送给它此特定用户 ID 的此方法(即,一旦他更换手机 - 您仍会跟踪他)。

要获取当前帐户,请执行以下操作:

    Account[] accounts = AccountManager.get(this).getAccountsByType("com.google"); 
    if (accounts.length != 0) {
         String myEmailid=accounts[0].toString();
    }

(取自here

API 19API 23 上测试(在 Android M 中,由于权限检查,它需要一些额外的工作)

【讨论】:

  • accounts[0] 总是活跃的?
  • @wutzebaer 据我所知 - 我已经用我的两个 Google 帐户测试它(在 2 个不同的操作系统版本上 - API 19API 23 和 2 个不同的设备) - 它就像一个魅力。可以说,它总是有效 - 我正在检查 android 源代码以获取一些证据。
  • 好像只代表账号列表的顺序,但是我可以在google play中切换用户,不改变这个顺序
  • @wutzebaer 这显然是正确的:如果您不在帐户之间切换,而是在设置中添加辅助 Google 帐户作为额外帐户,并使用 Google Play 作为辅助用户,您仍然会运行您的应用作为主要用户。 如果你真的关心这个案例,你必须在应用启动过程中询问用户他想用哪个帐户启动你的应用。
【解决方案2】:

根据我对问题的理解,您想获取您的应用购买者的信息,或者您想检查特定用户对您的应用的购买状态。

AFAIK: 截至目前,我无法看到您购买的 Android 应用程序的任何买家信息。 参考:https://support.google.com/googleplay/android-developer/answer/6056620?hl=en

但是在过去我们可能能够看到这样的信息。 参考:Android Market (Google Play). Get buyer information

【讨论】:

    【解决方案3】:

    据我所知,无法在应用卸载/重新安装时保留此信息。您可以获得安装时间戳,但重新安装时会重置。

    但是,一个可行的解决方案可能是在 SharedPreferences 中设置一个标志并使用 Android 备份 (http://developer.android.com/guide/topics/data/backup.html#SharedPreferences) 保存数据

    【讨论】:

    • 用户可以删除这个备份的数据吗?
    • 从文档中看不到
    • developer.android.com/google/backup/index.html "当用户禁用备份时,Android 备份服务会删除所有保存的备份数据。"
    • 我错过了那句话。在这种情况下,我认为唯一可靠的解决方案是设置您自己的服务器并在第一次安装时让应用自行注册。
    • 但是当用户重新安装应用程序时,他可以重复注册——这是我想要避免的事情
    【解决方案4】:

    最可靠的方法是创建您自己的(网络)服务,并让应用使用 google 用户名 (How do I retrieve the logged in Google account on android phones?) 自行注册,并在以后重新安装时检查注册。

    【讨论】:

    • 该解决方案不包括在多个注册的情况下如何检测哪个 google 帐户购买了该应用
    • @wutzebaer 这是“设计使然”。如果您有 2 个 Google 帐户并使用其中一个帐户购买东西,则您不应访问另一个帐户的购买权限(否则,这将成为安全漏洞并导致盗版应用程序)。因此,您必须依靠“当前”帐户用户运行应用程序。
    • 如何确定当前账户?
    • @wutzebaer 添加到我的答案中 - 您需要首先使用“com.google”类型的帐户
    • 主要帐户“可能”是第一个(来自其他 SO 问题),但我认为您需要在依赖它之前自己测试一下。
    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    相关资源
    最近更新 更多