我们正在尝试结合使用Xamarin Form(非XAML)创建的Xamarin代码,另一个是纯Xamarin.IOS。
我们看一下Xamarin.Essential的库,看起来它没有CoreMotion.CMPedometer(iOS),因为我们需要计算步数。
是否可以在Xamarin表单(共享)中运行代码来处理特定的操作系统?
谢谢
是的,您需要使用依赖服务。
所有的doco都可以在这里找到... https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/dependency-service/introduction
这里显示了一个与设备信息有关的例子(为简单起见已经减少了)
首先,您在.NET标准/ PCL项目中创建一个接口(如果您不使用共享,可能就是这种情况)。
using System;
namespace MyApplication.Interfaces
{
public interface IDeviceInfo
{
String GetDeviceModel();
String GetDeviceVersion();
}
}
然后在特定于平台的项目中,创建一个实现该接口的依赖关系服务,并指示编译器将该类识别为依赖关系服务。
using System;
using MyApplication.Interfaces;
using UIKit;
[assembly: Xamarin.Forms.Dependency(typeof(MyApplication.iOS.DeviceInfo))]
Namespace MyApplication.iOS
{
public class DeviceInfo : IDeviceInfo
{
UIDevice _device;
Public DeviceInfo()
{
_device = new UIDevice();
}
public string GetDeviceModel()
{
return _device.Model;
}
public string GetDeviceVersion()
{
return _device.SystemVersion;
}
}
}
现在,从.NET标准/ PCL项目,您可以根据需要调用依赖服务。
var deviceModel = DependencyService.Get<IDeviceInfo>().GetDeviceModel();
以上是针对iOS的,这意味着您需要为Android和UWP(或任何适用的)实现相同的概念。
看看这对你有帮助。