标签: android-lvl

使用 flutter 的 Google Play 许可证验证库

所以我使用 flutter 进行应用程序开发(显然,标题),这是一个付费应用程序,因此需要验证许可证。我正在使用 MedthodChannel 来实现此目的,因为我无法找到颤振本身的方法。

现在的问题是:所以在Java方面,我正在检查许可证验证,然后将结果发送到flutter。这就是方法通道的工作原理。但问题是,即使在验证完成之前,结果也会发送到 flutter,因此 flutter 部分认为许可证没有经过验证,即使是这样。

我在下面附上java端代码

    包在.navkargems.diamondtools;

    导入 android.os.Bundle;
    导入 android.os.Handler;
    导入 android.provider.Settings;
    导入 android.util.Log;

    导入 com.google.android.vending.licensing.LicenseChecker;
    导入 com.google.android.vending.licensing.LicenseCheckerCallback;
    导入 com.google.android.vending.licensing.StrictPolicy;

    导入 io.flutter.app.FlutterActivity;
    导入 io.flutter.plugin.common.MethodCall;
    导入 io.flutter.plugin.common.MethodChannel;
    导入 io.flutter.plugins.GeneratePluginRegistrant;

    公共类 MainActivity 扩展 FlutterActivity {

      私有静态最终字符串CHANNEL =“in.navkargems.diamondtools/verify”;

      私有静态最终字符串_key_to_verify_base64 =“MIIBIjAN ...”;

      私有处理程序mHandler;
      私有许可证检查器 mChecker;
      私有 LicenseCheckerCallback mLicenseCheckerCallback;
      布尔许可;
      布尔检查许可证;
      布尔值 didCheck;
      int 消息 = 0;

      @覆盖
      protected void onCreate(Bundle savingInstanceState) {
        super.onCreate(savedInstanceState);
        generatedPluginRegistrant.registerWith(this);
        new MethodChannel(getFlutterView(), CHANNEL).setMethodCallHandler(
          新的 MethodChannel.MethodCallHandler() {
            @覆盖
            公共无效onMethodCall(MethodCall methodCall,MethodChannel.Result结果){
              if (methodCall.method.equals("verifyLicense")) {

                String deviceId = …

java android licensing android-lvl flutter

6
推荐指数
0
解决办法
1037
查看次数

将付费应用迁移到 Google Play 上的应用内购买

很多年前就有很多关于将现有付费应用程序迁移到使用应用程序内购买的免费增值模式的主题的老问题和答案,但它们都只是陈述了相同的有限解决方法。

那么2019年有官方的方法可以做到这一点吗?或者至少是一种避免常见陷阱的方法,例如

对用户体验的负面影响

  • 要求现有(付费)用户购买 0 美元的 IAP
  • 要求现有(付费)用户使用促销代码购买 IAP

当用户购买新设备时最终会失败

  • 通过向服务器发送设备标识符或在其中存储标志来跟踪哪些设备安装了付费应用程序SharedPreferences

还有其他同样有缺陷的方法,甚至不值得一提。正确且简单的修复当然是对 Google Play 服务的简单 API 调用:

bool legacyPremiumUser = didUserEverPurchaseThisApp();
Run Code Online (Sandbox Code Playgroud)

今天还存在这样的事情吗?即使只是一种跨设备识别用户的方法也是可以接受的。

android in-app-purchase android-lvl google-play google-play-services

6
推荐指数
1
解决办法
303
查看次数

离线时的 Android 许可证验证库

所以,我已经用我的应用程序设置了 Android LVL 来检查许可。这似乎适用于测试帐户。问题是,如果我关闭手机互联网连接并尝试运行该应用程序,许可检查将失败并告诉我它未获得许可!

一件事是,为什么它告诉我该应用程序未获得许可,更重要的是,我如何才能“记住”该应用程序是否获得许可。

android android-lvl google-play

5
推荐指数
1
解决办法
5544
查看次数

Android:我应该在每次打开应用程序时调用LicenseChecker吗?

所以我已经向后和向前阅读了LVL文档,并让它与我的应用程序一起工作.我已经看到有关缓存响应的问题.但是,根据LVL文档中的一些措辞,谷歌还是希望我们每次初始化应用程序时都要求我们调用许可检查程序吗?这是最安全的实现方式吗?使用像Google建议的ServerManagedPolicy,我们只是调用许可证检查,运行我们的应用程序或做任何我们选择失败的东西吗?我最关心的一个问题是网络数据的使用.他们向我们深入了解在不通知用户的情况下谨慎使用资源的需求,在我看来,这是在不让用户知道的情况下使用网络数据.

除此之外,是否有人因此代码而对其应用程序造成任何类型的延迟?由于我的应用程序的性质,打开它,然后等待每次通过网络的确定肯定会分散其使用.我应该自己缓存响应,还是我想过这个?

android android-lvl

5
推荐指数
1
解决办法
1192
查看次数

免费应用程序客户端许可证有效性检查的 LVL 行为

我开发了一款游戏,打算使用 Android LVL 和默认许可策略将其作为付费应用程序发布ServerManagedPolicy。现在,当局决定我们必须将其作为免费应用程序发布。由于某种原因,我不想删除/禁用许可证检查。我的问题是:许可服务如何处理免费应用程序?检查总是失败还是总是通过?有什么方法可以让许可证服务接受我的免费应用程序的任何安装许可吗?

我在官方文档中找到了有关免费应用程序的以下内容,但是,它对我没有多大帮助。

Only paid applications published through Market can use the service.[...] Licensing is currently for paid apps only, since free apps are considered licensed for all users.

我本以为检查会失败,但是,我记得在某处读到,对于免费应用程序,许可服务器将返回一个非常大的有效性时间戳(long.MAX),确保许可证对于免费应用程序始终有效。不幸的是,我丢失了该来源的链接。

注意:问题并不像听起来那么疯狂。只是我无法在不泄露一些专有信息的情况下进一步解释我的用例。

android android-lvl google-play

5
推荐指数
1
解决办法
2764
查看次数

"测试帐户"与"普通帐户"有何不同?

为了能够测试Android Market许可的任何实施(例如LVL,应用程序内结算),Google建议创建一个Google Checkout 测试帐户,因为开发人员无法使用自己的Google Checkout帐户自行购买.

听起来不错,除了测试帐户必须使用真实的信用卡.

这引出了一个问题:这与普通账户有什么不同?普通帐户的测试帐户有什么优势?

google-checkout android-lvl in-app-billing google-play

5
推荐指数
1
解决办法
1416
查看次数

dexguard是否可以防止简单的LVL裂缝?

我刚刚学会了标准的android LVL + proguard并不能保证使用像antilvl这样的工具来防止简单破解的任何盗版保护.我正在努力找到一种合理的方法来确保我的Android应用程序不会被盗版.我找到了名为dexguard的商业计划替代品.这是相当昂贵的(最便宜的许可证375欧元)但我会买它,如果我知道它将保护我的应用程序免受脚本小子和业余应用程序破解程序.如果一些非常聪明的破解者击败我的盗版保护,我没有问题,但如果任何脚本小子可以做到这一点那么它就是一个showstopper.

  1. 您对LVL代码的dexguard保护有什么经验吗?

  2. 只是用dexguard替换proguard并留下标准LVL检查才能阻止脚本小子?

  3. 如果dexguard不是保护我的lvl代码的简单方法,那么你建议采用其他什么方式?

android proguard android-lvl

5
推荐指数
1
解决办法
2651
查看次数

Google Play 许可 - “正常响应”的含义?

您好,提前感谢您的回复。

我已将我的许可应用上传到 Play 商店。我可以使用所有静态测试许可响应(已许可、未许可等)进行测试并获得预期结果。到现在为止还挺好。

但是如果我的测试设备没有互联网连接,许可证检查总是失败。这不是我理解 ServerManaged 策略工作的方式。如果发现安装在最近的某个时间获得了许可,则该策略应该将信息缓存在共享的 prefs 文件中,并在没有 Internet 连接的情况下使用它。

所以我暂时注释掉了许可系统创建的 prefs 文件中数据的混淆。当我查看数据时,我看到重试计数和其他内容都设置为零。这不是我所期望的。有了这样的数据,它对我来说就好像我在使用严格的政策一样(我不是)。

我假设这是使用测试响应系统的产物,“真实”用户将在他们混淆的共享首选项中获得实际数据,允许他们在没有互联网连接的情况下进行操作。

所以我尝试将服务器响应设置为“正常响应”。当我这样做时,我总是得到一个 NOT LICENSED 的回应。我想这是有道理的,因为我还没有购买并下载该应用程序。

那么,作为开发人员,我如何才能准确地体验到我的最终用户的体验呢?例如,我希望能够在没有互联网连接的情况下测试这一切是如何工作的。我似乎无法弄清楚如何做到这一点?我想我可以购买自己的应用程序,但我不确定它是否会起作用,因为测试设备已登录到测试帐户。开发人员必须购买自己的应用程序是没有意义的。

感谢您的任何建议。

android android-lvl google-play google-license-manager

5
推荐指数
1
解决办法
2341
查看次数

我需要 Google Play 许可吗?

我有一个要在 google Play 上销售的应用程序。最初我想为应用程序收取固定价格。

我习惯于在 Windows Phone 市场上营销应用程序,用户只需支付即可获得该应用程序 - 不需要“许可”,因为用户无法在不付费的情况下获得该应用程序。

我阅读了有关 Google Play 许可的材料,似乎暗示除非我使用 LVL,否则用户可以免费获得我的应用程序。那正确吗?另一方面,如果 Google Play 在不付费的情况下不允许他们拥有该应用程序,为什么我需要使用许可?

android android-lvl

5
推荐指数
1
解决办法
2353
查看次数

为 Android 许可生成 SALT

我想在我的应用程序中实施许可并且需要一些帮助。

示例应用程序具有以下内容:

// REPLACE WITH YOUR OWN SALT , THIS IS FROM EXAMPLE
    private static final byte[] SALT = new byte[]{
            -46, 65, 30, -128, -103, -57, 74, -64, 51, 88, -95, -45, 77, -117, -36, -113, -11, 32, -64,
            89
    };
Run Code Online (Sandbox Code Playgroud)

我想知道我只是将数字更改为某个随机数还是必须使用它生成它SecureRandom

我遇到了这个代码,我必须从剪贴板设置 SALT 变量吗?

此外,每个设备的 SALT 必须不同还是相同?

android salt android-lvl

5
推荐指数
1
解决办法
3148
查看次数