راهنمای ادغام EMM

این راهنما به ارائه دهندگان مدیریت تحرک سازمانی (EMM) کمک می کند تا ثبت نام بدون لمس را در کنسول خود ادغام کنند. برای کسب اطلاعات بیشتر در مورد ثبت نام و مشاهده بهترین توصیه ها برای کمک به دستگاه های DPC (کنترل کننده خط مشی دستگاه) خود، به خواندن ادامه دهید. اگر DPC دارید، بهترین روش‌ها را هنگام تهیه دستگاه‌ها یاد می‌گیرید و برای کمک به توسعه و آزمایش مشاوره دریافت می‌کنید.

امکانات برای مدیران فناوری اطلاعات

از API مشتری برای کمک به سرپرستان فناوری اطلاعات در تنظیم ثبت نام بدون لمس مستقیم از کنسول خود استفاده کنید. در اینجا چند کار وجود دارد که ممکن است یک سرپرست فناوری اطلاعات در کنسول شما انجام دهد:

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

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

پیش نیازها

قبل از اینکه ثبت نام بدون لمس را به کنسول EMM خود اضافه کنید، تأیید کنید که راه حل شما از موارد زیر پشتیبانی می کند:

  • راه حل EMM شما باید دستگاه Android 8.0 و بالاتر (Pixel 7.1+) متعلق به شرکت را در حالت کاملاً مدیریت شده ارائه کند. دستگاه‌های Android 10+ متعلق به شرکت را می‌توان به‌صورت کاملاً مدیریت‌شده یا با نمایه کاری ارائه کرد.
  • از آنجایی که ثبت نام با لمس صفر به طور خودکار یک DPC را دانلود و نصب می کند، DPC شما باید از Google Play در دسترس باشد. ما فهرستی از DPC های سازگار را که مدیران فناوری اطلاعات می توانند با استفاده از API مشتری یا پورتال پیکربندی کنند، نگهداری می کنیم. درخواست اصلاح محصول را از طریق انجمن EMM Provider ارسال کنید تا DPC خود را به لیست اضافه کنید.
  • مشتریان شما برای تماس با API مشتری به یک حساب ثبت نام بدون لمس نیاز دارند. هنگامی که سازمان دستگاه‌های آن‌ها را خریداری می‌کند، یک فروشنده شریک حسابی را برای سازمان سرپرست فناوری اطلاعات راه‌اندازی می‌کند.
  • دستگاه باید با سرویس‌های تلفن همراه Google (GMS) سازگار باشد و خدمات Google Play باید همیشه فعال باشد تا ثبت‌نام با لمس صفر به درستی کار کند.

با API تماس بگیرید

کاربران کنسول شما (با استفاده از حساب Google خود) درخواست های API شما را به API مشتری مجوز می دهند. این جریان با مجوزی که برای سایر APIهای EMM انجام می دهید متفاوت است. مجوز را بخوانید تا نحوه انجام این کار را در برنامه خود بیاموزید.

رسیدگی به شرایط خدمات

کاربران شما باید قبل از تماس با API ، آخرین شرایط خدمات (ToS) را بپذیرند . اگر تماس API یک کد وضعیت 403 Forbidden را برمی گرداند و بدنه پاسخ حاوی یک TosError است، از کاربر بخواهید با ورود به پورتال ثبت نام بدون لمس، ToS را بپذیرد. مثال زیر یکی از راه‌هایی را نشان می‌دهد که می‌توانید این کار را انجام دهید:

جاوا

// Authorize this method call as a user that hasn't yet accepted the ToS.
final String googleApiFormatHttpHeader = "X-GOOG-API-FORMAT-VERSION";
final String googleApiFormatVersion = "2";
final String tosErrorType =
      "type.googleapis.com/google.android.device.provisioning.v1.TosError";

try {
  // Send an API request to list all the DPCs available including the HTTP header
  // X-GOOG-API-FORMAT-VERSION with the value 2. Import the  exception:
  // from googleapiclient.errors import HttpError
  AndroidProvisioningPartner.Customers.Dpcs.List request =
        service.customers().dpcs().list(customerAccount);
  request.getRequestHeaders().put(googleApiFormatHttpHeader, googleApiFormatVersion);
  CustomerListDpcsResponse response = request.execute();
  return response.getDpcs();

} catch (GoogleJsonResponseException e) {
  // Get the error details. In your app, check details exists first.
  ArrayList<Map> details = (ArrayList<Map>) e.getDetails().get("details");
  for (Map detail : details) {
    if (detail.get("@type").equals(tosErrorType)
          && (boolean) detail.get("latestTosAccepted") != true) {
      // Ask the user to accept the ToS. If they agree, open the portal in a browser.
      // ...
    }
  }
  return null;
}

.خالص

// Authorize this method call as a user that hasn't yet accepted the ToS.
try
{
    var request = service.Customers.Dpcs.List(customerAccount);
    CustomerListDpcsResponse response = request.Execute();
    return response.Dpcs;
}
catch (GoogleApiException e)
{
    foreach (SingleError error in e.Error?.Errors)
    {
        if (error.Message.StartsWith("The user must agree the terms of service"))
        {
            // Ask the user to accept the ToS. If they agree, open the portal in a browser.
            // ...
        }
    }
}

پایتون

# Authorize this method call as a user that hasn't yet accepted the ToS.
tos_error_type = ('type.googleapis.com/'
                  'google.android.device.provisioning.v1.TosError')
portal_url = 'https://partner.android.com/zerotouch'

# Send an API request to list all the DPCs available including the HTTP
# header X-GOOG-API-FORMAT-VERSION with the value 2. Import the exception:
# from googleapiclient.errors import HttpError
try:
  request = service.customers().dpcs().list(parent=customer_account)
  request.headers['X-GOOG-API-FORMAT-VERSION'] = '2'
  response = request.execute()
  return response['dpcs']

except HttpError as err:
  # Parse the JSON content of the error. In your app, check ToS exists first.
  error = json.loads(err.content)
  tos_error = error['error']['details'][0]

  # Ask the user to accept the ToS (not shown here). If they agree, then open
  # the portal in a browser.
  if (tos_error['@type'] == tos_error_type
      and tos_error['latestTosAccepted'] is not True):
    if raw_input('Accept the ToS in the zero-touch portal? y|n ') == 'y':
      webbrowser.open(portal_url)

اگر سرویس گیرنده Google API شما از خطاهای دقیق (درخواست های جاوا، پایتون یا HTTP) پشتیبانی می کند، هدر HTTP X-GOOG-API-FORMAT-VERSION با مقدار 2 در درخواست های خود قرار دهید. اگر مشتری شما از خطاهای دقیق (.NET و موارد دیگر) پشتیبانی نمی کند، پیام خطا را مطابقت دهید.

هنگامی که ما ToS را در آینده به‌روزرسانی می‌کنیم، اگر از این رویکرد پیروی کنید، برنامه شما به کاربر دستور می‌دهد تا ToS جدید را دوباره بپذیرد.

سرپرستان فناوری اطلاعات از پورتال ثبت نام بدون لمس برای مدیریت کاربران برای سازمان خود استفاده می کنند—شما نمی توانید این را از طریق API مشتری ارائه دهید. مدیران فناوری اطلاعات همچنین می توانند دستگاه ها و تنظیمات را با استفاده از پورتال مدیریت کنند. اگر نیاز دارید که از کنسول خود یا در اسناد خود به پورتال پیوند دهید، از این URL استفاده کنید:

https://partner.android.com/zerotouch

ممکن است بخواهید به مدیران فناوری اطلاعات اطلاع دهید که از آنها خواسته می شود با حساب Google خود وارد سیستم شوند.

ثبت نام دستگاه

ثبت نام بدون لمس مکانیسمی برای ثبت نام دستگاه ها است و مانند ثبت نام NFC یا ثبت نام با کد QR است. کنسول شما باید از دستگاه های مدیریت شده پشتیبانی کند و DPC شما باید بتواند در حالت دستگاه کاملاً مدیریت شده اجرا شود.

ثبت‌نام با لمس صفر در دستگاه‌های پشتیبانی‌شده دارای Android نسخه ۸.۰ یا بالاتر در دسترس است. سرپرستان فناوری اطلاعات باید دستگاه های پشتیبانی شده را از یک فروشنده شریک خریداری کنند. کنسول شما می‌تواند با تماس با customers.devices.list دستگاه‌های سرپرست فناوری اطلاعات را برای ثبت‌نام بدون لمس در دسترس ردیابی کند.

در اینجا خلاصه ای از نحوه کار ثبت نام آورده شده است:

  1. یک دستگاه در اولین راه‌اندازی (یا پس از بازنشانی کارخانه‌ای) برای ثبت‌نام بدون لمس با یک سرور Google چک می‌کند.
  2. اگر سرپرست فناوری اطلاعات پیکربندی را روی دستگاه اعمال کرده باشد، ثبت‌نام بدون لمس، جادوگر راه‌اندازی Android دستگاه کاملاً مدیریت‌شده را اجرا می‌کند و صفحه‌ها را با فراداده‌های پیکربندی شخصی‌سازی می‌کند.
  3. ثبت نام بدون لمس DPC شما را از Google Play دانلود و نصب می کند.
  4. DPC شما هدف ACTION_PROVISION_MANAGED_DEVICE را دریافت می کند و دستگاه را تهیه می کند.

اگر اتصال اینترنت وجود نداشته باشد، بررسی زمانی انجام می شود که یکی در دسترس باشد. برای کسب اطلاعات بیشتر در مورد تهیه دستگاه با ثبت نام بدون لمس، به تأمین زیر مراجعه کنید.

تنظیمات پیش فرض

ثبت‌نام با لمس صفر به مدیران فناوری اطلاعات هنگامی که پیکربندی پیش‌فرضی را تنظیم می‌کنند که برای هر دستگاه جدیدی که سازمانشان خریداری می‌کند اعمال می‌شود، بیشتر کمک می‌کند. اگر پیکربندی پیش‌فرض تنظیم نشده است، از کنسول خود تنظیم کنید. می توانید مقدار customers.configurations.isDefault را بررسی کنید تا متوجه شوید که آیا سازمانی پیکربندی پیش فرض را تنظیم کرده است یا خیر.

مثال زیر نشان می دهد که چگونه می توانید یک پیکربندی موجود را به صورت پیش فرض درآورید:

جاوا

// Send minimal data with the request. Just the 2 required fields.
// targetConfiguration is an existing configuration that we want to make the default.
Configuration configuration = new Configuration();
configuration.setIsDefault(true);
configuration.setConfigurationId(targetConfiguration.getConfigurationId());

// Call the API, including the FieldMask to avoid setting other fields to null.
AndroidProvisioningPartner.Customers.Configurations.Patch request = service
      .customers()
      .configurations()
      .patch(targetConfiguration.getName(), configuration);
request.setUpdateMask("isDefault");
Configuration results = request.execute();

.خالص

// Send minimal data with the request. Just the 2 required fields.
// targetConfiguration is an existing configuration that we want to make the default.
Configuration configuration = new Configuration
{
    IsDefault = true,
    ConfigurationId = targetConfiguration.ConfigurationId,
};

// Call the API, including the FieldMask to avoid setting other fields to null.
var request = service.Customers.Configurations.Patch(configuration,
                                                     targetConfiguration.Name);
request.UpdateMask = "IsDefault";
Configuration results = request.Execute();

پایتون

# Send minimal data with the request. Just the 2 required fields.
# target_configuration is an existing configuration we'll make the default.
configuration = {
    'isDefault': True,
    'configurationId': target_configuration['configurationId']}

# Call the API, including the FieldMask to avoid setting other fields to null.
response = service.customers().configurations().patch(
    name=target_configuration['name'],
    body=configuration, updateMask='isDefault').execute()

ارجاع به DPC شما

توصیه می کنیم از نام منبع API customers.dpcs.name برای شناسایی DPC خود و استفاده از آن در تنظیمات استفاده کنید. نام منبع حاوی یک شناسه منحصر به فرد و بدون تغییر برای DPC است. با customers.dpcs.list تماس بگیرید تا لیست همه DPC های پشتیبانی شده را دریافت کنید. از آنجایی که نام منبع شامل شناسه مشتری نیز می شود، لیست را با استفاده از مولفه آخرین مسیر فیلتر کنید تا نمونه Dpc منطبق را پیدا کنید. مثال زیر نشان می دهد که چگونه DPC خود را مطابقت دهید و برای استفاده بعدی در یک پیکربندی ادامه دهید:

جاوا

// Return a customer Dpc instance for the specified DPC ID.
String myDpcIdentifier = "AH6Gbe4aiS459wlz58L30cqbbXbUa_JR9...xMSWCiYiuHRWeBbu86Yjq";
final int dpcIdIndex = 3;
final String dpcComponentSeparator = "/";
// ...
for (Dpc dpcApp : dpcs) {
    // Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID}, check the
    // fourth component matches the DPC ID.
    String dpcId = dpcApp.getName().split(dpcComponentSeparator)[dpcIdIndex];
    if (dpcId.equals(myDpcIdentifier)) {
        System.out.format("My DPC is: %s\n", dpcApp.getDpcName());
        return dpcApp;
    }
}
// Handle the case when the DPC isn't found...

.خالص

// Return a customer Dpc instance for the specified DPC ID.
var myDpcIdentifer = "AH6Gbe4aiS459wlz58L30cqbbXbUa_JR9...fE9WdHcxMSWCiYiuHRWeBbu86Yjq";
const int dpcIdIndex = 3;
const String dpcComponentSeparator = "/";
// ...
foreach (Dpc dpcApp in dpcs)
{
    // Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID}, check the
    // fourth component matches the DPC ID.
    String dpcId = dpcApp.Name.Split(dpcComponentSeparator)[dpcIdIndex];
    if (dpcId.Equals(myDpcIdentifer))
    {
        Console.WriteLine("Matched DPC is: {0}", dpcApp.DpcName);
        return dpcApp;
    }
}
// Handle the case when the DPC isn't found...

پایتون

# Return a customer Dpc instance for the specified DPC ID.
my_dpc_id = 'AH6Gbe4aiS459wlz58L30cqb...fE9WdHcxMSWCiYiuHRWeBbu86Yjq'
# ...
for dpc_app in dpcs:
  # Because the DPC name is in the format customers/{CUST_ID}/dpcs/{DPC_ID},
  # check the fourth component matches the DPC ID.
  dpc_id = dpc_app['name'].split('/')[3]
  if dpc_id == my_dpc_id:
    return dpc_app

# Handle the case when the DPC isn't found...

اگر نیاز دارید که نام یک DPC را در رابط کاربری کنسول خود نشان دهید، مقدار بازگشتی از customers.dpcs.dpcName را نمایش دهید.

تامین

از فرصت استفاده کنید و یک تجربه کاربری عالی برای تهیه دستگاه ارائه دهید. یک نام کاربری و رمز عبور باید تنها چیزی باشد که برای تهیه دستگاه لازم است. به یاد داشته باشید که فروشندگان ممکن است دستگاه ها را مستقیماً به کاربران راه دور ارسال کنند. همه تنظیمات دیگر مانند سرور EMM یا واحد سازمانی را در customers.configuration.dpcExtras قرار دهید.

قطعه JSON زیر بخشی از پیکربندی نمونه را نشان می دهد:

{
  "android.app.extra.PROVISIONING_LOCALE": "en_GB",
  "android.app.extra.PROVISIONING_TIME_ZONE": "Europe/London",
  "android.app.extra.PROVISIONING_LEAVE_ALL_SYSTEM_APPS_ENABLED": true,
  "android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE": {
    "workflow_type": 3,
    "default_password_quality": 327680,
    "default_min_password_length": 6,
    "company_name": "XYZ Corp",
    "organizational_unit": "sales-uk",
    "management_server": "emm.example.com",
    "detail_tos_url": "https://www.example.com/policies/terms/",
    "allowed_user_domains": "[\"example.com\", \"example.org\", \"example.net\"]"
    }
}

ثبت نام بدون لمس DPC شما را با استفاده از Android Intent نصب و راه اندازی می کند. سیستم مقادیر موجود در ویژگی android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE JSON را به عنوان موارد اضافی در intent به DPC شما ارسال می کند. DPC شما می‌تواند با استفاده از کلیدهای مشابه، تنظیمات تأمین را از PersistableBundle بخواند.

توصیه می‌شود — برای راه‌اندازی DPC خود از برنامه‌های اضافی زیر استفاده کنید:

توصیه نمی شود - موارد اضافی زیر را که ممکن است در سایر روش های ثبت نام استفاده کنید، وارد نکنید:

برای یادگیری نحوه استخراج و استفاده از این تنظیمات در DPC، دستگاه های مشتری Provision را بخوانید.

توسعه و آزمایش

برای توسعه و آزمایش ویژگی‌های ثبت نام بدون لمس کنسول خود، به موارد زیر نیاز دارید:

  • یک دستگاه پشتیبانی شده
  • یک حساب ثبت نام بدون لمس مشتری

توسعه و آزمایش با دستگاه‌هایی که از ثبت‌نام بدون لمس پشتیبانی می‌کنند ، مانند Google Pixel. شما مجبور نیستید دستگاه های توسعه خود را از یک شریک فروشنده خریداری کنید.

برای دریافت حساب کاربری آزمایشی مشتری و دسترسی به پورتال ثبت نام بدون لمس با ما تماس بگیرید . از آدرس ایمیل شرکتی که با یک حساب Google مرتبط است به ما ایمیل بزنید. سازنده و شماره IMEI یک یا دو دستگاه را به ما بگویید و ما آنها را به حساب توسعه شما اضافه خواهیم کرد.

به یاد داشته باشید، چون ثبت نام با لمس صفر به طور خودکار یک DPC را دانلود و نصب می کند، قبل از اینکه بتوانید تهیه را آزمایش کنید، DPC شما باید از Google Play در دسترس باشد. شما نمی توانید با نسخه توسعه یافته DPC خود تست کنید.

پشتیبانی از ادمین های فناوری اطلاعات

اگر نیاز به کمک به سرپرستان فناوری اطلاعات در رابط کنسول یا اسناد خود دارید، برای راهنمایی به ثبت نام Zero-touch برای سرپرستان فناوری اطلاعات نگاه کنید. همچنین می توانید کاربران کنسول خود را به آن مقاله مرکز راهنمایی هدایت کنید.

بیشتر خواندن

این اسناد را بخوانید تا به شما کمک کند تا ثبت نام بدون لمس را در کنسول خود ادغام کنید: