Xamarin Form呼叫各個平臺方法
阿新 • • 發佈:2019-01-25
Xamarin
不同平臺的執行程式碼
有時候需要在不同的平臺上,執行不同的程式碼,下面就看是說明這個需求怎麼實現。
在共享的目錄中處理邏輯
在Xamarin.Forms
中,有這些指令可以使用:#if, #elif, and endif.
來看一下程式碼
#if __IOS__ using UIKit; #elif __ANDROID__ using Android.OS; #elif WINDOWS_APP || WINDOWS_PHONE_APP || WINDOWS_UWP using Windows.Security.ExchangeActiveSyncProvisioning; #endif
這就是一個完整的體系,這些指令不止作用於開頭,類裡面也是可以使用的。
使用各個平臺的共同類
如果要實現在不同平臺呼叫不同平臺的類,則需要在每個平臺的工程上都要新建一個共同類,類名、方法和名稱空間,要完全一致。
Xamarin Forms
PlatformInfo platformInfo = new PlatformInfo();
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); } } }
Android
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(); } } }
第二種方式使用各個平臺的類
一個庫通常不能訪問應用程式專案中的類,那麼我們是可以使用DependencyService
類來呼叫,各個平臺的方法。
怎麼做?
1.在Xamarin Forms
平臺上建立一個介面,讓各個平臺來實現該介面
2.每個平臺實現了該介面後,必須註冊在Dependency
屬性上
3.在Xamarin Forms
中,使用DependencyService
類的Get
方法就可以呼叫了
程式碼
IPlatformInfo platformInfo = DependencyService.Get<IPlatformInfo>();
modelLabel.Text = platformInfo.GetModel();
versionLabel.Text = platformInfo.GetVersion();