我尝试使用此库为 Android 实现应用内更新
这是代码
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)
您可以从以下几个方面来排查问题:
1.请检查您正在测试的应用程序是否与Play商店中可用的包名称相同。
2.请检查您设备上安装的两个版本之间的签名是否与Play Store提供的版本之间的签名。
注:
要再次运行,请再次清除Play Store的缓存和存储。