EMM entegrasyon kılavuzu

Bu kılavuz, kurumsal mobilite yönetimi (EMM) sağlayıcılarının el değmeden kayıt işlemini gerçekleştirebiliyorlar. Kayıt hakkında daha fazla bilgi edinmek ve DPC'nizin (cihaz politikası denetleyici) cihazların temel hazırlığını yapmasına yardımcı olur. DPC'niz varsa cihazlara temel hazırlığı yaparken en iyi uygulamaları öğrenir ve geliştirme ile test konusunda yardımcı olacak tavsiyeler alırsınız.

BT yöneticileri için özellikler

BT yöneticilerinin doğrudan yapabilirsiniz. Bir BT yöneticisinin konsolunuzda tamamlayabileceği bazı görevler şunlardır:

  • Mobil politikalarınıza göre el değmeden kayıt yapılandırmaları oluşturun, düzenleyin ve silin.
  • BT yöneticinizin, kuruluşun satın alacağı gelecekteki cihazları hazırlayacak şekilde varsayılan bir yapılandırma ayarlayın.
  • Cihazlara tek tek yapılandırmaları uygulayın veya el değmeden kayıttan cihazları kaldırın kayıt.

El değmeden kayıt hakkında daha fazla bilgi için şu sayfayı okuyun: overview (genel bakış) bölümüne bakın.

Ön koşullar

EMM konsolunuza el değmeden kayıt özelliğini eklemeden önce şu çözümü destekler:

  • EMM çözümünüzün, şirkete ait bir Android 8.0 veya sonraki sürüm (Pixel 7.1 veya sonraki sürüm) cihazı için tümüyle yönetilen modda temel hazırlığı yapması gerekir. Şirkete ait Android 10 ve sonraki sürümlerin yüklü olduğu cihazlar tümüyle yönetilen veya bir iş profiliyle sağlanmış olmalıdır.
  • El değmeden kayıt, DPC'yi otomatik olarak indirip yüklediğinden, DPC, Google Play'de mevcut olmalıdır. Uyumlu DPC'lerin listesini tutuyoruz BT yöneticileri tarafından müşteri API'si veya portalı üzerinden yapılandırılabilir. Bir EMM Sağlayıcı topluluğu aracılığıyla ürün değiştirme isteği sonra da DPC'nizi listeye ekleyebilirsiniz.
  • Müşterilerinizin müşteri API'sini çağırabilmesi için el değmeden kayıt hesabı gerekir. Bir iş ortağı bayi, satın aldığını tespit edebilir.
  • Cihaz, Google Mobil Hizmetleri (GMS) ile uyumlu olmalıdır. El değmeden kayıt için Google Play hizmetlerinin her zaman etkinleştirilmesi gerekir. düzgün şekilde çalışmasını sağlamalısınız.

API'yi çağırma

Konsolunuzun kullanıcıları (kendi Google Hesaplarını kullanarak) API isteklerinizi aşağıdaki amaçlarla yetkilendirir: API'yi kullanabilirsiniz. Bu akış, üzerinde gerçekleştirdiğiniz yetkilendirmeden farklıdır. diğer EMM API'lerini kullanın. Bunu uygulamanızda nasıl yapacağınızı öğrenmek için Yetkilendirme bölümünü okuyun.

Hizmet Şartları'nı işleme

Kullanıcılarınızın doğrulama işleminden önce en yeni Hizmet Şartları'nı kabul etmesi gerekir. API'yi çağırmaktır. API çağrısı bir HTTP 403 Forbidden durum kodu döndürüyorsa ve yanıt gövdesi bir TosError içeriyor, kullanıcıdan kabul etmesini iste el değmeden kayıt portalında oturum açarak Hizmet Şartları'nı inceleyin. Aşağıdaki örnek bunu yapmanın yollarından birini gösterir:

Java

// 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;
}

.NET

// 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.
            // ...
        }
    }
}

Python

# 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 istemciniz ayrıntılı hataları (Java, Python veya HTTP) destekliyorsa isteği için aşağıdaki değeri ile birlikte X-GOOG-API-FORMAT-VERSION HTTP üstbilgisini dahil edin: İsteğinizde 2. İstemciniz ayrıntılı hataları desteklemiyorsa (.NET ve diğerleri) hata mesajını eşleştirin.

İleride Hizmet Şartları'nı güncellediğimizde, bu yaklaşımı benimserseniz uygulamanız Kullanıcı yeni Hizmet Şartları'nı tekrar kabul etmeye yönlendirir.

BT yöneticileri, kuruluşlarının kullanıcılarını yönetmek için el değmeden kayıt portalını kullanır. Bu özelliği müşteri API'si üzerinden sunamazsınız. BT yöneticileri ayrıca portalı kullanarak cihazları ve yapılandırmaları yönetmelerine olanak tanır. Konsoluzdan veya dokümanlarınızdan portala bağlantı vermeniz gerekiyorsa şu URL'yi kullanın:

https://partner.android.com/zerotouch

BT yöneticilerine, kendi hesaplarını kullanarak oturum açmaları gerektiğini ve Google Hesabı.

Cihaz kaydı

El değmeden kayıt, cihazları kaydettirmek için kullanılan bir mekanizmadır ve NFC gibidir kayıt veya QR kodu kaydı. Konsolunuzun yönetilen cihazları desteklemesi gerekir DPC'nizin tümüyle yönetilen cihaz modunda çalışabilmesi gerekir.

El değmeden kayıt, Android 8.0 veya sonraki sürümleri çalıştıran desteklenen cihazlarda kullanılabilir. daha sonra. BT yöneticileri, desteklenen cihazları bir iş ortağından satın almalıdır. bayisi. Konsolunuz, BT yöneticisinin cihazlarından hangilerinin el değmeden kayıt için uygun olduğunu customers.devices.list aranıyor.

Aşağıda kayıt sürecinin işleyişi özetlenmiştir:

  1. Bir cihaz ilk başlatma sırasında (veya fabrikadan sonra) bir Google sunucusuyla iletişim kurar sıfırlama).
  2. BT yöneticisi cihaza yapılandırma uyguladıysa el değmeden kayıt özelliğini kullanabilirsiniz. kayıt, tümüyle yönetilen cihaz Android kurulum sihirbazını çalıştırır ve yapılandırma meta verileri içeren ekranlar.
  3. El değmeden kayıt, Google Play'den DPC'nizi indirip yükler.
  4. DPC'niz ACTION_PROVISION_MANAGED_DEVICE intent ve cihazın temel hazırlığını yapar.

İnternet bağlantısı yoksa kontrol, bağlantı kurulduğunda gerçekleşir. kullanılabilir. El değmeden kayıt ile cihaz temel hazırlığı hakkında daha fazla bilgi edinmek için: aşağıdaki Temel hazırlık bölümüne bakın.

Varsayılan yapılandırmalar

El değmeden kayıt, BT yöneticilerine varsayılan yapılandırma ayarladıklarında yardımcı olur kuruluşun satın aldığı tüm yeni cihazlara uygulanır. Tanıtım ayarı ayarlanmamışsa konsolunuzdan varsayılan bir yapılandırma. Web sitemiz g.co/newsinitiative/labs üzerinden customers.configurations.isDefault değerini kuruluşun varsayılan yapılandırma ayarlayıp ayarlamadığını öğrenebilirsiniz.

Aşağıdaki örnekte, mevcut bir yapılandırmayı varsayılan:

Java

// 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();

.NET

// 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();

Python

# 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'nize atıfta bulunma

customers.dpcs.name API kaynağı adını kullanmanızı öneririz tanımlama ve yapılandırmalarda kullanma. Kaynak adı, DPC için benzersiz ve değişmeyen bir tanımlayıcı içerir. Telefonla arama Desteklenen tüm öğelerin listesini almak için customers.dpcs.list DPC'ler. Kaynak adı müşteri kimliğini de içerdiğinden, eşleşen bir Dpc örneği bulmak için son yol bileşenini kullanarak listeyi filtreleyin. Örnek DPC'nizi eşleştirme ve daha sonra bir yapılandırma:

Java

// 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...

.NET

// 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...

Python

# 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...

Konsolunuzun kullanıcı arayüzünde bir DPC'nin adını göstermeniz gerekiyorsa customers.dpcs.dpcName öğesinden döndürülen değer.

Temel hazırlık yapılıyor

Cihaz temel hazırlığı için mükemmel bir kullanıcı deneyimi sunma fırsatını kaçırmayın. Cihazın temel hazırlığı için yalnızca kullanıcı adı ve şifre yeterli olmalıdır. Bayilerin cihazları doğrudan uzaktaki kullanıcılara gönderebileceğini unutmayın. EMM sunucusu veya kuruluş birimi gibi diğer tüm ayarları customers.configuration.dpcExtras içine ekleyin.

Aşağıdaki JSON snippet'i, örnek bir yapılandırmanın bir bölümünü göstermektedir:

{
  "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\"]"
    }
}

El değmeden kayıt, DPC'nizi bir Android Intent'i kullanarak yükler ve başlatır. Sistem, SSCS'nin DPC'nize android.app.extra.PROVISIONING_ADMIN_EXTRAS_BUNDLE JSON mülkü ekstra özellikler olarak kullanabilirsiniz. DPC'niz, temel hazırlık ayarlarını şuradan okuyabilir: Aynı anahtarları kullanarak PersistableBundle.

Önerilen: Aşağıdaki intent ekstralarını kullanın şu adımları izleyin:

Önerilmez - Aşağıdakileri eklemeyin diğer kayıt yöntemlerinde kullanabileceğiniz ekstra özellikler:

Bu ayarları DPC'nizde nasıl ayıklayacağınızı ve kullanacağınızı öğrenmek için Müşteri cihazlarını sağlama başlıklı makaleyi okuyun.

Geliştirme ve test

Konsolunuzun el değmeden kayıt özelliklerini geliştirip test etmek için şunlara ihtiyacınız olacaktır: şu:

  • desteklenen bir cihaz
  • müşteri el değmeden kayıt hesabı

El değmeden kayıt özelliğini destekleyen cihazlarla geliştirme ve test etme kaydı (örneğin, Google Pixel) gerektirir. Şunları yapmanız gerekmez: Geliştirme cihazlarınızı bir bayi iş ortağından satın almanız gerekir.

Bir test müşterisi hesabı almak ve el değmeden kayıt portalına gidin. olan kurumsal e-posta adresinizden bize e-posta gönderin. Bir Google ile ilişkili Hesap'a dokunun. Üreticiyi belirtin ve IMEI numarasını kullanarak, bunları geliştirme işleminize ekleyeceğiz. hesap.

Unutmayın, el değmeden kayıt özelliği, DPC'nizi test edebilmek için önce DPC'nizin Google Play'de mevcut olması gerekir temel hazırlık. PBM'nizin geliştirme sürümüyle test yapamazsınız.

BT yöneticileri için destek

Konsolunuzun arayüzünde veya belgelerinizde BT yöneticilerine yardımcı olmanız gerekiyorsa BT yöneticileri için el değmeden kayıt başlıklı makaleden yardım alabilirsiniz. Siz konsolunuzun kullanıcılarını bu yardım merkezi makalesine de yönlendirebilirsiniz.

Daha fazla bilgi

Hesabınıza el değmeden kayıt özelliğini entegre etmenize yardımcı olması için bu dokümanları okuyun. konsol: