چیزهای جدید برای سازمانی در اندروید 10

این صفحه مروری بر APIهای سازمانی جدید، ویژگی‌ها و تغییرات رفتاری معرفی‌شده در اندروید ۱۰ ارائه می‌دهد.

پروفایل‌های کاری برای دستگاه‌های متعلق به شرکت

اندروید ۱۰ ویژگی‌های جدید تأمین و تأیید را برای دستگاه‌های متعلق به شرکت معرفی می‌کند که فقط به یک پروفایل کاری نیاز دارند.

ابزارهای تأمین بهبود یافته برای پروفایل‌های کاری

شما می‌توانید پروفایل‌های کاری را در دستگاه‌های اندروید ۱۰ و بالاتر که با استفاده از کد QR یا Zero touch ثبت‌نام شده‌اند، ارائه دهید. در طول ارائه دستگاه متعلق به شرکت، یک قابلیت جدید به برنامه‌های کنترل‌کننده سیاست دستگاه (DPC) اجازه می‌دهد تا پروفایل کاری یا تنظیمات کاملاً مدیریت‌شده را آغاز کنند. پس از ایجاد پروفایل کاری یا برقراری مدیریت کامل، DPCها باید صفحات انطباق با سیاست را برای اجرای هرگونه سیاست اولیه راه‌اندازی کنند.

در فایل مانیفست DPC خود، یک فیلتر intent جدید برای GET_PROVISIONING_MODE در یک activity تعریف کنید و مجوز BIND_DEVICE_ADMIN را برای جلوگیری از شروع activity توسط برنامه‌های دلخواه اضافه کنید. برای مثال:

<activity
    android:name=".GetProvisioningModeActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action
            android:name="android.app.action.GET_PROVISIONING_MODE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

در طول آماده‌سازی، سیستم فعالیت مرتبط با فیلتر intent را اجرا می‌کند. هدف از این فعالیت، تعیین حالت مدیریت (پروفایل کاری یا کاملاً مدیریت‌شده) است.

ممکن است بازیابی موارد اضافی تأمین‌کننده قبل از تعیین حالت مدیریت مناسب برای دستگاه مفید باشد. اکتیویتی می‌تواند getIntent() را برای بازیابی موارد زیر فراخوانی کند:

DPCها همچنین می‌توانند یک هدف نتیجه جدید ایجاد کنند و موارد اضافی زیر را به آن اضافه کنند:

  • EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE : به بسته موجود اضافه کنید یا یک بسته جدید ایجاد کنید. این بسته به عنوان یک intent extra ارسال می‌شود، زمانی که DPC شما صفحات انطباق با سیاست خود را اجرا می‌کند.
  • EXTRA_PROVISIONING_ACCOUNT_TO_MIGRATE : فقط در صورت اضافه کردن یک حساب کاری به عنوان بخشی از تنظیمات پروفایل کاری، یک حساب را برای انتقال مشخص کنید.
  • EXTRA_PROVISIONING_SKIP_EDUCATION_SCREENS

برای تنظیم حالت مدیریت روی دستگاه، تابع putExtra(DevicePolicyManager.EXTRA_PROVISIONING_MODE,desiredProvisioningMode) را فراخوانی کنید، که در آن desiredProvisioningMode برابر است با:

  • مشخصات کاری: PROVISIONING_MODE_MANAGED_PROFILE
  • کاملاً مدیریت‌شده: PROVISIONING_MODE_FULLY_MANAGED_DEVICE

با ارسال جزئیات تأمین به تنظیمات از طریق setResult(RESULT_OK, Intent) و بستن تمام صفحات فعال با finish() نمایه کاری یا تأمین کاملاً مدیریت‌شده را تکمیل کنید.

پس از تکمیل آماده‌سازی، یک Intent جدید برای DPCها در دسترس قرار می‌گیرد تا صفحات انطباق خود را راه‌اندازی کرده و تنظیمات اولیه خط‌مشی را اعمال کنند. در دستگاه‌های پروفایل کاری، صفحات انطباق در پروفایل کاری نمایش داده می‌شوند. DPC شما باید اطمینان حاصل کند که صفحات انطباق آن به کاربران نشان داده می‌شود، حتی اگر کاربر از جریان راه‌اندازی خارج شود.

در فایل مانیفست DPC خود، یک فیلتر intent جدید برای ADMIN_POLICY_COMPLIANCE در یک activity تعریف کنید و مجوز BIND_DEVICE_ADMIN را برای جلوگیری از شروع activity توسط برنامه‌های دلخواه اضافه کنید. برای مثال:

<activity
    android:name=".PolicyComplianceActivity"
    android:label="@string/app_name"
    android:permission="android.permission.BIND_DEVICE_ADMIN">
    <intent-filter>
        <action android:name="android.app.action.ADMIN_POLICY_COMPLIANCE" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

DPC شما باید به جای گوش دادن به پخش ACTION_PROFILE_PROVISIONING_COMPLETE ، از این Intent جدید استفاده کند.

اکتیویتی مرتبط با فیلتر intent می‌تواند تابع getIntent() را برای بازیابی EXTRA_PROVISIONING_ADMIN_EXTRAS_BUNDLE فراخوانی کند. پس از انجام انطباق با سیاست‌ها، ADMIN_POLICY_COMPLIANCE باید setResult(RESULT_OK, Intent) برگرداند و تمام صفحات فعال را با finish() ببندد.

دستگاه‌های کاملاً مدیریت‌شده، کاربران را به صفحه اصلی بازمی‌گردانند. دستگاه‌های نمایه کاری، کاربران را وادار می‌کنند تا قبل از بازگشت به صفحه اصلی، حساب شخصی خود را اضافه کنند.

گواهی شناسه دستگاه پروفایل کاری

DPCهایی که به عنوان ادمین یک پروفایل کاریِ ارائه شده با استفاده از ثبت بدون تماس تنظیم می‌شوند، می‌توانند شناسه‌های دستگاهِ دارای گواهی سخت‌افزاریِ ایمن، مانند IMEI یا شماره سریال سازنده، را دریافت کنند. دستگاه باید شامل سخت‌افزار ایمن (مانند یک محیط اجرای قابل اعتماد (TEE) یا عنصر امن (SE)) باشد و از گواهی شناسه دستگاه و ثبت بدون تماس پشتیبانی کند.

کامپوننت ادمین یک پروفایل کاری می‌تواند DevicePolicyManager.generateKeyPair() را فراخوانی کند و یک یا چند مورد از ID_TYPE_SERIAL ، ID_TYPE_IMEI یا ID_TYPE_MEID برای آرگومان idAttestationFlags ارسال کند.

برای کسب اطلاعات بیشتر در مورد استخراج و اعتبارسنجی شناسه‌های دستگاه، به بخش «تأیید جفت کلیدهای پشتیبانی‌شده توسط سخت‌افزار با گواهی کلید» مراجعه کنید.

بهبودهای نمایه کاری

رابط‌های برنامه‌نویسی کاربردی (API) جدیدی برای پشتیبانی از قابلیت مشاهده تقویم بین پروفایل‌ها و مسدود کردن نصب برنامه‌ها از منابع ناشناخته در سراسر دستگاه در دسترس هستند.

نمایه کاری، منابع ناشناخته در سطح دستگاه

برنامه‌هایی که از منابعی غیر از گوگل پلی (یا سایر فروشگاه‌های برنامه معتبر) دانلود می‌شوند، برنامه‌هایی از منابع ناشناخته نامیده می‌شوند. در اندروید ۱۰، مدیران پروفایل‌های کاری می‌توانند با اضافه کردن محدودیت کاربری جدید DISALLOW_INSTALL_UNKNOWN_SOURCES_GLOBALLY ، از نصب برنامه‌ها از منابع ناشناخته توسط هر کاربر یا پروفایلی در هر کجای دستگاه جلوگیری کنند. با این حال، پس از اضافه کردن این محدودیت، شخصی که از دستگاه استفاده می‌کند، همچنان می‌تواند با استفاده از adb برنامه‌ها را نصب کند.

برای جلوگیری از نصب اشتباه برنامه‌ها از منابع ناشناخته توسط کاربران، توصیه می‌کنیم این محدودیت کاربری را اضافه کنید زیرا نیازی به نصب سرویس‌های Google Play ندارد. اگر می‌خواهید از نسخه‌های قدیمی‌تر اندروید پشتیبانی کنید، می‌توانید یک مقدار پیکربندی مدیریت‌شده برای Google Play تنظیم کنید.

محدود کردن دستگاه‌های ورودی مجاز به پروفایل‌های کاری

وقتی مدیران پروفایل‌های کاری، DevicePolicyManager.setPermittedInputMethods() را فراخوانی می‌کنند، کاربران فقط به متدهای ورودی مجاز درون پروفایل کاری خود محدود می‌شوند و نه کل دستگاه، که به کاربران کنترل کامل بر متدهای ورودی در سمت شخصی دستگاهشان را می‌دهد.

پاک کردن بی‌صدای پروفایل‌های کاری

پرچم WIPE_SILENTLY به DevicePolicyManager.wipeData() اضافه شد. اگر این پرچم تنظیم شود، کاربران پس از پاک شدن پروفایل کاری‌شان با استفاده از wipeData() مطلع نخواهند شد.

ویژگی‌های جدید برای دستگاه‌های کاملاً مدیریت‌شده

اندروید ۱۰ ویژگی‌ها و APIهای جدیدی را برای دستگاه‌های کاملاً مدیریت‌شده معرفی می‌کند، از جمله به‌روزرسانی‌های دستی سیستم، گسترش پشتیبانی از کد QR و NFC برای گنجاندن اعتبارنامه‌های یک شبکه وای‌فای EAP و پشتیبانی از DNS روی TLS.

نصب دستی به‌روزرسانی سیستم

در اندروید ۱۰، مدیران دستگاه‌های کاملاً مدیریت‌شده می‌توانند به‌روزرسانی‌های سیستم را از طریق یک فایل به‌روزرسانی سیستم نصب کنند. به‌روزرسانی‌های دستی سیستم به مدیران فناوری اطلاعات اجازه می‌دهد موارد زیر را انجام دهند:

  • قبل از نصب گسترده، به‌روزرسانی را روی تعداد کمی از دستگاه‌ها آزمایش کنید.
  • از دانلودهای تکراری در شبکه‌های با پهنای باند محدود خودداری کنید.
  • نصب‌ها را به صورت متناوب انجام دهید، یا دستگاه‌ها را فقط زمانی که استفاده نمی‌شوند، به‌روزرسانی کنید.

ابتدا، یک مدیر فناوری اطلاعات، یک سیاست به‌روزرسانی سیستم را به تعویق می‌اندازد تا نصب خودکار (در صورت لزوم) را به تعویق بیندازد. در مرحله بعد، DPC دستگاه، تابع installSystemUpdate() را به همراه مسیر فایل به‌روزرسانی سیستم سازنده دستگاه فراخوانی می‌کند. یک شیء InstallSystemUpdateCallback را ارسال کنید که سیستم می‌تواند از آن برای گزارش خطاهایی که قبل از راه‌اندازی مجدد دستگاه رخ می‌دهند، استفاده کند. اگر مشکلی پیش بیاید، سیستم تابع onInstallUpdateError() را به همراه کد خطا فراخوانی می‌کند.

پس از راه‌اندازی مجدد دستگاه، DPC شما باید با استفاده از یک API نسخه، مانند Build.FINGERPRINT ، نصب موفقیت‌آمیز را تأیید کند. اگر به‌روزرسانی با شکست مواجه شد، این شکست را به مدیر فناوری اطلاعات گزارش دهید.

تأمین وای‌فای EAP

در اندروید ۱۰، کدهای QR و داده‌های NFC که برای تأمین دستگاه استفاده می‌شوند، می‌توانند حاوی پیکربندی و اعتبارنامه‌های EAP - از جمله گواهی‌ها - باشند. وقتی شخصی یک کد QR را اسکن می‌کند یا روی یک برچسب NFC ضربه می‌زند، دستگاه به طور خودکار با استفاده از EAP به یک شبکه Wi-Fi محلی احراز هویت می‌شود و فرآیند تأمین را بدون هیچ گونه ورودی دستی اضافی آغاز می‌کند.

برای احراز هویت Wi-Fi با استفاده از EAP، یک EXTRA_PROVISIONING_WIFI_SECURITY_TYPE اضافی با مقدار "EAP" اضافه کنید. برای مشخص کردن احراز هویت EAP، می‌توانید موارد اضافی تأمین‌کننده زیر را به intent خود اضافه کنید:

پشتیبانی از DNS خصوصی

سازمان‌ها می‌توانند از DNS over TLS (که در دستگاه‌های اندروید به آن DNS خصوصی می‌گویند) برای جلوگیری از نشت کوئری‌های DNS، از جمله کوئری‌های مربوط به نام‌های میزبان داخلی، استفاده کنند. اجزای مدیریتی دستگاه‌های کاملاً مدیریت‌شده می‌توانند تنظیمات DNS خصوصی دستگاه را کنترل کنند. برای تنظیم حالت DNS خصوصی، با این شماره تماس بگیرید:

  • setGlobalPrivateDnsModeOpportunistic() ‎ برای استفاده دستگاه از DNS خصوصی در زمانی که سیستم می‌تواند یک سرور نام پشتیبانی‌کننده را کشف کند، یا
  • تابع setGlobalPrivateDnsModeSpecifiedHost() نام میزبان یک سرور نام که از RFC7858 پشتیبانی می‌کند را در آرگومان privateDnsHost مشخص می‌کند.

وقتی DPC شما هر یک از این متدها را فراخوانی می‌کند، اگر فراخوانی موفقیت‌آمیز باشد، سیستم PRIVATE_DNS_SET_NO_ERROR را برمی‌گرداند. در غیر این صورت خطا برمی‌گرداند.

برای بازیابی حالت DNS خصوصی و میزبان تنظیم‌شده روی یک دستگاه، توابع getGlobalPrivateDnsMode() و getGlobalPrivateDnsHost() را فراخوانی کنید. می‌توانید با اضافه کردن محدودیت کاربر DISALLOW_CONFIG_PRIVATE_DNS از تغییر تنظیمات DNS خصوصی توسط کاربران جلوگیری کنید.

معافیت حالت قفل VPN

حالت قفل VPN به DPC اجازه می‌دهد تا هرگونه ترافیک شبکه‌ای را که از VPN استفاده نمی‌کند، مسدود کند . مدیران دستگاه‌های کاملاً مدیریت‌شده و پروفایل‌های کاری می‌توانند برنامه‌ها را از حالت قفل مستثنی کنند. برنامه‌های مستثنی‌شده به‌طور پیش‌فرض از VPN استفاده می‌کنند، اما اگر VPN در دسترس نباشد، به‌طور خودکار به شبکه‌های دیگر متصل می‌شوند. برنامه‌های مستثنی‌شده که به‌طور صریح دسترسی به VPN آنها نیز رد شده است، فقط از شبکه‌های دیگر استفاده می‌کنند.

برای معاف کردن یک برنامه از حالت قفل، متد جدید DevicePolicyManager به نام setAlwaysOnVpnPackage() را فراخوانی کنید که لیستی از بسته‌های برنامه‌ی معاف شده را می‌پذیرد. هر بسته‌ی برنامه‌ای که DPC اضافه می‌کند باید هنگام فراخوانی متد روی دستگاه نصب شود. اگر یک برنامه حذف و دوباره نصب شود، برنامه باید دوباره معاف شود. برای معاف کردن برنامه‌هایی که قبلاً از حالت قفل معاف شده‌اند، متد getAlwaysOnVpnLockdownWhitelist() را فراخوانی کنید.

برای کمک به مدیران دستگاه‌های کاملاً مدیریت‌شده و پروفایل‌های کاری برای دریافت وضعیت حالت قفل، اندروید ۱۰ متد isAlwaysOnVpnLockdownEnabled() را اضافه می‌کند.

حوزه‌های جدید نمایندگی

اندروید ۱۰ فهرست توابعی را که یک DPC می‌تواند به برنامه‌های تخصصی‌تر دیگر واگذار کند، گسترش می‌دهد. اندروید متدهای API مورد نیاز برای یک کار را در حوزه‌ها (scope) گروه‌بندی می‌کند. برای واگذاری یک حوزه، تابع setDelegatedScopes() را فراخوانی کنید و یک یا چند مورد از حوزه‌های زیر را به آن ارسال کنید:

اندروید ۱۰ کلاس جدید DelegatedAdminReceiver برای برنامه‌های نماینده معرفی می‌کند. سیستم از این گیرنده پخش برای ارسال فراخوانی‌های شبیه DPC به برنامه‌های نماینده استفاده می‌کند. برنامه‌هایی که ثبت فعالیت شبکه و انتخاب گواهی به آنها واگذار شده است، باید این کلاس را پیاده‌سازی کنند. برای افزودن این مؤلفه به یک برنامه نماینده، این مراحل را دنبال کنید:

  1. یک زیرکلاس از DelegatedAdminReceiver به برنامه delegate اضافه کنید.
  2. <receiver> را در مانیفست برنامه تعریف کنید و برای هر فراخوانی برگشتی، یک اکشن intent-filter اضافه کنید. برای مثال، ACTION_NETWORK_LOGS_AVAILABLE یا ACTION_CHOOSE_PRIVATE_KEY_ALIAS .
  3. با مجوز BIND_DEVICE_ADMIN از گیرنده پخش محافظت کنید.

قطعه کد زیر، مانیفست برنامه‌ی یک برنامه‌ی نماینده‌ی واحد را نشان می‌دهد که هم ثبت وقایع شبکه و هم انتخاب گواهی را مدیریت می‌کند:

<receiver android:name=".app.DelegatedAdminReceiver"
        android:permission="android.permission.BIND_DELEGATED_ADMIN">
    <intent-filter>
        <action android:name="android.app.admin.action.NETWORK_LOGS_AVAILABLE">
        <action android:name="android.app.action.CHOOSE_PRIVATE_KEY_ALIAS">
    </intent-filter>
    </receiver>

ثبت فعالیت‌های شبکه

برای کمک به سازمان‌ها در شناسایی و ردیابی بدافزار، DPCها می‌توانند اتصالات TCP و جستجوهای DNS را توسط سیستم ثبت کنند . در اندروید ۱۰، مدیران دستگاه‌های کاملاً مدیریت‌شده می‌توانند ثبت گزارش شبکه را به یک برنامه تخصصی واگذار کنند.

برای بازیابی گزارش‌های شبکه پس از اینکه سیستم یک دسته را در دسترس قرار می‌دهد، برنامه‌های نماینده ابتدا باید زیرکلاس DelegatedAdminReceiver (که قبلاً توضیح داده شد) را ایجاد کنند. در زیرکلاس خود، با دنبال کردن راهنمایی‌های موجود در Retrieve logs ، تابع فراخوانی onNetworkLogsAvailable() را پیاده‌سازی کنید.

برنامه‌های Delegate می‌توانند متدهای DevicePolicyManager زیر را فراخوانی کنند (برای آرگومان admin null ارسال می‌شود):

برای جلوگیری از از دست دادن گزارش‌ها، DPCها در صورت برنامه‌ریزی برای واگذاری به برنامه دیگری، نباید گزارش‌گیری شبکه را فعال کنند . برنامه نماینده باید گزارش‌های شبکه را فعال و جمع‌آوری کند. پس از اینکه DPC گزارش‌گیری شبکه را واگذار کرد، دیگر هیچ فراخوانی onNetworkLogsAvailable() دریافت نخواهد کرد.

برای یادگیری نحوه گزارش ثبت فعالیت شبکه از یک برنامه نماینده، راهنمای توسعه‌دهنده «ثبت فعالیت شبکه» را مطالعه کنید.

انتخاب گواهینامه

در اندروید ۱۰، مدیران دستگاه‌های کاملاً مدیریت‌شده، پروفایل‌های کاری و کاربران ثانویه می‌توانند انتخاب گواهی را به یک برنامه تخصصی واگذار کنند.

برای انتخاب نام مستعار گواهی، برنامه‌های نماینده ابتدا باید از DelegatedAdminReceiver (که قبلاً توضیح داده شد) یک زیرکلاس بسازند. در زیرکلاس خود، تابع onChoosePrivateKeyAlias() را پیاده‌سازی کنید و یک نام مستعار برای گواهی ترجیحی برگردانید یا برای اینکه کاربر را به انتخاب یک گواهی ترغیب کنید، null را برگردانید.

منسوخ شدن سیاست‌های مدیریت دستگاه

اندروید ۱۰ مانع از اعمال سیاست‌های مدیریتی دستگاه قدیمی توسط برنامه‌ها و DPCها می‌شود. ما به مشتریان و شرکا توصیه می‌کنیم که به دستگاه‌های کاملاً مدیریت‌شده یا پروفایل‌های کاری روی بیاورند. سیاست‌های زیر هنگام فراخوانی توسط مدیر دستگاهی که اندروید ۱۰ را هدف قرار می‌دهد، یک SecurityException ایجاد می‌کنند:

برخی از برنامه‌ها از مدیر دستگاه برای مدیریت دستگاه مصرف‌کننده استفاده می‌کنند. به عنوان مثال، قفل کردن و پاک کردن اطلاعات یک دستگاه گم شده. برای فعال کردن این، سیاست‌های زیر همچنان در دسترس هستند:

برای اطلاعات بیشتر در مورد این تغییرات، بخش منسوخ شدن مدیریت دستگاه را مطالعه کنید.

ویژگی‌های جدید برای اپلیکیشن‌ها

برنامه‌هایی که اندروید ۱۰ را هدف قرار می‌دهند، می‌توانند قبل از نمایش داده‌های محرمانه یا راه‌اندازی ویژگی‌های حیاتی، پیچیدگی قفل صفحه تنظیم‌شده روی دستگاه را بررسی کنند. برنامه‌هایی که API KeyChain را فراخوانی می‌کنند، از بهبود رفتار بهره‌مند می‌شوند، در حالی که ویژگی‌های جدیدی نیز برای برنامه‌های VPN در دسترس است.

بررسی کیفیت قفل صفحه

از اندروید ۱۰ به بعد، برنامه‌هایی که دارای ویژگی‌های حیاتی هستند و نیاز به قفل صفحه دارند، می‌توانند پیچیدگی قفل صفحه دستگاه یا پروفایل کاری را بررسی کنند. برنامه‌هایی که به قفل صفحه قوی‌تری نیاز دارند، می‌توانند کاربر را به تنظیمات قفل صفحه سیستم هدایت کنند و به آنها امکان به‌روزرسانی تنظیمات امنیتی خود را بدهند.

برای بررسی کیفیت قفل صفحه:

برای اجرای تنظیمات قفل صفحه سیستم، از ACTION_SET_NEW_PASSWORD به همراه EXTRA_PASSWORD_COMPLEXITY اضافی استفاده کنید — گزینه‌هایی که پیچیدگی مشخص شده در intent extra را برآورده نمی‌کنند، خاکستری می‌شوند. کاربران می‌توانند از گزینه‌های قفل صفحه موجود انتخاب کنند یا از صفحه خارج شوند.

بهترین روش: قبل از اجرای صفحه قفل صفحه سیستم، پیامی را در برنامه خود نمایش دهید. وقتی برنامه شما دوباره اجرا می‌شود، دوباره DevicePolicyManager.getPasswordComplexity() را فراخوانی کنید. اگر هنوز به قفل صفحه قوی‌تری نیاز دارید، به جای اینکه مرتباً از کاربران بخواهید تنظیمات امنیتی خود را به‌روزرسانی کنند، دسترسی را محدود کنید.

پشتیبانی از پروکسی HTTP در برنامه‌های VPN

در اندروید ۱۰، برنامه‌های VPN می‌توانند برای اتصال VPN خود یک پروکسی HTTP تنظیم کنند. برای افزودن یک پروکسی HTTP، یک برنامه VPN باید قبل از فراخوانی VpnService.Builder.setHttpProxy() یک نمونه ProxyInfo را با یک میزبان و پورت پیکربندی کند. سیستم و بسیاری از کتابخانه‌های شبکه از این تنظیم پروکسی استفاده می‌کنند، اما سیستم برنامه‌ها را مجبور به پروکسی کردن درخواست‌های HTTP نمی‌کند.

برای نمونه کدی که نحوه تنظیم پروکسی HTTP را نشان می‌دهد، به برنامه نمونه ToyVPN مراجعه کنید.

حالت‌های سرویس VPN

برنامه‌های VPN می‌توانند تشخیص دهند که آیا سرویس به دلیل VPN همیشه روشن و حالت قفل فعال است یا خیر. روش‌های جدید اضافه شده در اندروید ۱۰ می‌توانند به شما در تنظیم رابط کاربری کمک کنند. به عنوان مثال، ممکن است دکمه قطع اتصال خود را غیرفعال کنید، زمانی که VPN همیشه روشن چرخه عمر سرویس شما را کنترل می‌کند.

برنامه‌های VPN می‌توانند پس از اتصال به سرویس و ایجاد رابط محلی، متدهای VpnService زیر را فراخوانی کنند:

  • isAlwaysOn() بررسی می‌کند که آیا سیستم به دلیل VPN همیشه روشن، سرویس را آغاز کرده است یا خیر.
  • isLockdownEnabled() برای فهمیدن اینکه آیا سیستم اتصالاتی را که از VPN استفاده نمی‌کنند مسدود می‌کند یا خیر.

وضعیت همیشه روشن در حین اجرای سرویس شما ثابت می‌ماند، اما وضعیت حالت قفل ممکن است تغییر کند.

بهبودهای جاکلیدی

اندروید ۱۰ چندین بهبود مرتبط با API KeyChain را معرفی می‌کند.

وقتی یک برنامه، KeyChain.choosePrivateKeyAlias() را فراخوانی می‌کند، دستگاه‌های اندروید ۱۰ و نسخه‌های بعدی، فهرست گواهی‌هایی را که کاربر می‌تواند از بین آنها انتخاب کند، بر اساس صادرکننده‌ها و الگوریتم‌های کلید مشخص‌شده در فراخوانی، فیلتر می‌کنند.

برای مثال، وقتی یک سرور TLS یک پیام درخواست گواهی (Certificate Request) را به عنوان بخشی از یک handshake TLS ارسال می‌کند و مرورگر KeyChain.choosePrivateKeyAlias() را فراخوانی می‌کند، اعلان انتخاب گواهی فقط شامل گزینه‌هایی است که با پارامتر issueds مطابقت دارند. اگر هیچ گزینه‌ی مطابقی در دسترس نباشد یا هیچ گواهی‌نامه‌ای روی دستگاه نصب نشده باشد، اعلان انتخاب برای کاربر نمایش داده نمی‌شود.

علاوه بر این، KeyChain دیگر نیازی ندارد که دستگاه قبل از وارد کردن کلیدها یا گواهی‌های CA، قفل صفحه داشته باشد.