首页 > 解决方案 > 是否可以将特定的 Xamarin.IOS 引用到 Xamarin 表单中

问题描述

我们正在尝试组合 Xamarin 代码,一个是使用 Xamarin Form(非 XAML)创建的,另一个是纯粹的 Xamarin.IOS。

我们查看 Xamarin.Essential 的库,它看起来没有CoreMotion.CMPedometer (iOS),因为我们需要计算步骤。

是否可以在 Xamarin 表单(共享)中运行代码来处理特定的操作系统?

谢谢

标签: xamarin.formsxamarin.ios

解决方案


是的,您需要使用Dependency Service

所有的文档都可以在这里找到...... 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(或任何适用的)实现相同的概念。

看看这是否对你有帮助。


推荐阅读