第九章:特定于平台的API调用(二)

简介:

并行类和共享资产项目

虽然共享资产项目是平台项目的扩展,但这种关系是双向的:正如平台项目可以调用共享资产项目中的代码一样,SAP可以调用各个平台项目。
这意味着我们可以将特定于平台的API调用限制为各个平台项目中的类。 如果平台项目中这些类的名称和名称空间相同,那么SAP中的代码可以透明,独立于平台的方式访问这些类。
在PlatInfoSap2解决方案中,五个平台项目中的每一个都有一个名为PlatformInfo的类,它包含两个返回字符串对象的方法,名为GetModel和GetVersion。 这是iOS项目中此类的版本:

using System; 
using UIKit;
namespace PlatInfoSap2
{
    public class PlatformInfo
    {
        UIDevice device = new UIDevice();
        public string GetModel()
        {
            return device.Model.ToString();
        }
        public string GetVersion()
        {
            return String.Format("{0} {1}", device.SystemName, 
            device.SystemVersion);
        }
    }
} 

注意命名空间名称。 虽然此iOS项目中的其他类使用PlatInfoSap2.iOS命名空间,但此类的命名空间仅为PlatInfoSap2。 这允许SAP直接访问此类,而无需任何平台细节。
这是Android项目中的并行类。 相同的命名空间,相同的类名和相同的方法名,但使用Android API调用的这些方法的不同实现:

using System;
using Android.OS;
namespace PlatInfoSap2
{
    public class PlatformInfo
    {
        public string GetModel()
        {
            return String.Format("{0} {1}", Build.Manufacturer, 
 Build.Model);
        }
        public string GetVersion()
        {
            return Build.VERSION.Release.ToString();
        }
    }
}

这是三个Windows和Windows Phone项目中三个相同副本中存在的类:

using System;
using Windows.Security.ExchangeActiveSyncProvisioning; 
namespace PlatInfoSap2
{
    public class PlatformInfo
    {
        EasClientDeviceInformation devInfo = new EasClientDeviceInformation();
        public string GetModel()
        {
            return String.Format("{0} {1}", devInfo.SystemManufacturer, 
 devInfo.SystemProductName);
        }
        public string GetVersion()
        {
            return devInfo.OperatingSystem;
        }
    }
}

PlatInfoSap2项目中的XAML文件与PlatInfoSap1项目中的XAML文件基本相同。 代码隐藏文件相当简单:

using System;
using Xamarin.Forms;
namespace PlatInfoSap2
{
    public partial class PlatInfoSap2Page : ContentPage
    {
        public PlatInfoSap2Page ()
        {
            InitializeComponent ();
            PlatformInfo platformInfo = new PlatformInfo();
            modelLabel.Text = platformInfo.GetModel();
            versionLabel.Text = platformInfo.GetVersion();
        }
    }
}

该类引用的PlatformInfo的特定版本是已编译项目中的特定版本。 这几乎就像我们为Xamarin.Forms定义了一个小扩展,它存在于各个平台项目中。

目录
相关文章
|
1月前
|
小程序 前端开发 JavaScript
视觉智能平台常见问题之抠人脸的api如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
31 3
|
1月前
|
搜索推荐 API
Email API Service平台有哪些?3大API接口平台对比
本文对比了三个Email API Service:AokSend、Mailgun和Postmark。AokSend提供高效邮件服务,其API适用于营销和通知邮件;Mailgun的API灵活强大,支持多种语言;Postmark专注于Transactional邮件,API设计简洁。每个平台都提供详尽的文档和支持,用户可根据需求选择。
|
1月前
|
机器学习/深度学习 API 计算机视觉
视觉智能平台常见问题之获取人脸皮肤的颜色Api如何解决
视觉智能平台是利用机器学习和图像处理技术,提供图像识别、视频分析等智能视觉服务的平台;本合集针对该平台在使用中遇到的常见问题进行了收集和解答,以帮助开发者和企业用户在整合和部署视觉智能解决方案时,能够更快地定位问题并找到有效的解决策略。
19 0
|
1月前
|
数据采集 供应链 前端开发
电商企业如何构建一站式数字化供应链体系|API接口实现淘宝/京东/1688多平台商品采集+上传一站式供应链系统搭建
网络时代,企业面临转型。如今进入数字化时代,企业再次面临重大变革,全面实现数字化、智能化已是当务之急。公司将继续良性发展,请记住16个字:精简流程、降低成本、提高效率、智慧管理。主流电商平台API商品数据采集接口,不但可以在商品采集上为供应链提供大量商品,同时我们也可以通过申请官方商品上传商品发布API接口,实现商品的多平台发布。
|
1月前
|
API 开发者
1688阿里巴巴中国站平台 API接口获取商品详情 接入文档说明
1688(阿里巴巴批发网)的API接入文档是专为开发者提供的,用于指导如何集成和使用1688平台提供的API接口。这些API接口可以帮助开发者实现各种功能,如商品搜索、订单管理、用户认证等。
|
2月前
|
人工智能 Serverless API
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
AI 绘画平台难开发,难变现?试试 Stable Diffusion API Serverless 版解决方案
|
2月前
|
监控 Java API
JDK 9新特性深度探索:平台日志API和服务
本文将深入探讨JDK 9中引入的平台日志API和服务。这一新特性为Java应用程序提供了更强大、灵活的日志记录功能,帮助开发者更好地监控和诊断应用程序的运行状况。本文将详细介绍平台日志API和服务的特性和优势,以及如何在项目中应用这一新特性来提升应用程序的稳定性和可维护性。
|
新零售 API 数据中心
|
15天前
|
缓存 前端开发 API
API接口封装系列
API(Application Programming Interface)接口封装是将系统内部的功能封装成可复用的程序接口并向外部提供,以便其他系统调用和使用这些功能,通过这种方式实现系统之间的通信和协作。下面将介绍API接口封装的一些关键步骤和注意事项。
|
22天前
|
监控 前端开发 JavaScript
实战篇:商品API接口在跨平台销售中的有效运用与案例解析
随着电子商务的蓬勃发展,企业为了扩大市场覆盖面,经常需要在多个在线平台上展示和销售产品。然而,手工管理多个平台的库存、价格、商品描述等信息既耗时又容易出错。商品API接口在这一背景下显得尤为重要,它能够帮助企业在不同的销售平台之间实现商品信息的高效同步和管理。本文将通过具体的淘宝API接口使用案例,展示如何在跨平台销售中有效利用商品API接口,以及如何通过代码实现数据的统一管理。