Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang
Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Thông tin khái quát
Tài liệu này trình bày cách tích hợp, kiểm thử và xác thực tính năng lưu trữ RCS trong ứng dụng Google Tin nhắn.
Tổng quan về giải pháp
Lưu trữ phía máy khách: Các nhà cung cấp dịch vụ lưu trữ cần phát triển một ứng dụng Android để quản trị viên CNTT triển khai trên các thiết bị được quản lý.
Sử dụng Google Tin nhắn: Tính năng này yêu cầu Google Tin nhắn là ứng dụng nhắn tin mặc định. Quản trị viên CNTT có thể sử dụng các chế độ kiểm soát của Android Enterprise để thực thi chế độ mặc định.
Yêu cầu Android Enterprise: Tính năng này chỉ có trên các thiết bị do công ty quản lý hoàn toàn.
Luồng công việc
Hình 1. Quy trình lưu trữ RCS.
Quản trị viên CNTT triển khai ứng dụng lưu trữ bằng Android Enterprise.
Không bắt buộc: Quản trị viên CNTT định cấu hình ứng dụng lưu trữ theo cách lập trình bằng các chế độ kiểm soát Android Enterprise.
Quản trị viên CNTT áp dụng Google Tin nhắn làm ứng dụng SMS/RCS mặc định
Ngoài ra, quản trị viên CNTT cũng có thể đăng ký trước ứng dụng lưu trữ bằng MCM, nếu giải pháp lưu trữ hỗ trợ MCM
Quản trị viên CNTT bật tính năng lưu trữ trong Google Tin nhắn bằng MCM.
Google Tin nhắn ghi dữ liệu tin nhắn vào Android khi có sự kiện tin nhắn.
Sự kiện tin nhắn là một trong những sự kiện sau: tin nhắn đã gửi, tin nhắn đã nhận, tin nhắn đã chỉnh sửa hoặc tin nhắn đã xoá.
Ứng dụng lưu trữ sẽ đọc dữ liệu tin nhắn từ trình cung cấp Telephony.
Ứng dụng lưu trữ sẽ phân chia các bản cập nhật theo lô và gửi chúng đến máy chủ.
Triển khai
Lược đồ MCM của Google Tin nhắn
Tính năng lưu trữ được định cấu hình trong Google Tin nhắn bằng khoá messages_archival. Khoá này chấp nhận một giá trị chuỗi để quản trị viên chỉ định ứng dụng lưu trữ theo tên gói. Nếu giá trị trống, rỗng hoặc không có khoá, thì tính năng lưu trữ sẽ bị tắt. Nếu bạn chỉ định giá trị, thì tính năng lưu trữ sẽ được bật và Google Tin nhắn sẽ gửi một thông báo truyền tin rõ ràng đến tên gói đã chỉ định trong một sự kiện tin nhắn.
Thông báo đến ứng dụng lưu trữ
Thông báo truyền tin tường minh được gửi đến ứng dụng lưu trữ đã chỉ định, với thao tác: GOOGLE_MESSAGES_ARCHIVAL_UPDATE
Trong một số trường hợp, URI tin nhắn sẽ được đưa vào các phần bổ sung của thông báo truyền tin. Bạn có thể dùng URI này để tìm nạp tin nhắn đã kích hoạt thông báo truyền tin:
com.google.android.apps.messaging.EXTRA_ARCHIVAL_URI
Khai báo một dịch vụ trên nền trước trong tệp kê khai của bạn, bao gồm bộ lọc ý định cho thông báo cập nhật lưu trữ và được cấp quyền để đảm bảo chỉ Google Tin nhắn mới có thể bắt đầu dịch vụ.
Triển khai dịch vụ đó để xử lý ý định, đọc từ dịch vụ điện thoại và xác định loại sự kiện tin nhắn bằng cách so sánh trạng thái trước đó của dịch vụ điện thoại với trạng thái hiện tại, sau đó lưu cả sự kiện tin nhắn vào bộ nhớ đệm để tải lên phần phụ trợ dịch vụ lưu trữ và trạng thái đã cập nhật của dịch vụ điện thoại để so sánh với sự kiện tiếp theo.
Đề xuất:
Cập nhật hàng loạt các sự kiện tin nhắn lên máy chủ bằng JobScheduler.
Quản trị viên CNTT có thể đảm bảo ứng dụng của bạn không bị người dùng tắt hoặc dữ liệu ứng dụng của bạn không bị xoá, nhờ đó đảm bảo các bản cập nhật theo lô có thể diễn ra như mong đợi.
Giảm thiểu thời gian chạy dịch vụ trên nền trước chỉ còn yêu cầu lưu trữ quan trọng sẽ giảm thiểu tác động đến trải nghiệm người dùng và tình trạng hệ thống.
Cho phép định cấu hình ứng dụng của bạn theo cách có lập trình bằng MCM (như đề cập trong sơ đồ MCM của Messages), để người dùng không cần đăng nhập hoặc chỉ định thông tin đăng ký máy chủ theo cách thủ công.
Thử nghiệm
Để kiểm thử việc triển khai, hãy sử dụng TestDPC hoặc ứng dụng EMM mà bạn muốn.
Nội dung và mã mẫu trên trang này phải tuân thủ các giấy phép như mô tả trong phần Giấy phép nội dung. Java và OpenJDK là nhãn hiệu hoặc nhãn hiệu đã đăng ký của Oracle và/hoặc đơn vị liên kết của Oracle.
Cập nhật lần gần đây nhất: 2025-07-27 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 2025-07-27 UTC."],[],[],null,["# RCS Google Messages archival\n\nBackground\n----------\n\nThis document outlines how to integrate with, test, and validate the RCS\narchival feature in Google Messages.\n\n### Solution overview\n\n- **Client-side archival:** Archival vendors need to develop an Android app for IT admins to deploy on their managed devices.\n- **Powered by Google Messages:** This feature requires Google Messages to be the [default messaging app](https://support.google.com/messages/answer/6089066). IT admins can use Android Enterprise controls to enforce the default.\n- **Requires Android Enterprise:** This feature is available only on fully managed devices.\n\n| **Important:** Work profiles (on neither personally-owned nor company-owned devices) are not supported.\n\n### Workflow\n\n**Figure 1.** RCS archival workflow.\n\n1. IT admin deploys archival app using Android Enterprise.\n2. **Optional** : IT admin programmatically configures archival app using Android Enterprise controls.\n - Required:\n - The archival app needs [`READ_SMS`](/reference/android/Manifest.permission#READ_SMS) permission\n - Recommended:\n - [Disallow user control](/reference/android/app/admin/DevicePolicyManager#setUserControlDisabledPackages(android.content.ComponentName,%20java.util.List%3Cjava.lang.String%3E)) over Google Messages and archival app\n - IT admin [enforces](/reference/android/os/UserManager?_gl=1*wrcrs6*_up*MQ..*_ga*MTgxMTgzNzc3NC4xNzM4NjY5MDMy*_ga_6HH9YJMN9M*MTczODY2OTAzMS4xLjAuMTczODY2OTAzMS4wLjAuMTQ0OTczNTMyMg..#DISALLOW_CONFIG_DEFAULT_APPS) Google Messages as the default SMS/RCS client\n - Optionally, IT admin can pre-enroll archival app using MCM as well, if archival solution supports MCM\n3. IT admin enables archival in Google Messages using [MCM](#google-messages-mcm-schema).\n4. Google Messages writes message data to Android on message events. A message event is one of: message sent, message received, message edited, or message deleted.\n5. Google Messages [notifies archival app](#notification-to-archival-app) of new message event, for both RCS and SMS/MMS messages.\n6. The archival app reads the message data from the [`Telephony`](/reference/android/provider/Telephony) provider.\n7. The archival app batches updates and sends them to the server.\n\nImplementation\n--------------\n\n### Google Messages MCM schema\n\nArchival is configured in Google Messages using the `messages_archival` key,\nwhich accepts a string value for admins to specify their archival app by package\nname. If the value is empty, null, or the key is not present, archival is\ndisabled. If the value is specified, archival is enabled, and Google Messages\nsends an explicit broadcast to the specified package name on a message event.\n\n### Notification to archival app\n\n- An explicit broadcast is sent to the specified archial app, with the action: `GOOGLE_MESSAGES_ARCHIVAL_UPDATE`\n- In some cases, the message URI is included in the broadcast extras, which can be used to fetch the message that triggered the broadcast: `com.google.android.apps.messaging.EXTRA_ARCHIVAL_URI`\n\n### Archival app requirements\n\n**Required:**\n\n- Claim the [FOREGROUND_SERVICE permission](/reference/android/Manifest.permission?_gl=1*ir8law*_up*MQ..*_ga*NDcyNDIyNTk3LjE3NDAzOTEzODM.*_ga_6HH9YJMN9M*MTc0MDM5MTM4My4xLjAuMTc0MDM5MTM4My4wLjAuMTM5NTk3NjU1Nw..#FOREGROUND_SERVICE).\n- Declare a foreground service in your manifest, which includes the intent filter for the archival update broadcast, and is [permission-granted](/privacy-and-security/risks/access-control-to-exported-components#permission-based-access-control-to-exported-components-mitigations) to assure only Google Messages can start the service.\n\n \u003cservice\n android:enabled=\"true\"\n android:foregroundServiceType=\"shortService\"\n android:name=\".TestService\"\n android:exported=\"true\"\n android:permission=\"android.permission.WRITE_SMS\"\u003e\n \u003cintent-filter\u003e\n \u003caction android:name=\"GOOGLE_MESSAGES_ARCHIVAL_UPDATE\" /\u003e\n \u003c/intent-filter\u003e\n \u003c/service\u003e\n\n- Implement that service to handle the intent, read from telephony, and determine the type of the message event by comparing the prior state of telephony with the current state, and then cache both the message event to be uploaded to the archival service backend, and the updated state of Telephony to compare against on the next event.\n\n**Recommended:**\n\n- Batch updates of message events to the server with [`JobScheduler`](/reference/android/app/job/JobScheduler).\n\n | **Important:** Don't attempt to sync every message event with your backend in your service.\n - IT admins can guarantee your app isn't killed or your app data deleted by users, making sure your batched updates can proceed as expected.\n - Minimizing foreground service time to just the critical archival requirement minimizes UX and system health impact.\n- Enable programmatic configuration of your app using MCM (as mentioned in\n [Messages MCM schema](#google-messages-mcm-schema)), so users don't need to sign in or specify server\n enrollment details manually.\n\nTesting\n-------\n\nTo test your implementation, use [TestDPC](https://github.com/googlesamples/android-testdpc) or your preferred EMM\nclient."]]