2015-12-17 36 views
1

瞭解爲什麼不建議檢測設備類型以執行運行時功能,最佳實踐指示檢測哪些API存在。這樣,用戶在桌面模式下運行平板電腦時,不會遇到意外的行爲。而且,由於硬件非常動態,因此檢查觸摸功能等用戶交互也不是一個好方法。檢測哪些API在UWP應用程序中存在

在我們的項目中,我們決定確定我們需要的三種不同屏幕寬度的API - 小型,中型和大型。微軟列出了這些API here。但是這個清單相當長,檢查每個清單的存在會很麻煩。

對於如何執行這些檢查而不必重複調用Microsoft提供的API列表中的每個合約的ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons")這些任何建議都將不勝感激。

在此先感謝。

+3

你只需要檢查你的應用程序真正需要什麼。如果你需要他們,它會讓我感到驚訝。 – Bart

+0

這是有道理的,你是對的,我們當然不會需要它們。我認爲這是我的缺陷......不完全知道我們的客戶端需要爲應用的每種風格(屏幕寬度)需要什麼功能。謝謝,巴特。 – killQuotes

回答

1

你平時做的只是增加約需要特定的API代碼檢查:

if(ApiInformation.IsEventPresent("Windows.Phone.UI.Input.HardwareButtons", "BackPressed")) 
{ 
    HardwareButtons.BackPressed += OnHardwareButtonsBackPressed; 
} 

如果你知道你需要相同的API多個代碼塊,你可以緩存值。

另一種方法是一次檢查整個完整合同。如果你知道你需要能夠打電話,而不是檢查每個事件或方法調用,只需檢查合同。

ApiInformation.IsApiContractPresent("Windows.ApplicationModel.Calls.CallsPhoneContract"); 

「不知道」什麼你的客戶可能需要的是一個「不是問題的問題」。該問題的答案是YAGNI。除非您處於實施階段,否則不要檢查合同。

相關問題