mip::Consent列舉類別會實作易於使用的方法,允許應用程式開發人員根據SDK所存取的端點提供自定義同意體驗。 通知可以通知使用者將收集的數據、如何移除數據,或法律或合規性政策所需的任何其他資訊。 一旦使用者授與同意,應用程式就可以繼續。 只有在嘗試存取 Active Directory Rights Management Services (AD RMS) 時,才會呼叫此委派。 存取雲端服務時不會呼叫它。 如果您的應用程式不支援 AD RMS,您可以實作一個委派函數,一律傳回 Consent.AcceptAlways。
實施
同意是通過擴充mip::Consent基類並實作GetUserConsent以返回mip::Consent枚舉值之一來實現的。
衍生自 mip::Consent 的物件會傳送至 mip::FileProfile::Settings 或 mip::ProtectionProfile::Settings 的建構函式。
當使用者執行需要同意的作業時,SDK 會呼叫 GetUserConsent 方法,並傳入目的地 URL 做為 參數。 此方法會實作向用戶顯示必要資訊,讓他們決定他們是否同意使用服務。
同意選項
- AcceptAlways:同意並記住決策。
- 接受:同意一次。
- 拒絕:不同意。
當 SDK 要求使用者同意此方法時,用戶端應用程式應該向使用者顯示 URL。 用戶端應用程式應該提供一些方法來取得使用者的同意,並傳回符合使用者決策的適當同意列舉。
範例實作
consent_delegate_impl.h
class ConsentDelegateImpl final : public mip::ConsentDelegate {
public:
ConsentDelegateImpl() = default;
virtual mip::Consent GetUserConsent(const std::string& url) override;
};
consent_delegate_impl.cpp
當 SDK 需要同意時,SDK 會呼叫GetUserConsent方法,並將 URL 作為參數傳入。 在下列範例中,系統會通知使用者 SDK 會連線到該提供的 URL,並提供命令行上的選項給使用者。 根據使用者選擇,使用者接受或拒絕同意,並將該同意傳遞給 SDK。 如果使用者拒絕同意,應用程式將會擲回例外狀況,而且不會對保護服務進行呼叫。
Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
//Print the consent URL, ask user to choose
std::cout << "SDK will connect to: " << url << std::endl;
std::cout << "1) Accept Always" << std::endl;
std::cout << "2) Accept" << std::endl;
std::cout << "3) Reject" << std::endl;
std::cout << "Select an option: ";
char input;
std::cin >> input;
switch (input)
{
case '1':
return Consent::AcceptAlways;
break;
case '2':
return Consent::Accept;
break;
case '3':
return Consent::Reject;
break;
default:
return Consent::Reject;
}
}
在測試、開發或只使用雲端服務時,可以實作基本的 ConsentDelegate 。
Consent ConsentDelegateImpl::GetUserConsent(const string& url) {
return Consent::AcceptAlways;
}
不過,根據地區或商務需求和法規,在生產程序代碼中,使用者可能需要出示同意選擇。