Toast 通知不适用于 XF Android 8.0/1

Toast Notifications not working on XF Android 8.0/1

我有一个跨平台的 XF 应用程序。

我正在使用 Toast.Forms 发送本地应用程序通知,该插件适用于 iOS 和 Android。 在 iOS 上它工作得很好,但在 Android 上它只适用于低于 7.1 的版本,对于 oreo 8.0 或 8.1 (> API 26) 它不再工作了。

这是我的祝酒词class:

internal class ToastService : IToastService
{
    private readonly IAppDeviceDependency _DeviceDependency;

    public ToastService([NotNull] IAppDeviceDependency deviceDependency)
    {
        _DeviceDependency = deviceDependency ?? throw new ArgumentNullException(nameof(deviceDependency));
    }

    public void ShowToast(string title, string description, bool isClickable, bool clearFromHistory)
    {
        DeviceToastProvider.ShowToast(title, description, isClickable, clearFromHistory);
    }

    private IToastProvider DeviceToastProvider => _DeviceDependency.Get<IToastProvider>();
}

Android 吐司供应商:

[assembly: Dependency(typeof(AndroidToastProvider))]

namespace MyApp.Droid.Providers
{
public class AndroidToastProvider : IToastProvider
{
    public async void ShowToast(string title, string description, bool isClickable, bool clearFromHistory)
    {
        var notificator = DependencyService.Get<IToastNotificator>();
        await notificator.Notify(new NotificationOptions
        {
            Title = title,
            Description = description,
            IsClickable = isClickable,
            ClearFromHistory = clearFromHistory
        });
    }
}
}

苹果吐司供应商

[assembly: Dependency(typeof(AppleToastProvider))]
namespace MyApp.iOS.Providers
{
public class AppleToastProvider : IToastProvider
{
    public async void ShowToast(string title, string description, bool isClickable, bool clearFromHistory)
    {
        var notificator = DependencyService.Get<IToastNotificator>();
        await notificator.Notify(new NotificationOptions
        {
            Title = title,
            Description = description,
            IsClickable = isClickable,
            ClearFromHistory = clearFromHistory
        });
    }
}
}

Android 8 需要通知分配给它们的频道才能显示(在此处查看更多信息:https://developer.android.com/guide/topics/ui/notifiers/notifications)。如果您的插件不支持,您可以要求作者以适当的方式更新它,或者您可以使用本机 API 创建自己的代码。

找到问题的解决方案。显然我正在使用 Android 版本 7.1 进行编译,它不支持 Android Oreo 8.0 的新通知通道。现在我正在使用 Android 8.1 (Oreo) 进行编译,我已经将 Toast.plugin 更新到最新版本并且它在低于 Android 8.1

的所有版本上都运行良好

可在此处找到有关该问题的更多信息:https://docs.microsoft.com/en-us/xamarin/android/app-fundamentals/notifications/local-notifications