存取個人資料裝置適用的指導方針

Applies to Windows and Windows Phone

麥克風、相機、定位提供者及文字訊息服務可以存取使用者的個人資料或向使用者收費,因此被視為「敏感裝置」。 Windows 市集應用程式具有一些功能,可以確保使用者能夠控制哪些應用程式可以存取這些敏感裝置。本主題描述有關設計 Windows 市集應用程式來處理使用者啟用及停用裝置存取權之方式的指導方針。

範例

Windows 市集應用程式使用敏感裝置的權限是依據各個應用程式、各個使用者層級來控制的。使用者使用同意提示或設定常用鍵來控制權限。以下影像顯示與同意提示相關聯的 UI 以及 [設定] 窗格的 [權限] 區段。

同意提示

以下是 Windows 市集應用程式中的同意提示。當應用程式第一次嘗試存取敏感裝置時,會出現提示。它讓使用者能夠選擇封鎖或允許應用程式存取裝置功能。Windows 會記住您的回答,所以使用者下次使用相同的應用程式時就不會再提示。

Windows 市集應用程式中的同意提示

設定常用鍵

每個應用程式對敏感裝置的存取權也可以使用設定常用鍵加以設定。使用者點選設定常用鍵即可開啟 [設定] 窗格 (SettingsPane)。此處顯示設定常用鍵位於應用程式右側:

設定常用鍵

Windows 預設為所有 Windows 市集應用程式提供 [權限] 飛出視窗。使用者從 [設定] 窗格按一下 [權限] 時,會顯示 [權限] 飛出視窗,然後使用者即可啟用或停用應用程式對敏感裝置功能的存取權。以下是天氣應用程式的 [權限] 飛出視窗:

提供應用程式位置設定的設定飛出視窗

可行與禁止事項

  • 第一個開始使用敏感裝置的呼叫必須在主要 UI 執行緒上發出,才能對使用者顯示同意提示。除非顯示同意提示,否則使用者無法授與裝置存取權給應用程式。請確保下列各項:
    • 應用程式不要使用背景工作來進行第一次的裝置使用。
    • 使用 JavaScript 和 HTML 的應用程式不要先使用存取應用程式啟用處理常式中裝置的物件。
    • 使用 C#/VB/C++ 和 XAML 的應用程式要先使用存取 MainPage.xaml.cs (而不是 App.xaml.cs) 中裝置的物件。
  • 如果您應用程式中的所有工作不一定要使用敏感裝置,請不要存取它,除非使用者希望完成需要它的工作。例如,包含 [用我的位置登入]"" 和 [拍照個人檔案圖片]"" 按鈕的社交網路應用程式,不應該存取位置或相機,除非使用者按一下對應的按鈕。
  • 如果應用程式的主功能需要存取敏感裝置,則在應用程式啟動時存取裝置。例如,擷取即時視訊的應用程式主要用途需要使用相機。在這種情況下,就適合立即要求裝置存取權。
  • 不要以程式設計方式啟動 [設定] 窗格的 [權限] 頁面。

如果關閉了對裝置的存取

有三種方式可能停用存取裝置:如果提示時使用者拒絕同意;如果使用者在 [設定] 窗格的 [權限] 飛出視窗中封鎖存取;如果系統中沒有出現裝置。如果您的應用程式無法存取敏感裝置,請遵循下列建議:

  • 在使用者嘗試使用不可用的裝置功能時,通知使用者。使用者應該得知功能已遺失。
  • 讓使用者清楚看到停用裝置的通知。
  • 如果此功能對應用程式的主要功能並非不可或缺,使用飛出視窗或內嵌訊息通知使用者。
  • 處理當應用程式嘗試存取停用的裝置功能時將會發生的 API 錯誤。這個主題的參考一節中,提供方法呼叫傳回指示應用程式無法存取裝置之錯誤的詳細資訊。
  • 向使用者顯示訊息,通知他們裝置功能已停用,並告訴他們如何從 [設定] 窗格的 [權限] 飛出視窗重新啟用。如需如何通知使用者停用裝置的範例,請參閱其他用法指導方針
  • 提供 UI 讓使用者在裝置重新啟用時能夠重新啟動對裝置的存取。使用這個 UI 重新具現化或重新初始化存取裝置的物件。例如,地圖應用程式可能會提供更新目前位置的按鈕。此按鈕必須具現化新的 Geolocator 物件。
  • 不要使用通知來告知使用者不可用的裝置功能。
  • 請勿在使用者尚未要求裝置功能時,顯示裝置功能的錯誤訊息。例如,如果社交網路網站提供在使用者張貼訊息時包含定位的選項,但使用者並未選擇分享定位,便不應在張貼訊息時顯示錯誤訊息。

其他用法指導方針

範例錯誤訊息

裝置停用的原因錯誤訊息格式範例

使用同意提示或設定常用鍵封鎖使用者的存取。

「您的 <device capability> 目前是關閉的。若要變更您的 <device capability> 設定,請開啟設定常用鍵並點選權限。然後 <enable action> 會重新開始使用 <device capability>。」

  • 使用網路攝影機、麥克風、位置或文字訊息來取代 <device capability>
  • 使用使用者需要在 UI 中採取的動作來取代 <enable action> 以重新啟動存取功能 (如按一下按鈕)。

系統上沒有顯示裝置功能。

「您的系統上沒有顯示必要的 <device capability>。」

 

您用來顯示停用裝置功能之訊息的 UI,取決於裝置功能對於應用程式是否必要。下列範例顯示如何顯示裝置功能訊息。

如果裝置是非必要的,則顯示飛出視窗或內嵌文字

如果敏感裝置對您的應用程式是非必要的,叫用的時候在飛出視窗中顯示訊息,或使用不顯眼的內嵌文字。

例如,如果地圖應用程式具有顯示目前位置的按鈕,而使用者在必要裝置功能停用時按一下這個按鈕,應用程式應該在按鈕附近以飛出視窗顯示錯誤訊息,或是以內嵌文字顯示錯誤訊息。

下列螢幕擷取畫面顯示應用程式中以飛出視窗顯示錯誤訊息。訊息顯示:「找不到您的位置。請變更 [設定] 中的權限,允許地圖存取您的位置。然後重新啟動應用程式。」

Windows 市集應用程式中的同意提示

如果裝置功能是必要的,則顯示對話方塊

如果應用程式需要裝置存取它的主功能,使用 MessageDialog 顯示錯誤訊息。如需完整範例,請參閱訊息對話方塊範例

在接下來的螢幕擷取畫面中,相機應用程式需要存取網路攝影機及麥克風功能才能使用主功能,因此它會顯示一個訊息,指示使用者啟用相機功能。

應該啟用位置的使用者訊息

參考

這個表格列出停用和重新啟用敏感裝置功能的 API 資訊。

功能啟用和停用的相關資訊
定位

無論是 GetGeopositionAsync 方法或是 PositionChanged 事件的事件處理常式,都會觸發同意提示。

請參閱Guidelines for location-aware apps,以取得 如何處理使用者在您應用程式中停用和重新啟用定位的詳細資訊。

如需逐步指導和程式碼範例,請參閱偵測地理位置 (使用 JavaScript 和 HTML 的 Windows 市集應用程式)偵測地理位置 (使用 C#/VB/C++ 和 XAML 的 Windows 市集應用程式)

網路攝影機或麥克風

使用 Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync 從相機擷取相片或視訊的應用程式,應該注意下列各項:

  • 呼叫 Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync 會在應用程式首次執行時觸發同意提示。Windows.Media.Capture.CameraCaptureUI.CaptureFileAsync 不會在網路攝影機功能關閉時傳回錯誤。相反地,相機擷取 UI 會顯示訊息,指出網路攝影機功能已關閉。

使用 Windows.Media.Capture.MediaCapture 來預覽或擷取音訊、視訊或相片的應用程式,應該處理下列問題:

  • MediaCapture 非同步方式的錯誤處理常式會收到 E_ACCESSDENIED 錯誤 (如果使用者未授與權限) 及 HRESULT_FROM_WIN32(ERROR_FILE_HANDLE_REVOKED) (如果權限已撤銷)。
  • 如果使用者在撤銷網路攝影機存取權後重新啟用網路攝影機,再次呼叫 InitializeAsync 即可存取攝影機。例如,HRESULT_FROM_WIN32(ERROR_FILE_HANDLE_REVOKED) 錯誤的錯誤處理常式指示使用者使用設定常用鍵重新啟用網路攝影機,然後點選按鈕以重新啟動視訊預覽。按鈕的程式碼應該先呼叫 InitializeAsync,之後才進行其他呼叫。

如需使用 Windows.Media.Capture 的教學課程,請參閱將多媒體新增到您的應用程式 (使用 JavaScript 和 HTML 的 Windows 市集應用程式)新增多媒體 (使用 C#/VB/C++ 和 XAML 的 Windows 市集應用程式)

使用 IAudioClient2 介面的應用程式應該注意,呼叫 ActivateAudioInterfaceAsync 將會觸發同意提示。

 

相關主題

適用於開發人員 (HTML)
DeviceCapability
MessageDialog
應用程式功能宣告
如何在套件資訊清單中手動指定裝置功能
Quickstart: Adding a flyout
適用於開發人員 (XAML)
DeviceCapability
MessageDialog
應用程式功能宣告
如何在套件資訊清單中手動指定裝置功能
新增飛出視窗和功能表
範例
訊息對話方塊範例

 

 

顯示:
© 2015 Microsoft