我想通过华为应用市场在中国大陆发布一个应用。应用被拒绝,出现以下错误:“我们发现启动应用/登录华为账号/使用华为移动服务2.5.3版本之前的手机支付时无法正常调用升级提示. ".
该应用程序是在 Flutter 中开发的。我没有找到有关如何解决此错误的任何指南,因此我尝试遵循 Android 指南。所以,我在 Flutter 的 MainActivity.kt 中实现了这个原生代码:
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, HUAWEI_CHANNEL).setMethodCallHandler { call, result ->
if(call.method == "initJos") {
val appsClient = JosApps.getJosAppsClient(this)
appsClient.init()
Log.i("JOS HUAWEI", "init success")
result.success(true)
}
else if(call.method == "checkUpdate") {
val client = JosApps.getAppUpdateClient(this)
client.checkAppUpdate(this, object : CheckUpdateCallBack {
override fun onUpdateInfo(intent: Intent) {
val info: Serializable? = intent.getSerializableExtra(UpdateKey.INFO)
if (info is ApkUpgradeInfo) {
client.showUpdateDialog(this@MainActivity, info, false)
result.success(true)
}
else {
result.success(false)
}
}
override fun onMarketInstallInfo(intent: Intent?) {}
override fun onMarketStoreError(i: Int) {}
override fun onUpdateStoreError(i: Int) {}
})
}
else {
result.notImplemented()
}
}
方法“initJos”指的是:https ://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/appgallerykit-app-init-0000001055596854 方法“checkUpdate”指的是:https ://developer.huawei.com/consumer/en/doc/development/AppGallery-connect-Guides/appgallerykit-app-update-0000001055118286
然后,我在这个 Dart 类中链接了这些方法:
class HuaweiNativeApis {
static const platform = MethodChannel('it.ppndrd.taskbot/huawei');
Future<void> initJos() async {
try {
await platform.invokeMethod('initJos');
} on PlatformException catch (e) {
print(e);
}
}
Future<void> checkUpdate() async {
try {
await platform.invokeMethod('checkUpdate');
} on PlatformException catch (e) {
print(e);
}
}
}
在 main.dart 中,在加载过程中我调用了这两种方法:
HuaweiNativeApis hna = HuaweiNativeApis();
await hna.initJos();
await hna.checkUpdate();