Intune MAM SDK:如何在 iOS 和 Android 中获取用户 ID?

Intune MAM SDK: How to get user-ID in iOS and Android?

我正在使用 Intune 通过公司门户应用程序注册应用程序,现在我的问题是:如何在 Xamarin Forms 中获取当前用户 ID (UPN/e-mail)?

在 Xamarin.iOS 中,我使用的是 Intune Wrappers,它可以很好地与身份验证配合使用,但我如何获得 UPN?

在 Xamarin.Android 我已经这样做了:

我已使用 SDK 和 MAM.Remapper 工具按照此处所述设置项目。我还添加了一个派生自 MAMApplication 的新应用程序 class。

在我的 MainActivity 中,我实现了这样的 OnMAMCreate:

protected override async void OnMAMCreate(Bundle bundle)
{ 
    base.OnMAMCreate(bundle);
      Xamarin.Forms.Forms.Init(this, bundle);
      LoadApplication(new App());

      var userInfo = MAMComponents.GetUserInfo();
      var userEmail = userInfo.PrimaryUser; 
}

它一直给我错误提示,说 MAMComponents 没有像 GetUserInfo() 这样的方法。我试着在 Assembly 浏览器中四处挖掘,但没有在 MAMComponents 中找到任何类似的东西。

完全没有关于 Xamarin.Forms 与 Intune 集成的在线帮助。

我找到了这方面的帮助并且能够弄明白。首先,这必须针对特定平台完成,这意味着 Xamarin.forms 的全局 PCL 项目什么也做不了。您需要将 nuget 包分别添加到 Xamarin.forms 的 iOS 和 Android 项目中。

在 iOS 将此添加到您的 AppDelegate.cs:

string identity = null;
IntuneMAMEnrollmentManager.Instance.LoginAndEnrollAccount(identity);
IntuneMAMPolicyManager.Instance.IsIdentityManaged(IntuneMAMEnrollmentManager.Instance.EnrolledAccount);

在 Entitlement.plist 中启用钥匙串并为 MAM 和 adalcache 添加两个组,如图所示:

在您的 Main.cs 或您需要 UPN 的任何地方添加:

IntuneMAMPolicyManager.Instance.IsIdentityManaged(IntuneMAMEnrollmentManager.Instance.EnrolledAccount); 
string testUser = IntuneMAMEnrollmentManager.Instance.EnrolledAccount;

如果您希望在全局 PCL 项目中操作 UPN,请使用依赖服务将数据发送到 PCL。