如何在 Xamarin Forms XLabs 中使用 INetwork?
How can I use INetwork in Xamarin Forms XLabs?
我在使用来自 XLabs.Platform 的 INetwork 时遇到问题。我得到 System.NullReferenceException。我不确定问题是否类似于 需要初始化 INetwork 的地方。但是,因为我是 Xamarin 的新手,所以我不知道如何设置 IOC 容器。我希望以一种完全跨平台的方式实现这一点(如果可以避免的话,我想避免放置特定于平台的代码)。谢谢!!
代码:
using XLabs.Ioc;
using XLabs.Platform;
...
namespace XXX
{
class XXX
{
public static bool isOnline()
{
var networkservice = DependencyService.Get<XLabs.Platform.Services.INetwork>();
var status = networkservice.InternetConnectionStatus();
return (
(status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaCarrierDataNetwork))
|| (status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaWiFiNetwork))
|| (status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaUnknownNetwork)));
}
}
}
PS 使用 XLabs.Platform 的文档已过时。 (显然)以前正常工作的 Reachability 接口不再工作了。考虑使用 this instead. This is an approach that requires cross platform code. Not going to use this 作为作者自己disses 的方法。
您通过添加此属性来填充 ioc:
[assembly: Xamarin.Forms.Dependency(typeof(NameOfClassImplementingAnInterface))]
如果你想检查是否有任何互联网连接,我建议使用 Connectivity Plugin(Xamarin 组件)。添加 Xaamrin 组件后,您可以检查 PCL/Shared 项目是否可以连接互联网,如下所示
if (CrossConnectivity.Current.IsConnected)
{ // Make API call here
}
else
DisplayAlert("Connectivity Issue", "Please Connect to a Network", "OK") ;
我在使用来自 XLabs.Platform 的 INetwork 时遇到问题。我得到 System.NullReferenceException。我不确定问题是否类似于
代码:
using XLabs.Ioc;
using XLabs.Platform;
...
namespace XXX
{
class XXX
{
public static bool isOnline()
{
var networkservice = DependencyService.Get<XLabs.Platform.Services.INetwork>();
var status = networkservice.InternetConnectionStatus();
return (
(status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaCarrierDataNetwork))
|| (status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaWiFiNetwork))
|| (status.Equals(XLabs.Platform.Services.NetworkStatus.ReachableViaUnknownNetwork)));
}
}
}
PS 使用 XLabs.Platform 的文档已过时。 (显然)以前正常工作的 Reachability 接口不再工作了。考虑使用 this instead. This is an approach that requires cross platform code. Not going to use this 作为作者自己disses 的方法。
您通过添加此属性来填充 ioc:
[assembly: Xamarin.Forms.Dependency(typeof(NameOfClassImplementingAnInterface))]
如果你想检查是否有任何互联网连接,我建议使用 Connectivity Plugin(Xamarin 组件)。添加 Xaamrin 组件后,您可以检查 PCL/Shared 项目是否可以连接互联网,如下所示
if (CrossConnectivity.Current.IsConnected)
{ // Make API call here
}
else
DisplayAlert("Connectivity Issue", "Please Connect to a Network", "OK") ;