You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:如何将Workspace ONE SDK集成至.NET MAUI应用?

.NET MAUI集成Workspace ONE SDK 完整指南

前置准备

  • 获取VMware官方提供的Workspace ONE iOS SDK(AWSDK.framework)和Android SDK(aw-sdk-release.aar)包
  • 确保.NET MAUI项目目标版本:iOS 14.0+、Android 10.0(API 29)+
  • 安装Xcode(13.0+)和Android Studio(2022.0+)环境

iOS平台配置

1. 导入SDK框架

将AWSDK.framework复制到项目的Platforms/iOS目录,在项目csproj文件中添加引用:

<ItemGroup>
  <NativeReference Include="Platforms/iOS/AWSDK.framework" Kind="Framework" />
</ItemGroup>

2. 配置Info.plist

添加必要权限与SDK配置项:

<!-- 权限配置 -->
<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>
<key>NSVPNUsageDescription</key>
<string>应用需要VPN连接以访问企业资源</string>

<!-- Workspace ONE SDK配置 -->
<key>AWSDKConfiguration</key>
<dict>
  <key>tenantUrl</key>
  <string>https://your-tenant.vmware.com</string>
  <key>groupId</key>
  <string>your-group-id</string>
  <key>enableComplianceCheck</key>
  <true/>
</dict>

3. 配置Entitlements.plist

启用必要的权限:

<dict>
  <key>keychain-access-groups</key>
  <array>
    <string>$(AppIdentifierPrefix)com.yourcompany.yourapp</string>
  </array>
  <key>com.apple.developer.vpn.api</key>
  <array>
    <string>packet-tunnel-provider</string>
  </array>
  <key>com.apple.developer.managed-app-configuration</key>
  <true/>
</dict>

4. 编译设置

在Xcode中打开iOS项目:

  • 前往Build Settings,将Framework Search Paths指向AWSDK.framework所在目录
  • 关闭Enable Bitcode选项

Android平台配置

1. 导入SDK包

将aw-sdk-release.aar复制到项目的Platforms/Android/libs目录,在csproj中添加引用:

<ItemGroup>
  <AndroidLibrary Include="Platforms/Android/libs/aw-sdk-release.aar" />
</ItemGroup>

2. 配置AndroidManifest.xml

添加权限、服务与SDK配置:

<!-- 权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<!-- SDK服务与接收器 -->
<service android:name="com.vmware.awake.vpn.VpnService" android:permission="android.permission.BIND_VPN_SERVICE" />
<receiver android:name="com.vmware.awake.receivers.AWSDKReceiver" />

<!-- SDK配置 -->
<meta-data android:name="com.vmware.awake.tenant_url" android:value="https://your-tenant.vmware.com" />
<meta-data android:name="com.vmware.awake.group_id" android:value="your-group-id" />

3. 配置Gradle

在Platforms/Android/build.gradle中添加依赖与配置:

android {
    defaultConfig {
        minSdkVersion 29
    }
}

dependencies {
    implementation 'com.vmware.awake:aw-sdk:xx.x.x' // 替换为对应SDK版本
    implementation 'com.google.android.material:material:1.9.0'
}

4. ProGuard配置(可选)

若启用代码混淆,在proguard-rules.pro中添加规则:

-keep class com.vmware.awake.** { *; }
-dontwarn com.vmware.awake.**

跨平台初始化与适配

1. 平台特定初始化逻辑

使用MAUI的Partial类实现平台初始化:

iOS平台(Platforms/iOS/AppDelegate.cs)

public partial class AppDelegate : MauiUIApplicationDelegate
{
    protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();

    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        // 初始化Workspace ONE SDK
        var config = AWSDKConfiguration.FromDictionary(NSBundle.MainBundle.InfoDictionary["AWSDKConfiguration"] as NSDictionary);
        AWSDKManager.SharedManager.Initialize(config, (status, error) =>
        {
            if (error != null)
            {
                Console.WriteLine($"SDK初始化失败: {error.LocalizedDescription}");
                return;
            }
            // 检查合规性
            AWSDKManager.SharedManager.CheckCompliance((compliant, error) =>
            {
                if (compliant)
                {
                    // 应用合规,继续流程
                }
            });
        });

        return base.FinishedLaunching(app, options);
    }
}

Android平台(Platforms/Android/MainActivity.cs)

[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public partial class MainActivity : MauiAppCompatActivity
{
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);

        // 初始化Workspace ONE SDK
        AWSDKManager.Initialize(this, (status, error) =>
        {
            if (error != null)
            {
                Console.WriteLine($"SDK初始化失败: {error.Message}");
                return;
            }
            // 检查合规性
            AWSDKManager.Instance.CheckCompliance((compliant, error) =>
            {
                if (compliant)
                {
                    // 应用合规,继续流程
                }
            });
        });
    }
}

2. 跨平台事件传递

使用MAUI的MessagingCenter将平台SDK事件传递到共享代码层:

// iOS平台回调中发送事件
MessagingCenter.Send(this, "SdkComplianceChanged", compliant);

// 共享代码层订阅事件
MessagingCenter.Subscribe<AppDelegate, bool>(this, "SdkComplianceChanged", (sender, isCompliant) =>
{
    // 处理合规状态变化
});

核心功能示例

合规检查

在共享ViewModel中封装合规检查逻辑:

public class MainViewModel : ObservableObject
{
    private bool _isCompliant;
    public bool IsCompliant
    {
        get => _isCompliant;
        set => SetProperty(ref _isCompliant, value);
    }

    public async Task CheckComplianceAsync()
    {
        await MainThread.InvokeOnMainThreadAsync(() =>
        {
#if IOS
            AWSDKManager.SharedManager.CheckCompliance((compliant, error) =>
            {
                IsCompliant = compliant;
            });
#elif ANDROID
            AWSDKManager.Instance.CheckCompliance((compliant, error) =>
            {
                IsCompliant = compliant;
            });
#endif
        });
    }
}

加密存储

使用SDK提供的安全存储API保存敏感数据:

// iOS
AWSDKManager.SharedManager.Keychain.SetString("user_token", "your-auth-token");

// Android
AWSDKManager.Instance.Keychain.SetString("user_token", "your-auth-token");

最佳实践

  • 延迟初始化:避免在应用启动时立即初始化SDK,可在用户进入需要企业权限的页面时再触发初始化,提升启动速度
  • 错误处理:捕获SDK操作中的异常,针对网络错误、配置错误等场景提供明确的用户提示
  • 定期合规检查:在应用后台或页面切换时定期调用合规检查API,确保应用始终符合企业政策
  • 敏感数据安全:优先使用SDK提供的加密存储能力,避免自行存储认证令牌、企业数据等敏感信息
  • 环境测试:在真实的MDM环境中测试SDK功能,包括配置推送、VPN连接、合规政策触发等场景

内容的提问来源于stack exchange,提问作者Alpay Çalışır

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 05:04:57