Google Play EMM API รองรับวิธีการเผยแพร่ต่อไปนี้สําหรับแอปสาธารณะและแอปส่วนตัว
- ผู้ใช้สามารถติดตั้งด้วยตนเองจาก Managed Google Play Store
- ผู้ดูแลระบบไอทีสามารถติดตั้งแอปจากระยะไกลในอุปกรณ์ของผู้ใช้
ติดตั้งแอปด้วยตนเองจาก Google Play Store ที่มีการจัดการ
คุณสามารถกำหนดแอปที่ผู้ใช้จะติดตั้งได้ใน policy
ของ Device
และตั้งค่าโดยเรียกใช้ Devices.update
เมื่อจัดสรรอุปกรณ์ใหม่ คุณควรตั้งค่านโยบายก่อนเพิ่มบัญชี Google Play ที่มีการจัดการลงในอุปกรณ์ ไม่เช่นนั้นนโยบายจะไม่มีผลบังคับใช้เป็นเวลาสั้นๆ หลังจากเพิ่มบัญชีลงในอุปกรณ์
ลักษณะการทำงานของ Managed Play Store จะกำหนดโดยค่าของ policy.productAvailabilityPolicy
ดังนี้
all
: แอปสาธารณะทั้งหมดจาก Play Store พร้อมให้ใช้งานwhitelist
: มีเฉพาะแอปที่แสดงในpolicy.productPolicy
เท่านั้น
ไม่ว่าในกรณีใด ระบบจะเพิ่มแอปทั้งหมดใน policy.productPolicy
ลงในเลย์เอาต์ Store ขององค์กรโดยค่าเริ่มต้น เลย์เอาต์ Store ขององค์กรคือหน้าแรกของ Managed Play Store เมื่อเลือก whitelist
และเข้าถึงได้ในแท็บ "แอปสำหรับการทำงาน" เมื่อเลือก all
คุณสามารถอนุญาตให้ลูกค้าปรับแต่งเลย์เอาต์ร้านค้าขององค์กรได้โดยฝัง iframe ของ Managed Google Play (ดูจัดระเบียบแอปด้วย iframe ของ Managed Google Play)
ติดตั้งแอปในอุปกรณ์ของผู้ใช้จากระยะไกล
หากต้องการติดตั้งแอปในอุปกรณ์ของผู้ใช้จากระยะไกล (หรือที่เรียกว่าการติดตั้งแบบ Push) ให้ตั้งค่า policy.productPolicy.autoInstallPolicy
ใน policy
ของ Device
เมื่อจัดสรรอุปกรณ์ใหม่ คุณควรตั้งค่านโยบายก่อนเพิ่มบัญชี Google Play ที่มีการจัดการลงในอุปกรณ์ ไม่เช่นนั้นนโยบายจะไม่มีผลบังคับใช้ในช่วงระยะเวลาสั้นๆ หลังจากเพิ่มบัญชีลงในอุปกรณ์
คุณสามารถตั้งค่า autoInstallMode
เป็นค่าต่อไปนี้
doNotAutoInstall
: ระบบจะไม่ติดตั้งแอปโดยอัตโนมัติautoInstallOnce
: ระบบจะติดตั้งแอปโดยอัตโนมัติ 1 ครั้ง หากผู้ใช้ถอนการติดตั้งแอป ระบบจะไม่ติดตั้งแอปนั้นอีกforceAutoInstall
: ระบบจะติดตั้งแอปโดยอัตโนมัติ หากผู้ใช้ถอนการติดตั้งแอป ระบบจะติดตั้งแอปอีกครั้ง ในอุปกรณ์ที่มีการจัดการ DPC ควรบล็อกการถอนการติดตั้งโดยใช้DevicePolicyManager.setUninstallBlocked
ในกรณีที่ติดตั้งไม่สำเร็จ (การเชื่อมต่อขาดหายไป ไม่มีพื้นที่เก็บข้อมูล ฯลฯ) ระบบจะพยายามติดตั้งอีกครั้งโดยอัตโนมัติจนกว่าจะสำเร็จ ระบบจะใช้กลยุทธ์การลองอีกครั้งแบบ Exponential Backoff เพื่อหลีกเลี่ยงการสิ้นเปลืองแบตเตอรี่และข้อมูลในกรณีที่เกิดความล้มเหลวที่กู้คืนไม่ได้
ลำดับความสำคัญของการติดตั้ง
คุณเลือกลําดับการติดตั้งได้โดยการตั้งค่า autoInstallPriority
ลำดับความสำคัญต้องเป็นจำนวนเต็มแบบไม่ลงนามและค่าเริ่มต้นคือ 0 ระบบจะติดตั้งแอปตามลําดับหรือลําดับความสําคัญที่เพิ่มขึ้น ซึ่งหมายความว่าแอปที่มีค่าลําดับความสําคัญต่ำกว่าจะได้รับการติดตั้งก่อน
ติดตั้งข้อจำกัด
คุณตั้งข้อจำกัดการติดตั้งสำหรับแต่ละแอปได้โดยการตั้งค่า autoInstallConstraint
ซึ่งจะช่วยให้คุณควบคุมสถานะที่จำเป็นของอุปกรณ์ในระหว่างการติดตั้งได้
- อุปกรณ์ควรเชื่อมต่อกับเครือข่าย Wi-Fi หรือไม่
- อุปกรณ์ควรชาร์จหรือไม่
- และอุปกรณ์ควรไม่มีการใช้งาน (ผู้ใช้ไม่ได้ใช้งาน) หรือไม่
หากไม่เป็นไปตามข้อจำกัดในทันที ระบบจะจัดคิวการติดตั้งที่ได้รับผลกระทบไว้จนกว่าจะเป็นไปตามข้อจำกัด
ใน autoInstallConstraint
ระบบจะใช้กฎ AND ระหว่างช่อง ตัวอย่างเช่น เมื่อใช้ autoInstallConstraint
ต่อไปนี้ อุปกรณ์จะต้องทั้งชาร์จอยู่และเชื่อมต่อกับเครือข่ายที่ไม่มีบริการวัดปริมาณการใช้งาน (เช่น Wi-Fi) จึงจะติดตั้งแอปได้
"autoInstallConstraint": [
"chargingStateConstraint" : "chargingRequired",
"networkTypeConstraint" : "unmeteredNetwork"
]
ติดตั้งแอปในอุปกรณ์ที่จัดสรรใหม่โดยอัตโนมัติ
Google Play EMM API จะส่งNewDeviceEvent
การแจ้งเตือนเมื่อมีการมอบหมายอุปกรณ์เป็นครั้งแรก หากต้องการพุชติดตั้งแอปลงในอุปกรณ์ที่จัดสรรใหม่โดยอัตโนมัติ ให้รอการแจ้งเตือน NewDeviceEvent
จาก NewDeviceEvent
แต่ละรายการ ให้ดึงข้อมูล userId
และ deviceId
แล้วเรียกใช้ Devices.update
เพื่อกำหนดนโยบายสำหรับอุปกรณ์นั้น
ดูวิธีสมัครรับการแจ้งเตือน EMM ได้ที่หัวข้อตั้งค่าการแจ้งเตือน EMM
ความคิดเห็นเกี่ยวกับข้อผิดพลาดในการติดตั้งแอปโดยอัตโนมัติ
ระบบจะรายงานข้อผิดพลาดที่เกี่ยวข้องกับการติดตั้งแอปผ่านความคิดเห็นเกี่ยวกับแอป และ DPC จะตรวจสอบข้อความ EnterprisePolicyStatus
ที่ส่งผ่าน KeyedAppStatesService
ได้
หากต้องการถอดรหัสข้อมูลที่เข้ารหัส Base64 DPC จะต้องสร้างคลาสตามคำจำกัดความ proto ของ EnterprisePolicyStatus
โปรดดูวิธีการสร้างคลาสโปรโตในเอกสารประกอบของ Protocol Buffers
เมื่อใช้คลาสที่สร้างขึ้น DPC จะถอดรหัส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 Play Console คุณใช้ Play EMM API เพื่อให้ผู้ดูแลระบบไอทีสามารถเผยแพร่แอปเวอร์ชันที่ปิด (หรือที่เรียกว่าแทร็ก) ไปยังผู้ใช้บางราย ลูกค้าองค์กรสามารถใช้ฟีเจอร์นี้ไม่เพียงเพื่อทดสอบแอปของบุคคลที่สามเท่านั้น แต่ยังทดสอบแอปส่วนตัวที่พัฒนาขึ้นภายในองค์กรได้ด้วย
แอปที่มีสิทธิ์
ก่อนที่นักพัฒนาแอปจะเพิ่มองค์กรลงในรายชื่อผู้ทดสอบแบบปิดของแอป แอปควรมีคุณสมบัติตรงตามเกณฑ์ต่อไปนี้
- เผยแพร่แอปเวอร์ชันที่ใช้งานจริงใน Google Play แล้ว
- ใน Google Play Console ให้เปิดใช้ Managed Google Play ในหน้าการตั้งค่าขั้นสูงของแอป
- แอปเวอร์ชันที่ปิดอยู่ต้องเป็นไปตามข้อกำหนดเกี่ยวกับรหัสเวอร์ชัน
เพิ่มองค์กรในการทดสอบแบบปิด
นักพัฒนาแอปสามารถเพิ่มองค์กรในการทดสอบที่ใช้วิธีการการทดสอบอัลฟาแบบปิดหรือการทดสอบอัลฟาโดยใช้ Google Groups ดูวิธีการได้ที่คำแนะนำเกี่ยวกับวิธีตั้งค่าการทดสอบแบบเปิด แบบปิด หรือแบบภายใน นักพัฒนาแอปต้องป้อนรหัสองค์กร (หรือที่เรียกว่ารหัสองค์กร) ขององค์กรที่เข้าร่วมแต่ละแห่ง ผู้ดูแลระบบไอทีสามารถระบุรหัสขององค์กรให้แก่นักพัฒนาแอปบุคคลที่สามได้โดยทำตามขั้นตอนต่อไปนี้
- ลงชื่อเข้าใช้ Managed Google Play Store
- คลิกที่การตั้งค่าสำหรับผู้ดูแลระบบ
- คัดลอกสตริงรหัสองค์กรจากช่องข้อมูลองค์กร แล้วส่งไปให้นักพัฒนาแอป
ข้อกำหนดเพิ่มเติมสำหรับแอปส่วนตัว
สำหรับแอปส่วนตัว นักพัฒนาแอปจะต้องเพิ่มรหัสองค์กรขององค์กรที่เข้าร่วมแต่ละแห่งในแท็บ Managed Google Play ของหน้าการตั้งค่าขั้นสูงของแอปด้วย โปรดดูวิธีการที่หัวข้อเผยแพร่แอปส่วนตัว
เผยแพร่แทร็กแบบปิดให้กับผู้ใช้
หากต้องการเรียกข้อมูลรายการแทร็กที่พร้อมใช้งานสำหรับองค์กรสำหรับแอปที่ระบุ ให้เรียกใช้ Products.get
รายการ appTracks[]
ที่มีในการตอบกลับจะประกอบด้วยแทร็กที่ใช้ได้สำหรับแต่ละแอป โดย appTracks[].trackAlias
คือชื่อที่แทร็กแสดงได้ซึ่งผู้ใช้อ่านได้ และ appTracks[].trackId
คือรหัสที่เครื่องอ่านได้สำหรับแทร็ก
หากต้องการให้ผู้ใช้มองเห็นแทร็กแบบปิดของแอป ให้ตั้งค่า policy.productPolicy[].trackIds[]
ใน policy
ของ Device
หากอุปกรณ์มีแทร็กหลายรายการ ระบบจะติดตั้งเวอร์ชันที่มีรหัสเวอร์ชันสูงสุดที่พร้อมใช้งาน
ระบบจะนำรหัสแทร็กออกจากการเรียก Products.get
โดยอัตโนมัติในบางสถานการณ์ เช่น ต่อไปนี้
- โปรโมตเวอร์ชันแอปของแทร็กไปยังแทร็กอื่นหรือเวอร์ชันที่ใช้งานจริง
- เวอร์ชันที่ใช้งานจริงได้รับการอัปเดตเป็นเวอร์ชันที่สูงกว่าแทร็ก
- นักพัฒนาแอปหยุดแทร็ก
ติดตามใบอนุญาตแอปแบบชำระเงิน
สําหรับแอปที่ต้องซื้อ ออบเจ็กต์ Grouplicenses
จะติดตามจํานวนใบอนุญาตที่องค์กรเป็นเจ้าของและจํานวนใบอนุญาตที่ใช้อยู่ คุณสามารถโทรไปที่ Grouplicenses.get
เพื่อขอรายละเอียดใบอนุญาตสำหรับแอป
ก่อนที่อุปกรณ์จะติดตั้งแอปที่ต้องซื้อได้ องค์กรต้องมีใบอนุญาตสำหรับแอปนั้น หากมีใบอนุญาต ระบบจะติดตั้งแอปในอุปกรณ์และสร้างออบเจ็กต์ Entitlements
ออบเจ็กต์ Entitlements
จะลิงก์ใบอนุญาตกับผู้ใช้และลดจำนวนใบอนุญาตที่ใช้ได้สำหรับแอป หากไม่มีใบอนุญาต การติดตั้งแอปจะล้มเหลวและระบบจะไม่สร้างออบเจ็กต์ Entitlements
แอปพลิเคชันที่เผยแพร่โดยไม่มีค่าใช้จ่ายจะไม่ใช้ออบเจ็กต์ Grouplicenses
และ Entitlements