使用 .net maui c# 在 Android 中进行应用内更新

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

我尝试使用此库为 Android 实现应用内更新 “Xamarin.Google.Android.Play.Core”版本=“1.10.3.15”/>

这是代码

using Xamarin.Google.Android.Play.Core.AppUpdate;
using Xamarin.Google.Android.Play.Core.Install.Model;
protected override void OnCreate(Bundle savedInstanceState)
{
    appUpdateManager = AppUpdateManagerFactory.Create(this);
    StartInAppUpdate();

    base.OnCreate(savedInstanceState);
}
private void StartInAppUpdate()
{
    var appUpdateInfoTask = appUpdateManager.AppUpdateInfo;
    appUpdateInfoTask.AddOnCompleteListener(new OnCompleteListener(task =>
    {
        if (task.IsSuccessful)
        {
            var appUpdateInfo = task.GetResult(Java.Lang.Class.FromType(typeof(AppUpdateInfo))) as AppUpdateInfo;
            if (appUpdateInfo != null)
            {
                if (appUpdateInfo.UpdateAvailability() == UpdateAvailability.UpdateAvailable && appUpdateInfo.IsUpdateTypeAllowed(AppUpdateType.Immediate))
                {                                        
                    appUpdateManager.StartUpdateFlowForResult(
                                appUpdateInfo,
                                AppUpdateType.Immediate,
                                this,
                                123);
                }
            }
        }
        else
        {
            System.Diagnostics.Debug.WriteLine("Failed to retrieve app update info.");
        }
    }));
}
class OnCompleteListener : Java.Lang.Object, Xamarin.Google.Android.Play.Core.Tasks.IOnCompleteListener
{
    private readonly Action<Xamarin.Google.Android.Play.Core.Tasks.Task> _callback;

    public OnCompleteListener(Action<Xamarin.Google.Android.Play.Core.Tasks.Task> callback)
    {
        _callback = callback;
    }

    public void OnComplete(Xamarin.Google.Android.Play.Core.Tasks.Task task)
    {
        _callback(task);
    }
}
    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
        {
            base.OnActivityResult(requestCode, resultCode, data);
    
            if (requestCode == 123)
            {
                if (resultCode == Result.Ok)
                {
                    // Update was successful, notify the user or handle the result
                    Toast.MakeText(this, "Update complete!", ToastLength.Short).Show();
                }
                else
                {
                    // Update failed or was canceled, notify the user
                    Toast.MakeText(this, "Update failed or canceled.", ToastLength.Short).Show();
                }
            }
        }

我尝试使用内部应用程序共享进行测试,提供了 2 个版本,第一个版本为 1.0,第二个版本为 2.0。 参考 -> https://developer.android.com/guide/playcore/in-app-updates/test 我安装了 1.0(使用内部应用程序共享),然后单击了 2.0 版的应用程序共享 url,但没有安装并返回到 1.0 应用程序(已经安装了一个),杀死并打开了该应用程序。 更新对话框没有出现。

task.IsSuccessful 为 false task.IsComplete 为 true

这是一个例外 安装错误(-3):该 API 在此设备上不可用。 (https://developer.android.com/reference/com/google/android/play/core/install/model/Install ErrorCode#ERROR_API _NOT_AVAILABLE)

c# android maui in-app-update internal-app-sharing
1个回答
0
投票

您可以从以下几个方面来排查问题:

1.请检查您正在测试的应用程序是否与Play商店中可用的包名称相同。

2.请检查您设备上安装的两个版本之间的签名是否与Play Store提供的版本之间的签名。

注:

要再次运行,请再次清除Play Store的缓存和存储。

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