我有一个跨平台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>();
}
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
});
}
}
}
苹果吐司提供商
[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
});
}
}
}
答案 0 :(得分:1)
Android 8要求在通知中显示分配给他们的频道(请在此处查看更多信息:https://developer.android.com/guide/topics/ui/notifiers/notifications)。如果您的插件不支持,则可以要求作者以适当的方式对其进行更新,也可以使用本机API创建自己的代码。
答案 1 :(得分:0)
找到了解决问题的方法。显然我正在使用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