مهام الإدارة المعتادة

يمكن لإدارة الخدمات الجوّالة للمؤسسات (EMM) تنفيذ مجموعة من مهام الإدارة المعتادة في حلول المؤسسات لنظام التشغيل Android، مثل المهام الموضَّحة في هذا الدليل. يستخدم الرمز النموذجي مكتبة برامج واجهة برمجة التطبيقات لإدارة الخدمات الجوّالة للمؤسسات (EMM) في Google Play للغة Java®.

البحث عن المستخدمين والحصول على تفاصيلهم

وتتطلب العديد من واجهات برمجة تطبيقات "إدارة الخدمات الجوّالة للمؤسسات" في Google Play عنصر userId (بالإضافة إلى enterpriseId) لتنفيذ بعض المهام المرتبطة بالمستخدمين، مثل تثبيت تطبيق والحصول على الأذونات والترخيص. تتطلّب بعض المكالمات كائن مستخدم.

إذا كانت إحدى المؤسسات تستخدم "حسابات Google Play للأعمال"، يجب الحفاظ على الربط بين عناوين البريد الإلكتروني للمستخدمين وأرقام تعريف المستخدمين لتلك الحسابات. من خلال حسابات Google، يمكنك استخدام UsersListResponse.

البحث عن المستخدمين

ويحصل نموذج الرموز هذا على أرقام تعريف المستخدمين المرتبطة بحسابات Google. ولا ينطبق على المؤسسات التي تستخدم "حسابات Google Play للأعمال".

يفترض هذا المثال أنّك استوردت النموذجَين User وUsersListResponse إلى رمزك. للحصول على حساب مستخدم محدّد، يمكنك الحصول على userId من خلال تمرير enterpriseId وإرسال رسالة إلكترونية إلى UsersListResponse.

public UsersListResponse list(String enterpriseId, String email) throws
   IOException {
    return androidEnterprise
        .users()
        .list(enterpriseId, email)
        .execute();
}

الحصول على تفاصيل المستخدم

بعد الحصول على userId، يمكنك استرداد التفاصيل الأخرى. يمكنك الاطّلاع على Users.Get.

public User get(String enterpriseId, String userId) throws IOException {
    return androidEnterprise
        .users()
        .get(enterpriseId, userId)
        .execute();
}

منح المستخدم إمكانية الوصول إلى التطبيقات

يمكنك استخدام واجهات برمجة تطبيقات Google Play لإدارة الخدمات الجوّالة للمؤسسات (EMM) للتحكّم في التطبيقات التي يمكن للمستخدم الوصول إليها من متجر "Google Play للأعمال". يتضمن الوصول إلى التطبيق القدرة على البحث عنه وعرضه وتثبيته وتحديثه. تتوفر ثلاثة مستويات وصول مختلفة وهي:

  • التطبيقات المسموح بها فقط: يمكن للمستخدم الوصول إلى تطبيقات معيّنة فقط.
  • جميع التطبيقات التي تمت الموافقة عليها: يمكن للمستخدم الوصول إلى جميع التطبيقات التي تمت الموافقة عليها للمؤسسة.
  • جميع التطبيقات: يمكن للمستخدم الوصول إلى جميع التطبيقات المتاحة للجميع في متجر Google Play.

منح المستخدم إمكانية الوصول إلى تطبيقات محدَّدة فقط

يوضِّح المثال أدناه كيفية منح مستخدم إذن الوصول إلى مجموعة محدّدة من التطبيقات من "متجر Google Play للأعمال". تتضمن العملية الخطوات التالية:

  • اجمع قائمة تتضمّن productIds (التطبيقات) التي تمت الموافقة عليها للمستخدم (productSet).
  • تتيح لك هذه السياسة تحديد أنّه بإمكان المستخدم الوصول إلى التطبيقات المدرَجة في القائمة المحدّدة فقط من خلال ضبط قيمة سلسلة productSetBehavior على "whitelist".
  • يمكنك تطبيق قائمة productIds وإعداد السلوك على مجموعة المنتجات المتاحة للمستخدم باستخدام setAvailableProductSet.
public ProductSet setProductSet(String enterpriseId, String userId,
    List<String> productIds) throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductId(productIds);
  productSet.setProductSetBehavior("whitelist");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

منح المستخدم إذن الوصول إلى جميع التطبيقات التي تمت الموافقة عليها

يوضِّح المثال أدناه كيفية منح مستخدِم إذن الوصول إلى أيّ تطبيق معتمَد للمؤسسة من "متجر Google Play للأعمال". تتضمن العملية الخطوات التالية:

  • يمكنك تحديد أنّه يمكن للمستخدم الوصول إلى جميع التطبيقات التي تمت الموافقة عليها للمؤسسة من خلال ضبط قيمة سلسلة productSetBehavior على "allApproved".
  • يمكنك تطبيق هذا الإعداد على المستخدم الذي يستخدم setAvailableProductSet.
public ProductSet setUserIncludeApprovedApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("allApproved");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

ملاحظة: عند ضبط productSetBehavior على "allApproved"، لن تحتاج إلى تحديد أي productIds لمجموعة المنتجات.

منح المستخدم إمكانية الوصول إلى جميع التطبيقات

يوضّح المثال أدناه كيفية منح مستخدم إمكانية الوصول في "متجر Google Play للأعمال" إلى أي تطبيق متوفّر في "متجر Google Play" العام. سيظل بإمكان المستخدمين الذين يمكنهم الوصول إلى جميع التطبيقات رؤية تنسيق المتجر لمؤسستهم عند فتح "Google Play للأعمال"، ولكن يمكنهم العثور على تطبيقات إضافية من خلال البحث.

وقد يطلب بعض المستخدمين الموثوق بهم، مثل مشرفي تكنولوجيا المعلومات، مستوى الوصول الأعلى هذا لاختبار التطبيقات وتقييمها قبل الموافقة عليها لمؤسستك. تتضمن عملية منح المستخدم إمكانية الوصول إلى جميع التطبيقات الخطوات التالية:

  • يمكنك تحديد أنّه بإمكان المستخدم الوصول إلى جميع التطبيقات في "متجر Google Play" من خلال ضبط قيمة سلسلة productSetBehavior على "includeAll".
  • يمكنك تطبيق هذا الإعداد على المستخدم الذي يستخدم setAvailableProductSet.
public ProductSet setUserIncludeAllApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("includeAll");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

ملاحظة: عند ضبط productSetBehavior على "includeAll"، لن تحتاج إلى تحديد أي productIds لمجموعة المنتجات.

إنشاء تصميم للمتجر

بعد منح المستخدمين إمكانية الوصول إلى التطبيقات، يمكنك تجميع التطبيقات في مجموعات لعرضها في واجهة "متجر Google Play للأعمال".

يمكنك إنشاء تصميم متجر مخصّص فريد لكل عميل من عملائك باستخدام واجهات برمجة التطبيقات Storelayoutpages وStorelayoutclusters. يتألف التنسيق النموذجي من مجموعة من الصفحات، ويمكن أن يحتوي كل منها على مجموعات من التطبيقات. يمكنك وضع التطبيقات ذات الصلة في المجموعة نفسها. راجِع إنشاء تنسيقات متجر مخصَّصة لمعرفة التفاصيل ونموذج الرموز.

الحصول على أذونات التطبيق

لإضافة تطبيق إلى تنسيق متجر مخصص (أو تثبيت تطبيق بشكل غير ملحوظ على جهاز المستخدم) وعرض التطبيق حتى يتمكن المستخدم من تحديده، يجب أن يقبل المشرف الأذونات اللازمة لهذا التطبيق على مستوى المؤسسة بأكملها. يمكن للمشرفين قبول أذونات التطبيقات ووضع علامة على التطبيقات التي تمت الموافقة عليها للتوزيع في وحدة تحكم Google Play للأعمال (راجع نظرة عامة على Google Play للأعمال).

وفقًا لأفضل الممارسات، ننصحك بتضمين إطار iframe للأذونات في وحدة تحكّم "إدارة الخدمات الجوّالة للمؤسسات". وهذا يعني أن المستخدم لن يحتاج إلى الانتقال بشكل منفصل إلى وحدة تحكم "Google Play للأعمال". استخدِم Products.getApprovalUrl للحصول على عنوان URL لإطار iframe.

public String getApprovalUrl(String enterpriseId, String productId)
    throws IOException {
  return androidEnterprise
      .products()
      .generateApprovalUrl(enterpriseId, productId)
      .execute()
      .getUrl();
}

استخدِم Products.approve لقبول هذه الأذونات.

public void approveProduct(String enterpriseId,
    String productId,
    String approvalUrl) throws IOException {
  ProductsApproveRequest productsApproveRequest =
      new ProductsApproveRequest()
          .setApprovalUrlInfo(
              new ApprovalUrlInfo().setApprovalUrl(approvalUrl));
  androidEnterprise
      .products()
      .approve(enterpriseId, productId, productsApproveRequest)
      .execute();
  }

الحصول على أجهزة أحد المستخدمين

لتنفيذ إجراءات على مستوى جهاز معيّن، عليك تحديد الأجهزة المرتبطة بأحد المستخدمين. يعرض هذا المثال قائمة الأجهزة لعنصر userID محدد باستخدام DevicesListResponse.

public DevicesListResponse list(String enterpriseId, String userId) throws
   IOException {

    return androidEnterprise
        .devices()
        .list(enterpriseId, userId)
        .execute();
}

إذا وافق المستخدم على بنود الخدمة المقدَّمة عند محاولته الوصول إلى "Google Play للأعمال" للمرة الأولى، ستتضمّن الاستجابة الأجهزة غير المُدارة (أجهزة من نوع الإدارة unmanagedProfile).

الحصول على حالة الجهاز وضبطها

لا تنطبق مهمة الإدارة هذه إلا على المؤسسات التي تستخدم حسابات Google. ولا ينطبق على المؤسسات التي تستخدم حسابات Google Play للأعمال.

عندما يتم تفعيل حساب Google المُدار للمستخدم على جهاز مُدار، يتم تفعيل (أو إيقاف) الوصول إلى خدمات Google استنادًا إلى ما يلي:

وفي حال إيقاف فرض إدارة الخدمات الجوّالة للمؤسسات (EMM)، يتم تجاهل حالة الجهاز ويتم منح الحساب إمكانية الوصول إلى خدمات Google كلما تم تفعيله على جهاز Android. في حال تفعيل فرض إدارة الخدمات الجوّالة للمؤسسات (EMM) ولكن لم تكن حالة الجهاز كذلك، لن يتمكّن المستخدمون من تثبيت التطبيقات من Google Play، ولا يمكن لواجهات برمجة تطبيقات إدارة الخدمات الجوّالة للمؤسسات في Google Play تثبيت تطبيقات هذا المستخدم تلقائيًا على الجهاز.

يعرض هذا المثال كيفية الحصول على حالة جهاز معيّن (يتم تحديدها من خلال تمرير enterpriseId وuserId وdeviceId).

لا تعمل العمليات getState() وsetState() إلا على الأجهزة التي تتضمّن managementType من managedDevice أو managedProfile (على المورد Devices). ولا يمكن التحكّم في الأجهزة التي تحتوي على managementType من unmanagedProfile باستخدام واجهات برمجة التطبيقات هذه.

public DeviceState getState(String enterpriseId, String userId, String
   deviceId) throws IOException {

    return androidEnterprise
        .devices()
        .getState(enterpriseId, userId, deviceId)
        .execute();
}

يمكنك تفعيل خدمات Google أو إيقافها للحساب على جهاز من خلال ضبط سلسلة AccountState على القيمة الثابتة المناسبة.

public DeviceState setState(String enterpriseId, String userId, String
   deviceId, String accountState) throws IOException {

    DeviceState deviceState = new DeviceState();
    deviceState.setAccountState(accountState);

    return androidEnterprise
        .devices()
        .setState(enterpriseId, userId, deviceId, deviceState)
        .execute();
}

تثبيت تطبيق على جهاز

يمكن للمشرفين تثبيت التطبيقات بدون تنبيه صوتي. تفاعل المستخدم غير مطلوب. يستخدم هذا المثال Installs.Update لتثبيت تطبيق بشكل غير ملحوظ (تم تحديده من خلال productId) على جهاز (تم تحديد هويته من خلال deviceId).

public Install update(String enterpriseId, String userId, String
   deviceId, String productId) throws IOException {

    return androidEnterprise
        .installs()
        .update(enterpriseId, userId, deviceId, productId,
           new Install())
        .execute();
}

إذا كان التطبيق متوفّرًا على الجهاز وتوفُّر إصدار محدَّث، سيتم تحديث التطبيق إلى الإصدار الجديد.

البحث عن التطبيقات والحصول عليها من قائمة التطبيقات التي تمت الموافقة عليها

ينشئ المشرفون قائمة بالتطبيقات التي تمت الموافقة عليها والمتاحة للمستخدمين في "Google Play للأعمال" ويديرونها. إنّ المستخدمين الذين يستخدمون أجهزة "جلب الجهاز الشخصي" (جلب الجهاز الشخصي) التي تتضمن ملفات شخصية للعمل والمستخدمين على الأجهزة الخاضعة لإدارة الشركة حيث تدير المؤسسة الجهاز بالكامل، لا يمكنهم تنزيل التطبيقات إلا من هذه القائمة التي تمت الموافقة عليها.

يمكنك تخصيص وحدة التحكم في إدارة الخدمات الجوّالة للمؤسسات (EMM) لتضمين مربّع بحث بحيث يمكن للمشرفين البحث عن التطبيقات في قائمة التطبيقات التي تمت الموافقة عليها فقط. تقبل وظيفة البحث المَعلمات نفسها كدالة بحث عادية في "Google Play للأعمال"، ولكنها تبحث فقط عن التطبيقات المُدرَجة في قائمة التطبيقات التي تمت الموافقة عليها.

على سبيل المثال، إذا أراد المشرف تثبيت أحد التطبيقات في قائمة التطبيقات التي تمت الموافقة عليها على الأجهزة في مؤسسته، يمكنه استخدام وظيفة البحث هذه في وحدة تحكم إدارة الخدمات الجوّالة للمؤسسات (EMM) للعثور على التطبيق.

في طلب البحث، يمكنك تحديد حدّ أقصى لعدد المنتجات التي يجب أن تتضمّنها نتيجتك، مثل setMaxResults(10L)، وهذا العدد كافٍ لملء الشاشة. القيمة التلقائية هي 100، وهي أيضًا الحد الأقصى الذي يمكن عرضه في الوقت نفسه. عندما تحتوي النتيجة على رمز مميّز للتقسيم على صفحات، هناك المزيد من النتائج التي يمكنك استردادها من خلال تمرير الرمز المميّز لتقسيم النتائج على عدّة صفحات.

يوضّح هذا المثال كيفية الحصول على أول 10 نتائج من البحث عن تطبيقات الإنتاجية. يمكنك الاطّلاع على Products.List.

public List searchProducts(String enterpriseId) throws IOException {
  ProductsListResponse executeResult =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setQuery("productivity")
          .execute();
  return executeResult.getProduct();
}

إذا كانت نتيجة البحث تحتوي على رمز مميّز للتقسيم على صفحات، يعني هذا أنّ عملية البحث قد أنتجت أكثر من setMaxResults نتيجة أو أكثر من 10 نتائج في هذا المثال. لاسترداد المزيد من النتائج، عليك إعادة البحث وتضمين الرمز المميّز للتقسيم على صفحات في الطلب. يحصل هذا المثال على النتائج العشر التالية.

public ProductsListResponse continueSearch(
    String enterpriseId, ProductsListResponse previousResponse) throws IOException {
  ProductsListResponse nextResults =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setToken(previousResponse.getTokenPagination().getNextPageToken())
          .setQuery("productivity")
          .execute();
  return nextResults;
}