带有抖动的Google Play许可验证库

问题描述 投票:2回答:1

因此,我正在使用flutter进行应用程序开发(显然是标题),这是一款付费应用程序,因此需要验证许可证。我正在使用MedthodChannel来实现此目的,因为我无法自行解决。

现在是问题:因此,在Java方面,我正在检查许可证验证,然后将结果发送到flutter。这就是方法通道的工作方式。但是问题在于,即使在验证完成之前,结果也会被发送到flutter,因此,哪个flutter部分认为许可证即使未通过验证也未得到验证。

我在下面附加Java辅助代码

打包in.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.GeneratedPluginRegistrant;公共类MainActivity扩展了FlutterActivity {私有静态最终字符串CHANNEL =“ in.navkargems.diamondtools / verify”;私有静态最终字符串_key_to_verify_base64 =“ MIIBIjAN ...”;私有处理程序mHandler;私人LicenseChecker mChecker;私有LicenseCheckerCallback mLicenseCheckerCallback;布尔型许可;布尔检查许可证;boolean didCheck;int消息= 0;@Override受保护的void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);GeneratedPluginRegistrant.registerWith(this);新的MethodChannel(getFlutterView(),CHANNEL).setMethodCallHandler(新的MethodChannel.MethodCallHandler(){@Override公共无效onMethodCall(MethodCall methodCall,MethodChannel.Result result){如果(methodCall.method.equals(“ verifyLicense”)){字符串deviceId = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);Log.i(“设备ID”,deviceId);mHandler = new Handler();mLicenseCheckerCallback =新的MyLicenseCheckerCallback();mChecker =新的LicenseChecker(getApplicationContext(),新的StrictPolicy(),_ key_to_verify_base64);doCheck();Log.i(“许可证”,“检查:” + didCheck);如果(didCheck){result.success(授权);}其他{result.success(false);}}}});}私人void doCheck(){didCheck = false;CheckingLicense = true;setProgressBarIndeterminateVisibility(true);mChecker.checkAccess(mLicenseCheckerCallback);}私有类MyLicenseCheckerCallback实现了LicenseCheckerCallback {@Override公共无效允许(原因){if(isFinishing()){Log.i(“ License”,“” + isFinishing());返回;}Log.i(“许可证”,“已接受!”);消息= 1;许可=真;CheckingLicense = false;didCheck = true;}@Override公共无效的dontAllow(int原因){if(isFinishing()){Log.i(“ License”,“” + isFinishing());返回;}Log.i(“许可证”,“原因:” +原因);消息= 0;许可=假;CheckingLicense = false;didCheck = true;}@Override公共无效applicationError(int errorCode){Log.i(“许可证”,“错误:” + errorCode);if(isFinishing()){Log.i(“ License”,“” + isFinishing());返回;}消息= 0;许可=真;CheckingLicense = false;didCheck = false;}}}

谢谢您的时间。

java android flutter licensing android-lvl
1个回答
0
投票

您可以通过在启动应用程序后从Dart调用Java代码来尝试进行许可证检查。检查此https://medium.com/47billion/creating-a-bridge-in-flutter-between-dart-and-native-code-in-java-or-objectivec-5f80fd0cd713

© www.soinside.com 2019 - 2024. All rights reserved.