xamarin.forms - 是否可以将特定的 Xamarin.IOS 引用到 Xamarin 表单中
问题描述
我们正在尝试组合 Xamarin 代码,一个是使用 Xamarin Form(非 XAML)创建的,另一个是纯粹的 Xamarin.IOS。
我们查看 Xamarin.Essential 的库,它看起来没有CoreMotion.CMPedometer (iOS),因为我们需要计算步骤。
是否可以在 Xamarin 表单(共享)中运行代码来处理特定的操作系统?
谢谢
解决方案
是的,您需要使用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(或任何适用的)实现相同的概念。
看看这是否对你有帮助。
推荐阅读
- python - 根据python中的另一个数组值从数组中选择元素
- css - CSS网格,组件占用可变数量的正方形
- android - 无法通过 Tecmanic(Evanto) 构建项目 Gogrocery
- javascript - 如何将自定义光标移动到文本上
- r - Rshiny - Plotly 添加水印徽标以仅在下载启动时进行绘图
- python - 如何在 python 中使用 Selenium 打开 URL?
- typescript - TypeScript 字典中的类型推断
- ios - 代号一在崩溃后检索日志
- spring-data - 如何拥有多个 Spring Boot Repository(Interface) 实例以进行完整的测试状态隔离?
- node.js - MongoDB在查找和修改基于相同ID的文档时遇到麻烦