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
我有一个跨平台的 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