Dịch vụ cấp phép của Google Play là một dịch vụ trên mạng cho phép một ứng dụng truy vấn máy chủ cấp phép đáng tin cậy của Google Play để xác định xem ứng dụng đó có được cấp phép cho người dùng thiết bị hiện tại hay không. Dịch vụ cấp phép này dựa trên khả năng của máy chủ cấp phép của Google Play để xác định xem một người dùng cụ thể có được cấp phép sử dụng một ứng dụng nhất định hay không. Google Play coi một người dùng là được cấp phép nếu người dùng đó là người mua ứng dụng đã có tên trong hồ sơ.
Yêu cầu này bắt đầu khi ứng dụng của bạn gửi yêu cầu tới một dịch vụ do ứng dụng Google Play lưu trữ. Sau đó, ứng dụng Google Play sẽ gửi yêu cầu tới máy chủ cấp phép và nhận kết quả. Ứng dụng Google Play sẽ gửi kết quả đến ứng dụng của bạn. Điều này có thể cho phép hoặc không cho phép người dùng tiếp tục sử dụng ứng dụng nếu cần.
Lưu ý: Nếu phiên bản của một ứng dụng đang ở kênh kiểm thử kín hoặc công khai, thì tất cả những người dùng được phép tải xuống và cài đặt ứng dụng đó sẽ được coi là người dùng được cấp phép của ứng dụng. Để biết thêm thông tin, hãy xem bài viết Sử dụng các kênh kiểm thử để nhận ý kiến phản hồi quý giá của người dùng từ sớm.
![](https://developer.android.com/static/images/google/play/licensing/licensing_arch.png?authuser=5&hl=vi)
Hình 1. Ứng dụng của bạn sẽ bắt đầu một quá trình kiểm tra giấy phép thông qua Thư viện xác minh giấy phép và ứng dụng Google Play. Quá trình này sẽ xử lý hoạt động giao tiếp với máy chủ Google Play.
Lưu ý: Trước đây, bạn có thể kiểm thử một ứng dụng bằng cách tải một phiên bản "nháp" chưa phát hành lên. Chức năng này không được hỗ trợ nữa. Thay vào đó, bạn phải phát hành phiên bản lên các kênh thử nghiệm kín hoặc công khai. Để biết thêm thông tin, hãy xem phần Ứng dụng chưa chính thức không còn được hỗ trợ.
Để nhận biết đúng người dùng và xác định trạng thái giấy phép, máy chủ cấp phép sẽ yêu cầu cung cấp thông tin về ứng dụng và người dùng (ứng dụng của bạn và ứng dụng Google Play cùng hoạt động để tập hợp thông tin và ứng dụng Google Play chuyển thông tin đến máy chủ).
Để giúp bạn thêm tính năng cấp phép vào ứng dụng của mình, SDK Android sẽ cung cấp một tập hợp các nguồn thư viện có thể tải xuống mà bạn có thể đưa vào dự án ứng dụng của mình: gói Cấp phép của Google Market. Thư viện xác minh giấy phép (LVL) là một thư viện mà bạn có thể thêm vào ứng dụng để xử lý tất cả các thông tin liên quan đến việc cấp phép bằng dịch vụ cấp phép của Google Play. Sau khi thêm LVL vào ứng dụng của bạn, ứng dụng có thể xác định trạng thái cấp phép cho người dùng hiện tại bằng cách chỉ cần gọi một phương thức và triển khai một lệnh gọi lại để nhận được phản hồi trạng thái.
Ứng dụng của bạn không truy vấn máy chủ cấp phép trực tiếp mà gọi ứng dụng Google Play qua IPC từ xa để bắt đầu yêu cầu cấp phép. Trong yêu cầu cấp phép:
- Ứng dụng của bạn cung cấp: tên gói, một số chỉ dùng một lần (sau này dùng để xác thực mọi phản hồi từ máy chủ) và một lệnh gọi lại (qua đó phản hồi có thể được trả về không đồng bộ).
- Ứng dụng Google Play thu thập thông tin cần thiết về người dùng và thiết bị, chẳng hạn như tên người dùng chính của Tài khoản Google, IMSI và các thông tin khác của thiết bị. Sau đó, ứng dụng này sẽ gửi yêu cầu kiểm tra giấy phép tới máy chủ thay cho ứng dụng của bạn.
- Máy chủ của Google Play đánh giá yêu cầu dựa vào tất cả thông tin có sẵn, cố gắng thiết lập danh tính của người dùng ở mức độ đủ tin cậy. Sau đó, máy chủ sẽ kiểm tra danh tính người dùng so với hồ sơ mua hàng của ứng dụng và trả về một phản hồi giấy phép. Ứng dụng Google Play này sẽ trả về phản hồi này cho ứng dụng của bạn qua lệnh gọi lại IPC.
Bạn có thể chọn thời điểm và tần suất bạn muốn ứng dụng kiểm tra giấy phép của nó và bạn có toàn quyền kiểm soát cách ứng dụng xử lý phản hồi, xác minh dữ liệu phản hồi đã ký và thực thi các biện pháp kiểm soát quyền truy cập.
Lưu ý rằng trong quá trình kiểm tra giấy phép, ứng dụng của bạn không quản lý bất kỳ kết nối mạng nào cũng như không sử dụng bất kỳ API nào liên quan đến việc cấp phép trên nền tảng Android.
Dữ liệu phản hồi của giấy phép được bảo mật
Để đảm bảo tính toàn vẹn của mỗi truy vấn giấy phép, máy chủ sẽ ký dữ liệu phản hồi của giấy phép bằng cách sử dụng một cặp khoá RSA được chia sẻ riêng giữa máy chủ Google Play và bạn.
Dịch vụ cấp phép tạo một cặp khoá cấp phép duy nhất cho mỗi ứng dụng và hiển thị khoá công khai trên trang Dịch vụ và API của ứng dụng trong Play Console. Bạn phải sao chép khoá công khai từ Play Console và nhúng khoá đó vào mã nguồn ứng dụng của mình. Máy chủ lưu giữ khoá riêng tư trong nội bộ và dùng khoá này để ký các dữ liệu phản hồi của giấy phép cho những ứng dụng mà bạn phát hành bằng tài khoản đó.
Khi nhận được dữ liệu phản hồi đã ký, ứng dụng của bạn sẽ sử dụng khoá công khai được nhúng để xác minh dữ liệu đó. Việc sử dụng tiêu chuẩn mã hoá khoá công khai trong dịch vụ cấp phép sẽ giúp ứng dụng phát hiện được các dữ liệu phản hồi đã bị can thiệp hoặc làm giả mạo.
Thư viện xác minh hoạt động cấp phép
SDK Android cung cấp một gói có thể tải xuống được gọi là gói Cấp phép của Google Market, bao gồm Thư viện xác minh giấy phép (LVL). LVL đơn giản hoá đáng kể quy trình thêm giấy phép vào ứng dụng của bạn và giúp đảm bảo quá trình triển khai an toàn, mạnh mẽ hơn cho ứng dụng của bạn. LVL cung cấp các lớp nội bộ xử lý hầu hết các thao tác tiêu chuẩn của một truy vấn cấp phép, chẳng hạn như liên hệ với ứng dụng Google Play để bắt đầu một yêu cầu cấp phép, cũng như xác minh và xác thực các dữ liệu phản hồi. LVL cũng hiển thị các giao diện cho phép bạn dễ dàng đưa mã tuỳ chỉnh vào để xác định chính sách cấp phép và quản lý quyền truy cập khi ứng dụng cần. Các giao diện chính của LVL là:
Policy
- Hoạt động triển khai của bạn xác định liệu có cho phép truy cập vào ứng dụng hay không, dựa trên dữ liệu phản hồi của giấy phép nhận được từ máy chủ và mọi dữ liệu có sẵn khác (chẳng hạn như từ một máy chủ phụ trợ liên kết với ứng dụng của bạn). Hoạt động triển khai có thể đánh giá các trường khác nhau trong dữ liệu phản hồi của giấy phép và áp dụng các giới hạn khác nếu cần. Hoạt động này cũng cho phép bạn quản lý việc xử lý các lần kiểm tra giấy phép dẫn đến lỗi, chẳng hạn như lỗi mạng.
LicenseCheckerCallback
- Hoạt động triển khai của bạn quản lý quyền truy cập vào
ứng dụng dựa trên kết quả xử lý của đối tượng
Policy
phản hồi giấy phép. Hoạt động này có thể quản lý quyền truy cập theo bất kỳ cách nào cần thiết, bao gồm hiển thị kết quả cấp phép trong giao diện người dùng hoặc hướng người dùng mua ứng dụng (nếu chưa được cấp phép).
Để giúp bạn bắt đầu sử dụng Policy
, LVL cung cấp 2 cách triển khai Policy
hoàn chỉnh mà bạn có thể sử dụng mà không cần sửa đổi hoặc điều chỉnh cho phù hợp với
nhu cầu của mình:
ServerManagedPolicy
Policy
linh hoạt sử dụng các chế độ cài đặt do máy chủ cấp phép cung cấp để quản lý việc lưu dữ liệu phản hồi vào bộ nhớ đệm và quyền truy cập vào ứng dụng khi thiết bị không có kết nối mạng (chẳng hạn như khi người dùng đang trên máy bay). Đối với hầu hết các ứng dụng, bạn nên sử dụngServerManagedPolicy
.StrictPolicy
Policy
hạn chế không lưu dữ liệu phản hồi vào bộ nhớ đệm và chỉ cho phép ứng dụng truy cập khi máy chủ trả về dữ liệu phản hồi được cấp phép.
LVL có sẵn ở dạng một gói SDK Android có thể tải xuống. Gói này bao gồm cả LVL và một ứng dụng mẫu cho biết cách tích hợp thư viện với ứng dụng của bạn và cách ứng dụng của bạn quản lý dữ liệu phản hồi, lượt tương tác trên giao diện người dùng và các tình trạng lỗi.
Các nguồn LVL được cung cấp dưới dạng một dự án thư viện Android, nghĩa là bạn có thể duy trì một nhóm nguồn thư viện và chia sẻ các nguồn đó trên nhiều ứng dụng. Môi trường kiểm thử đầy đủ cũng được cung cấp thông qua SDK. Nhờ đó, bạn có thể phát triển và kiểm thử cách triển khai cấp phép trong các ứng dụng trước khi phát hành, ngay cả khi bạn không có quyền truy cập vào thiết bị thực tế nào.
Các yêu cầu và hạn chế
Dịch vụ cấp phép của Google Play được thiết kế nhằm cho phép bạn áp dụng các tuỳ chọn kiểm soát giấy phép cho những ứng dụng mà bạn phát hành qua Google Play. Dịch vụ này không được thiết kế để cho phép bạn kiểm soát quyền truy cập vào các ứng dụng không được phát hành thông qua Google Play hoặc chạy trên các thiết bị không cung cấp ứng dụng Google Play.
Dưới đây là một số điểm cần lưu ý khi bạn triển khai quy trình cấp phép trong ứng dụng của mình:
- Ứng dụng chỉ có thể dùng dịch vụ này nếu ứng dụng Google Play được cài đặt trên thiết bị lưu trữ của ứng dụng và thiết bị này đang chạy Android 1.5 (API cấp 3) trở lên.
- Để hoàn tất việc kiểm tra giấy phép, máy chủ cấp phép phải truy cập được qua mạng. Bạn có thể triển khai hoạt động lưu giấy phép vào bộ nhớ đệm để quản lý quyền truy cập vào ứng dụng của mình khi không có kết nối mạng.
- Mức độ bảo mật của các tuỳ chọn kiểm soát cấp phép trong ứng dụng sẽ dựa trên thiết kế triển khai của ứng dụng. Dịch vụ này cung cấp các biện pháp chặn cho phép bạn kiểm tra giấy phép một cách an toàn, nhưng việc thực thi và xử lý giấy phép lại là yếu tố tuỳ thuộc vào bạn. Bằng cách làm theo các phương pháp hay nhất trong các tài liệu sau, bạn có thể giúp đảm bảo rằng hoạt động triển khai của mình sẽ được an toàn.
- Việc thêm dịch vụ cấp phép vào một ứng dụng sẽ không ảnh hưởng đến cách ứng dụng đó hoạt động khi chạy trên thiết bị không có Google Play.
- Bạn chỉ có thể triển khai các chế độ kiểm soát cấp phép cho ứng dụng miễn phí, nhưng chỉ khi bạn đang dùng dịch vụ này để cung cấp tệp mở rộng APK.
Biện pháp thay thế để chống sao chép
Dịch vụ cấp phép của Google Play là một cơ chế linh hoạt, bảo mật để kiểm soát quyền truy cập vào ứng dụng của bạn. Cơ chế này thay thế một cách hiệu quả cơ chế Chống sao chép (không được hỗ trợ nữa) đã có trên Google Play trước đây và cung cấp cho bạn nhiều khả năng phân phối hơn cho các ứng dụng của mình.
Dịch vụ cấp phép cho phép bạn chuyển sang mô hình dựa trên giấy phép có thể thực thi trên tất cả các thiết bị có quyền truy cập vào Google Play. Quyền truy cập không bị ràng buộc với các đặc điểm của thiết bị lưu trữ mà chỉ liên quan đến ứng dụng của bạn trên Google Play (thông qua khoá công khai của ứng dụng) và chính sách cấp phép mà bạn xác định. Bạn có thể cài đặt và quản lý ứng dụng của mình trên mọi bộ nhớ (kể cả thẻ SD) trong mọi thiết bị.
Mặc dù không có cơ chế cấp phép nào có thể ngăn chặn mọi hoạt động sử dụng trái phép, nhưng dịch vụ cấp phép cho phép bạn kiểm soát quyền truy cập của hầu hết các hình thức sử dụng thông thường, trên tất cả các thiết bị tương thích, bị khoá hoặc đã mở khoá.
Để bắt đầu thêm dịch vụ cấp phép ứng dụng vào ứng dụng của bạn, hãy tiếp tục với phần Thiết lập để cấp phép.