تتوافق Google Play EMM API مع طرق التوزيع التالية للتطبيقات العامة والخاصة:
- يمكن للمستخدمين تثبيت التطبيقات يدويًا من متجر Google Play للأعمال.
- يمكن لمشرفي تكنولوجيا المعلومات تثبيت التطبيقات عن بُعد على أجهزة المستخدمين.
تثبيت التطبيقات يدويًا من "متجر Google Play للأعمال"
يمكنك تحديد التطبيقات المتاحة للمستخدم لتثبيتها في policy
Device
وضبطها من خلال الاتصال بـ Devices.update
. عند
إعداد جهاز جديد، يجب ضبط السياسة قبل إضافة حساب Google Play
المُدار إلى الجهاز، وإلا لن يتم تطبيق السياسة لعدة
أيام قصيرة بعد إضافة الحساب إلى الجهاز.
يتم تحديد سلوك "متجر Play للأعمال" حسب قيمة
policy.productAvailabilityPolicy
:
all
: تتوفّر جميع التطبيقات المتاحة للجميع من "متجر Play".whitelist
: تتوفّر فقط التطبيقات المدرَجة فيpolicy.productPolicy
.
وفي كلتا الحالتَين، تتم إضافة جميع التطبيقات في policy.productPolicy
تلقائيًا إلى
تنسيق المتجر الخاص بالمؤسسة. تنسيق متجر المؤسسة هو الصفحة الرئيسية
لـ "متجر Play للأعمال" عند اختيار whitelist
، ويمكن الوصول إليه
في علامة التبويب "تطبيقات العمل" عند اختيار all
. يمكنك السماح لعميلك بتعديل تنسيق متجر المؤسسة من خلال تضمين ملف iframe في "Google Play للأعمال" (راجِع تنظيم التطبيقات باستخدام ملف iframe في "Google Play للأعمال").
تثبيت التطبيقات عن بُعد على أجهزة المستخدمين
لتثبيت تطبيق عن بُعد (يُعرف ذلك أيضًا باسم التثبيت الفوري) على جهاز أحد المستخدمين، اضبط
policy.productPolicy.autoInstallPolicy
في policy
في Device
. عند
إعداد جهاز جديد، يجب ضبط السياسة قبل إضافة حساب Google Play
المُدار إلى الجهاز، وإلا لن يتم تطبيق السياسة لعدة
أيام قصيرة بعد إضافة الحساب إلى الجهاز.
يمكن ضبط autoInstallMode
على:
doNotAutoInstall
: لا يتم تثبيت التطبيق تلقائيًا.autoInstallOnce
: يتم تثبيت التطبيق تلقائيًا مرة واحدة، وإذا ألغى المستخدم تثبيته، لن يتم تثبيته مرة أخرى.forceAutoInstall
: يتم تثبيت التطبيق تلقائيًا، وإذا ألغى المستخدم تثبيته، سيتم تثبيته مرة أخرى. على الأجهزة المُدارة، يجب أن يحظر "مدير خدمات النقل"DevicePolicyManager.setUninstallBlocked
عملية إلغاء التثبيت باستخدام
في حال تعذّر التثبيت (انقطاع الاتصال بالإنترنت أو عدم توفّر مساحة تخزين كافية أو غير ذلك)، تتم محاولة التثبيت مجددًا تلقائيًا إلى أن تنجح. يتم تطبيق استراتيجية إعادة المحاولة باستخدام مهلة متصاعدة لتجنُّب إهدار البطارية والبيانات في حال حدوث أخطاء يتعذّر إصلاحها.
الأولوية في التثبيت
يمكنك اختيار ترتيب عمليات التثبيت من خلال ضبط autoInstallPriority
. يجب أن تكون
priority عددًا صحيحًا غير موقَّت والقيمة التلقائية هي 0. سيتم تثبيت التطبيقات
بترتيب أو أولوية متزايدة، ما يعني أنّ التطبيقات التي تملك قيمة أولى
أقل سيتم تثبيتها أولاً.
فرض قيود
يمكنك ضبط قيود التثبيت لكل تطبيق من خلال ضبط
autoInstallConstraint
، ما يتيح لك التحكّم في الحالة المطلوبة
للجهاز أثناء التثبيت:
- ما إذا كان يجب أن يكون الجهاز متصلاً بشبكة Wi-Fi
- ما إذا كان الجهاز قيد الشحن
- وما إذا كان يجب أن يكون الجهاز في وضع الخمول (غير مستخدَم بشكل نشِط من قِبل المستخدم).
في حال عدم استيفاء القيود على الفور، سيتم وضع عمليات التثبيت المتأثرة في "قائمة الانتظار" إلى أن يتم استيفاء القيود.
في autoInstallConstraint
، يتم تطبيق قاعدة AND بين الحقول. على سبيل المثال، في ما يلي autoInstallConstraint
، يجب أن يكون الجهاز في وضع
الشحن ومتصلاً بشبكة غير محدودة (مثل شبكة Wi-Fi) لتتم عملية
تثبيت التطبيق:
"autoInstallConstraint": [
"chargingStateConstraint" : "chargingRequired",
"networkTypeConstraint" : "unmeteredNetwork"
]
تثبيت التطبيقات تلقائيًا على الأجهزة التي تم توفيرها حديثًا
تُرسِل Google Play EMM API إشعارًا NewDeviceEvent
عند Provisioning الجهاز
للمرة الأولى. لتثبيت التطبيقات تلقائيًا على
الأجهزة التي تم توفيرها حديثًا، انتظِر إشعارات NewDeviceEvent
. من كل NewDeviceEvent
،
استرجع userId
وdeviceId
، ثم اتصل Devices.update
لضبط
السياسة لهذا الجهاز.
للتعرّف على كيفية الاشتراك في إشعارات إدارة الخدمات الجوّالة للمؤسسات (EMM)، يُرجى الاطّلاع على مقالة إعداد إشعارات إدارة الخدمات الجوّالة للمؤسسات (EMM).
ملاحظات حول أخطاء التثبيت التلقائي للتطبيقات
يتم الإبلاغ عن الأخطاء المتعلّقة بتثبيت التطبيق من خلال ملاحظات حول التطبيق، ويمكن لمسؤول إدارة البيانات الشخصية مراقبة رسالة EnterprisePolicyStatus
المُرسَلة من خلال
KeyedAppStatesService
.
لفك ترميز البيانات المشفّرة باستخدام Base64، يجب أن تنشئ وحدة التحكّم في البيانات (DPC) فئات استنادًا إلى تعريف proto لـ EnterprisePolicyStatus
. يمكنك الرجوع إلى مستندات Protocol Buffers
للحصول على تعليمات حول إنشاء فئات proto.
باستخدام الفئات التي تم إنشاؤها، يمكن لوحدة التحكّم في حدود البيانات فك ترميز EnterprisePolicyStatus
الكائن:
EnterprisePolicyStatus enterprisePolicyStatus = EnterprisePolicyStatus.parseFrom(
BaseEncoding.base64().decode(base64EncodedString)
);
تتضمّن سياسة الجهاز الآن الحقل الاختياري الجديد PolicyId
.
عند إنشاء سياسة أو تعديلها، يمكن لخدمة إدارة الخدمات الجوّالة للمؤسسات (EMM) ضبط PolicyId
على أي قيمة
سلسلة من أجل تحديد إصدار محدد من سياسة الجهاز.
إذا كان متاحًا، ستحدّد ملاحظات تثبيت التطبيق PolicyId
حتى تتمكّن ميزة
DPC من مطابقة الأخطاء التي تم تلقّيها مع سياسات محدّدة.
EnterprisePolicyStatus
message EnterprisePolicyStatus {
// Individual status for an app in the policy
repeated ApplicationStatus app_status = 1;
// Version of the policy for which this status applies.
PolicyVersion version = 2;
}
ApplicationStatus
// Individual status for an app.
message ApplicationStatus {
// The package name for the app.
string package_name = 1;
// The install status for the app. Only includes status for apps scheduled
// to be auto-installed via the policy resource.
AutoInstallStatus install_status = 2;
}
AutoInstallStatus
// Auto-install status for an app.
message AutoInstallStatus {
// The error causing the install to fail if state is INSTALL_ERROR.
EnterpriseAutoInstallError error = 1;
// The current install state of the app.
EnterpriseAutoInstallState state = 2;
}
PolicyVersion
// The version of the policy which these install states apply to.
message PolicyVersion {
// A policy id which may be optionally set by the EMM.
string policy_id = 1;
}
EnterpriseAutoInstallError
// Install errors resulting in failure to install an app.
enum EnterpriseAutoInstallError {
// Catch-all for unrecognized enum values.
ENTERPRISE_AUTO_INSTALL_ERROR_UNKNOWN = 0;
// The app could not be found.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_FOUND = 1;
// The app is not available in the user's country.
ENTERPRISE_AUTO_INSTALL_ERROR_UNAVAILABLE_COUNTRY = 2;
// The app is not compatible with the device hardware.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE = 3;
// No license remained to grant ownership of the app, and the user did not
// already own the app.
ENTERPRISE_AUTO_INSTALL_ERROR_NO_LICENSES_REMAINING = 4;
// Required permissions for the app have not been accepted.
ENTERPRISE_AUTO_INSTALL_ERROR_MISSING_PERMISSION = 5;
// The app is not available based on the enterprise availability policy.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_APPROVED_OR_UNAVAILABLE = 6;
// The app is not available to the user or device.
ENTERPRISE_AUTO_INSTALL_ERROR_APP_UNAVAILABLE = 7;
// Failed to grant license because the user already has ownership.
ENTERPRISE_AUTO_INSTALL_ERROR_INCOMPATIBLE_OWNERSHIP = 8;
// The admin has not accepted the terms of service.
ENTERPRISE_AUTO_INSTALL_ERROR_TOS_NOT_ACCEPTED = 9;
// The device does not have enough RAM.
ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_RAM = 10;
// The app is incompatible with the device carrier.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_CARRIER = 11;
// The app is incompatible with the country or carrier.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_COUNTRY_OR_CARRIER = 12;
// The app is incompatible with the safe search level.
ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_SAFE_SEARCH_LEVEL = 13;
// The app could not be installed due to an installer error.
ENTERPRISE_AUTO_INSTALL_ERROR_INSTALL_FAILED = 14;
// The app could not be installed due to network errors.
ENTERPRISE_AUTO_INSTALL_ERROR_NETWORK_FAILED = 15;
// The device does not have enough storage.
ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_STORAGE = 16;
}
EnterpriseAutoInstallState
// The current install state for an app.
enum EnterpriseAutoInstallState {
// Catch-all for unrecognized enum values.
INSTALL_STATE_UNKNOWN = 0;
// The app has been received by Play but an install attempt has not completed
// yet.
INSTALL_STATE_PENDING = 1;
// The latest install attempt failed and will be retried automatically.
INSTALL_STATE_ERROR = 2;
// The app has been installed.
INSTALL_STATE_INSTALLED = 3;
}
توزيع التطبيقات للاختبار المغلق
يتيح الاختبار المغلق لمطوّري التطبيقات الحصول على ملاحظات من مستخدمين موثوق بهم بشأن الإصدارات الأولى من تطبيقاتهم. يمكن للمطوّرين إعداد اختبارات مغلقة في Google Playconsole. يمكنك استخدام واجهة برمجة التطبيقات Play EMM API لإتاحة إمكانية توزيع المشرفين على تكنولوجيا المعلومات لإصدارات التطبيقات المغلقة (المعروفة أيضًا باسم القنوات) على مستخدمين محدّدين. يمكن لعملاء مؤسستك استخدام هذه الميزة لاختبار التطبيقات التابعة لجهات خارجية، بالإضافة إلى اختبار التطبيقات الخاصة التي تم تطويرها داخل المؤسسة.
التطبيقات المؤهَّلة
قبل أن يضيف المطوّر مؤسسة إلى قائمة المختبِرين المغلقين للتطبيق، يجب أن يستوفي التطبيق المعايير التالية:
- تم نشر إصدار علني من التطبيق على Google Play.
- في Google Play Console، يكون Google Play المُدار مفعَّلاً في صفحة الإعدادات المتقدّمة للتطبيق.
- أن تستوفي أي إصدارات مغلقة من التطبيق متطلبات رمز الإصدار
إضافة مؤسسة إلى الاختبارات المغلقة
يمكن لمطوّري التطبيقات إضافة أنشطة تجارية إلى الاختبارات التي تستخدِم طُرق الاختبار التمهيدي المغلق أو الاختبار التمهيدي باستخدام "مجموعات Google". للحصول على التعليمات، يُرجى الاطّلاع على الدليل الذي يتناول كيفية إعداد اختبار مفتوح أو مغلق أو داخلي. على المطوّر إدخال رقم تعريف المؤسسة (المعروف أيضًا باسم رقم تعريف المؤسسة) لكل مؤسسة مشارِكة. يمكن لمشرفي تكنولوجيا المعلومات منح مطوّري التطبيقات التابعين لجهات خارجية رقم تعريف مؤسستهم باتّباع الخطوات التالية:
- سجِّل الدخول إلى متجر Google Play.
- انقر على إعدادات المشرف.
- انسخ سلسلة معرّف المؤسسة من مربّع معلومات المؤسسة وأرسِلها إلى المطوّر.
متطلبات إضافية للتطبيقات الخاصة
بالنسبة إلى التطبيقات الخاصة، على المطوّر أيضًا إضافة رقم تعريف المؤسسة لكل مؤسسة مشارِكة في علامة التبويب Google Play للأعمال ضمن صفحة "الإعدادات المتقدّمة" للتطبيق. للحصول على التعليمات، يُرجى الاطّلاع على مقالة نشر تطبيق خاص.
توزيع مسارات مغلقة على المستخدمين
لاسترداد قائمة بالقنوات التجريبية المتاحة لمؤسسة معيّنة لتطبيق محدّد،
اتصل على Products.get
. تتضمّن قائمة appTracks[]
الواردة في الاستجابة
قنوات الإصدار المتاحة لكل تطبيق. وappTracks[].trackAlias
هو اسم
يمكن للمستخدم قراءته للقناة، ويمكنك عرضه في وحدة تحكّم إدارة الخدمات الجوّالة للمؤسسات (EMM). وappTracks[].trackId
هو المعرّف القابل للقراءة آليًا للقناة.
لمنح مستخدم إذن الوصول إلى قناة إصدار مغلقة للتطبيق، اضبط القيمة
policy.productPolicy[].trackIds[]
في policy
لملف الإصدار
Device
. إذا كانت هناك مسارات اختبار متعددة متاحة لجهاز معيّن، سيتم تثبيت
الإصدار المتاح الذي يتضمّن رمز الإصدار الأعلى.
ستتم إزالة معرّفات المقاطع الصوتية تلقائيًا من طلب Products.get
في بعض
السيناريوهات، مثل ما يلي:
- تمت ترقية إصدار التطبيق في قناة الإصدار إلى قناة إصدار أخرى أو إلى قناة الإصدار العلني.
- تم تعديل إصدار الإصدار العلني بإصدار أعلى من الإصدار في قناة الإصدار.
- أوقف أحد المطوّرين المسار.
تتبُّع تراخيص التطبيقات المدفوعة
بالنسبة إلى التطبيقات المدفوعة، يتتبّع عنصر Grouplicenses
عدد التراخيص التي يمتلكها
المؤسسة وعدد التراخيص المستخدَمة. يمكنك الاتصال بالرقم
Grouplicenses.get
للحصول على تفاصيل ترخيص تطبيق.
قبل تثبيت تطبيق مدفوع على جهاز، يجب أن تتوفّر لدى المؤسسة
ترخيصًا للتطبيق. وإذا كان الترخيص متوفّرًا، يتم تثبيت التطبيق
على الجهاز ويتم إنشاء عنصر Entitlements
. يربط عنصر Entitlements
ترخيصًا بمستخدم ويقلل عدد التراخيص المتاحة
للتطبيق. وإذا لم تكن هناك تراخيص متاحة، يتعذّر تثبيت التطبيق ولا يتم إنشاء عنصر Entitlements
.
لا تستخدم التطبيقات التي يتم
توزيعها بدون رسوم كائنَي Grouplicenses
وEntitlements
.