Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Toast通知在XF Android 8.0/1上不起作用_C#_Xamarin.forms_Notifications_Xamarin.android_Toast - Fatal编程技术网

C# Toast通知在XF Android 8.0/1上不起作用

C# Toast通知在XF Android 8.0/1上不起作用,c#,xamarin.forms,notifications,xamarin.android,toast,C#,Xamarin.forms,Notifications,Xamarin.android,Toast,我有一个跨平台的XF应用程序 我正在使用Toast.Forms发送本地应用程序通知,该插件在iOS和Android上都能工作。 在iOS上它工作得非常好,但在Android上它只适用于低于7.1的版本,在oreo 8.0或8.1(>API 26)上它不再工作了 这是我的吐司课: internal class ToastService : IToastService { private readonly IAppDeviceDependency _DeviceDependency;

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

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

这是我的吐司课:

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>();
}
内部类ToastService:IToastService
{
专用只读IAppDeviceDependence _DeviceDependence;
公共ToastService([NotNull]IAppDeviceDependency设备Dependency)
{
_DeviceDependency=DeviceDependency??抛出新的ArgumentNullException(nameof(DeviceDependency));
}
public void showtoos(字符串标题、字符串描述、bool isClickable、bool clearFromHistory)
{
DeviceToastProvider.ShowToast(标题、描述、可点击、clearFromHistory);
}
私有IToastProvider DeviceToastProvider=>\u deviceDependence.Get();
}
Android toast提供商:

[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
        });
    }
}
}
[程序集:依赖项(typeof(androidtoasprovider))]
命名空间MyApp.Droid.Providers
{
公共类AndroidToastProvider:IToastProvider
{
公共异步void showtoos(字符串标题、字符串描述、bool isClickable、bool clearFromHistory)
{
var notificator=DependencyService.Get();
等待通知者。通知(新通知选项)
{
头衔,
描述=描述,
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
        });
    }
}
}
[程序集:依赖项(typeof(AppleToastProvider))]
命名空间MyApp.iOS.Providers
{
公共类AppleToastProvider:IToastProvider
{
公共异步void showtoos(字符串标题、字符串描述、bool isClickable、bool clearFromHistory)
{
var notificator=DependencyService.Get();
等待通知者。通知(新通知选项)
{
头衔,
描述=描述,
IsClickable=IsClickable,
ClearFromHistory=ClearFromHistory
});
}
}
}

Android 8要求通知具有分配给它们的频道以显示(请参阅此处的更多信息:)。如果您的插件不支持,您可以要求作者以适当的方式更新它,或者您可以使用本机API创建自己的代码。

找到了问题的解决方案。显然,我是使用Android 7.1版编译的,它不支持Android Oreo 8.0的新通知通道。现在我正在使用安卓8.1(Oreo)进行编译,我已经将Toast.plugin更新到最新版本,它在所有低于安卓8.1的版本上都运行良好


关于这个问题的更多信息可以在这里找到:

很遗憾,我不认为Toast插件已更新为支持Android 8.0,因此我必须纠正Android 8.0通知的特殊情况,正如您所提到的。我很可能会创建一个通知通道。非常感谢。