【问题标题】:How do you deal with LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED error code?您如何处理 LicenseCheckerCallback.ERROR_NOT_MARKET_MANAGED 错误代码?
【发布时间】:2012-04-30 00:46:56
【问题描述】:

使用com.android.vending.licensing,您可以检查您的应用是否获得许可。有一个回调,applicationError(),它会告诉您是否有任何问题。今天遇到错误ERROR_NOT_MARKET_MANAGED,不知道该如何处理!

这就是我所做的:

  1. 在 Google Play 上,我将我的电子邮件地址添加为测试帐户。
  2. 在 Google Play 上,我使用 versionCode="10" 保存了我的应用(未发布)。
  3. 在我的机器上,我改为versionCode="11"
  4. 许可证检查现在失败,错误代码为ERROR_NOT_MARKET_MANAGED

问题是;我应该处理这个错误还是这是一个不切实际的场景?

【问题讨论】:

  • Google 建议通过调用 dontAllow() 方法来管理错误:Additionally, you should implement the applicationError() method, which the LVL calls to let your application handle errors that are not retryable. You can implement the method in any way needed. In most cases, the method should log the error code and call dontAllow().

标签: android google-play android-lvl


【解决方案1】:

ERROR_NOT_MARKET_MANAGED:这个名字真的说明了一切,应用程序不是由Android Market(现在称为Google Play)管理的。更具体地说,您的应用程序版本 11 并未上传或发布在 Google Play 中。

我应该处理这个错误还是这是一个不切实际的情况?

我认为这是一个不切实际的情况。只要您在 Google Play 中上传新的应用版本,您就不需要在代码中做任何特别的事情。 ERROR_NOT_MARKET_MANAGED 更像是一个 LVL 开发警告,它帮助开发人员正确实施许可证检查代码,并在项目构建时按照正确的程序测试许可证检查。查看 LVL 示例代码中的 cmets:

private class MyLicenseCheckerCallback implements LicenseCheckerCallback {

    ... ...

    public void applicationError(ApplicationErrorCode errorCode) {
        if (isFinishing()) {
            // Don't update UI if Activity is finishing.
            return;
        }
        // This is a polite way of saying the developer made a mistake
        // while setting up or calling the license checker library.
        // Please examine the error code and fix the error.
        //String result = String.format(getString(R.string.application_error), errorCode);
        //String result = "Error";
        //handleLicensingResult(result);
    }
}

将 LVL 集成到您的应用程序的全部意义在于使用 Google Play 发布您的应用程序,并使用 Google Play 客户端应用程序下载并安装您的应用程序(请参阅开发指南中的 Requirements and Limitations 部分)。如果:

  1. 开发人员按照正确的程序在 Google Play 中上传(用于测试 LVL)或发布(用于实际发布)。
  2. 最终用户使用 Google Play 客户端应用程序购买、下载和安装应用程序。

如果最终用户以某种方式从其他渠道(不是通过 Google Play 购买)获得您的应用程序的副本(集成 LVL 并在 Google Play 中上传/发布)并尝试将其安装在他的设备上(使用 Google Play 客户端应用程序)安装在该设备上),在这种情况下,LicenseCheckerCallback 将转到 dontAllow() 而不是 applicationError(ApplicationErrorCode errorCode)。

【讨论】:

  • 似乎这个错误不是强制性的。我已经制作应用程序两年多了,我只在使用 ICS 的 SamsungGalaxy S2 上运行我的应用程序时看到此错误。
  • @yorkw,如果您通过工具apkleecher.com 直接从 Google Play 下载 APK,那么您仍然可以在模拟器(使用 Google Play)上运行此 apk 文件,并且运行良好,既不输入 dontAllow 也不输入 applicationError。
  • 这也是一种礼貌的说法,即谷歌犯了一个错误。我在旧设备上收到此错误,但它在新设备上正常工作。
【解决方案2】:

不要在将应用程序上传到 Google Play 后立即对其进行测试。

在开始测试之前等待一段时间(15-20 分钟或更长时间)。 Google play 需要一些时间来识别您的应用。

【讨论】:

  • 我认为这是由您手机上的 Google Play Store 应用程序的缓存数据引起的,通过清除数据和/或缓存(设置 - 应用程序 - Google Play 商店),我可以测试并获取许可证状态立即更改。
  • 或者更好的是,获取一个硬件设备,将其重置为出厂设置,然后将其主要用户帐户设置为您将 APK 上传到的开发帐户。
  • 对我来说花了一个多小时......我以为我做错了什么,但似乎有时需要耐心。
  • 我可以验证@yorkw 清除数据/缓存的方法对我有用。
【解决方案3】:

7 月 29 日,我发现当我的应用程序处于 Alpha 或 Beta 测试时,我得到的只是错误 3 或 Error_Not_Market_Managed。这实际上是来自服务器的回复。所以这意味着我正在触摸服务器并且代码很好。无论在开发者控制台中设置什么作为回复,这是我得到的唯一回复。

我实际上已经等了 3 天,没有任何变化。所以没有可以接受的等待时间。我什至清除并重置了我的整个手机。我清除了 Google Play 缓存和所有其他魔术。这些都不是原因。

我用我的新 Google 许可证代码更新了我已经发布的应用程序之一,并得到了完全相同的响应。大约 4 小时后,我更改了版本代码并将其上传以发布后,该应用程序运行正常,并且 Google 许可证检查以良好的有效代码响应。现在,只要它完全发布,它就会响应我告诉它的任何代码。

所以答案是,在完全发布之前,Google 许可证将无法正常运行。如果您的应用程序处于 Alpha 或 Beta 版并且您收到错误 3,那么您可能是好的。只需注释掉 License Check 方法,直到您准备好发布。

【讨论】:

  • 如果您的应用的versionCode 在 Google Play 上不存在(已发布或未发布),则应丢弃所有错误。我原来的问题实际上包含正确的答案;这是一个不现实的场景。
  • “我改了版本号然后上传发布后,大概4个小时后,那个app就可以正常运行了”,可能是因为你改了版本号?我和你有同样的问题,但我仍然认为 beta 测试应该没问题。
【解决方案4】:

截至目前,2014 年 5 月,我必须发布测试应用程序(没有上传生产 APK),以便测试上传的 APK 和扩展 OBB 测试版。否则,我在测试APKExpansionPolicy 时总是得到ERROR_NOT_MARKET_MANAGED。并且发布后2小时(网页上的通知说“最多24小时”),我可以得到扩展文件信息。

除了测试人员之外,没有人可以看到已发布的应用 AFAIK。

【讨论】:

    【解决方案5】:

    它也可能发生在旧设备中。我正在测试我的应用程序,但没有发布实际版本,它在我的 Galaxy S8 上运行良好,但我在我的 Galaxy S4 上收到此消息。 这意味着说这也可能是 Google 的错误也是一种礼貌的方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多