Trong phần này, chúng tôi sẽ tạo dịch vụ phụ trợ của mình để tích hợp với Thông báo của Google Cloud mà chúng tôi đã thiết lập trong Phần 1. Nếu bạn không có chủ đề Google PubSub được định cấu hình với Google Play Console, trước tiên bạn cần xem qua phần 1.
- Thiết lập Cloud Pub/Sub bằng dự án Google Cloud Platform (GCP) của riêng bạn — Phần 1
- Tạo chủ đề — Phần 1
- Cho phép Google Play xuất bản thông báo cho chủ đề — Phần 1
- Cho Google Play Console biết về chủ đề của bạn — Phần 1
Liên kết đến Phần 1:
Nội dung chính của bài viết
Triển khai tính năng Giữ tài khoản — Hướng dẫn đầy đủ về các gói đăng ký trong Google Play
Bắt đầu từ ngày 1 tháng 2020 năm XNUMX, Google đã bắt buộc bất kỳ nhà phát triển nào cung cấp đăng ký trong ứng dụng phải triển khai…
Bây giờ đối với dịch vụ backend, các bước còn lại là:
- Nhận khóa xác thực cho chương trình phụ trợ của bạn
- Thêm dịch vụ backend của bạn với tư cách là người đăng ký vào chủ đề
- Xác minh rằng bạn đang nhận được thông báo
- Cập nhật chương trình phụ trợ của bạn với thay đổi đăng ký mới
- Và đó là tất cả!
Sự tiến bộ của chúng tôi cho đến nay
Chúng tôi đã thiết lập một chủ đề Cloud Pub/Sub. ID chủ đề của chúng tôi là:projects/myproject-293415/topics/UserSubscriptionUpdates.
Chúng tôi cũng thiết lập một Đăng ký, có ID là:projects/myproject-293415/subscriptions/BackendSubscriber
Và trên đăng ký này, chúng tôi có thể thấy thông báo thử nghiệm mà chúng tôi đã gửi từ Google Play Console — menu Thiết lập kiếm tiền.
1. Nhận khóa xác thực
Để dịch vụ backend của chúng tôi có thể xem đăng ký, chúng tôi cần có cách xác thực. Đối với điều này, chúng tôi sẽ cần những gì được gọi là Tài khoản dịch vụ.
Đi tới https://console.cloud.google.com/apis/— đảm bảo rằng dự án ở trên cùng là dự án được định cấu hình với PubSub.
Từ menu bên trái, hãy chọn Thông tin đăng nhập. Và từ đây, chọn Tạo thông tin đăng nhập -> tài khoản dịch vụ.
Hãy đặt tên cho nó là MyBackendService và chọn Tạo. Đối với các vai trò, bạn có thể chọn một trong các tùy chọn sau:
Pub / Sub Editor-> Nếu bạn muốn có thể tạo chủ đề mới và đăng ký mới từ chương trình phụ trợ.
Pub / Sub Subscriber-> Nếu bạn chỉ muốn dịch vụ phụ trợ của mình chỉ có thể Đăng ký và không muốn cấp cho nó quyền truy cập để sửa đổi cấu hình chủ đề của bạn.
Chúng tôi sẽ chọn Trình chỉnh sửa cho bài viết này và chọn Tiếp tục rồi chọn xong.
Bây giờ trong bảng điều khiển, chúng tôi sẽ chọn tài khoản dịch vụ mới tạo của mình để mở trang chi tiết của nó. Và từ đây, chúng ta sẽ chọn Add Key -> Create New Key -> JSON -> Create.
Thao tác này sẽ tải xuống tệp JSON. Bạn nên lưu trữ nó một cách an toàn vì bất kỳ ai có khóa này sẽ có thể truy cập vào google console và tùy thuộc vào các quyền bạn đã chọn ở trên, có thể sửa đổi mọi thứ cho phù hợp.
Tạo dịch vụ backend của chúng tôi
Đối với bài viết này, chúng tôi sẽ sử dụng NodeJS. Tôi cũng sẽ tải lên một ví dụ Kotlin / JVM sau này.
Bây giờ hãy tạo một dịch vụ backend nhỏ của chúng ta trong NodeJS. Với mục đích của bài viết này, tôi giả sử máy của bạn đã cài đặt NodeJS.
Tạo một thư mục mới ở bất cứ đâu trên máy tính để bàn của bạn và gọi nó là BackendService. Sao chép tệp json của bạn vào thư mục này.
2. Thiết lập dịch vụ NodeJS
Tạo một tệp mới bằng trình chỉnh sửa yêu thích của bạn, tôi đang sử dụng Visual Studio Code. Hãy gọi nó là,. Sao chép tệp JSON của bạn vào cùng một thư mục.SubscriberService.js
Vì vậy, bây giờ trên máy tính để bàn của tôi, cómà chứa:Desktop/BackendService/NodeJS
my-key.json
SubscriberService.js
Sao chép mã sau vào Người đăng ký.js của bạn:
// Imports the Google Cloud client library
const {PubSub} = require('@google-cloud/pubsub');
async function quickstart(
projectId = 'myproject-293415', // Your Google Cloud Platform project ID
subscriptionName = 'BackendSubscriber' // Name of our subscription
) {
// Instantiates a client
const pubsub = new PubSub({projectId});
// Get our created subscription
const subscription = pubsub.subscription(subscriptionName);
console.log(`Subscription ${subscription.name} found.`);
// Receive callbacks for new messages on the subscription
subscription.on('message', message => {
console.log('Received message:', message.data.toString());
// process.exit(0);
});
// Receive callbacks for errors on the subscription
subscription.on('error', error => {
console.error('Received error:', error);
process.exit(1);
});
}
console.log('Running');
quickstart();
Bây giờ chúng ta cần cài đặt các dependency của chúng ta.
Thêm thông tin xác thực
Mở thiết bị đầu cuối của bạn và đi đến thư mục gốc của dự án của bạn, trong trường hợp này. Và sau đó chạy:Desktop/BackendService/NodeJS
export GOOGLE_APPLICATION_CREDENTIALS="my-key.json"
Bạn nên thay đổi tên tệp từ tên tệp của khóa của riêng bạn. Bây giờ cài đặt Thư viện PubSub trên cùng một thư mục.my-key.json
npm install @google-cloud/pubsub
Thao tác này sẽ cài đặt thư viện phụ pub cho dự án của chúng ta. Và chúng tôi đã hoàn tất. Bây giờ hãy chạy dự án bằng cách sử dụng:
node SubscriberService.js
Và bạn sẽ thấy các thông báo chủ đề của mình được hiển thị trong nhật ký.
3. Xác minh rằng bạn đang nhận được thông báo
Để phiên này trên thiết bị đầu cuối chạy và quay lại Google Play Console. Mở trang tổng quan ứng dụng của bạn và từ menu bên trái, đi tới Thiết lập kiếm tiền và chọn Gửi thông báo thử nghiệm một lần nữa. Bạn sẽ thấy thông báo này được hiển thị trên thiết bị đầu cuối của mình ngay bây giờ. Nếu có, xin chúc mừng! Bây giờ bạn có thể phản ứng với thông báo này và cập nhật thông tin của người đăng ký trong chương trình phụ trợ. Khi trạng thái đăng ký của người dùng thay đổi, bạn sẽ nhận được thông báo ở định dạng sau:
{
"version":"1.0",
"packageName":"com.example.yourapppackagename",
"eventTimeMillis":"1603363939665",
"subscriptionNotification":{
"version":"1.0",
"notificationType":4,
"purchaseToken":"asdasdasdasdasdasdasasdexampleasdasdasd",
"subscriptionId":"yearly_subscription"
}
}
Bạn có thể xem tất cả thông tin này trên callback subscription.on.
// Receive callbacks for new messages on the subscription subscription.on('message', message => {
console.log('Received message:', message.data.toString());
const purchaseToken = message.data.subscriptionNotification.purchaseToken
const notificationType = message.data.subscriptionNotification.notificationType // you can update your backend here using the purchase token
});
Và đó là nó! Bây giờ bạn có thể cập nhật chương trình phụ trợ của mình bằng cách sử dụng uniqueand.purchaseToken
notificationType
Một số nút thắt cổ chai
Tôi đã gặp phải nhiều nút thắt cổ chai khác nhau khi làm việc trên dịch vụ backend hiện có của chúng tôi trên NodeJS. Cụ thể, dịch vụ backend của chúng tôi đang sử dụng TypeScript và Docker để triển khai.
Vấn đề: Chúng tôi đã có thể xem các chủ đề và đăng ký. Nhưng chúng tôi đã không nhận được bất kỳ cuộc gọi lại nào trên ourmethod.subscription.on
Sau rất nhiều lần khắc phục sự cố, chúng tôi phát hiện ra rằng đối với phần phụ trợ của mình, một cách khắc phục đơn giản là triển khai các cuộc gọi lại này bằng GRPC. Tất cả những gì bạn cần làm là:
npm install grpc
, addingas một sự phụ thuộc.grpc
- instantiate with :
@google-cloud/pubsub
grpc
const {PubSub} = require('@google-cloud/pubsub');
const grpc = require('grpc');
3. Và cuối cùng, tạo ứng dụng khách PubSub của bạn với:
const pubsub = new PubSub({grpc});
4. Cập nhật chương trình phụ trợ của bạn với thay đổi đăng ký mới
Loại thông báolà một số nguyên sẽ là 5 trong trường hợp giữ tài khoản. Dưới đây là danh sách đầy đủ tất cả các thông báo mà dịch vụ của bạn sẽ nhận được từ Google Cloud Pub / Sub:
- (1) SUBSCRIPTION_RECOVERED — Một đăng ký đã được khôi phục từ việc giữ tài khoản.
- (2) SUBSCRIPTION_RENEWED — Gói đăng ký đang hoạt động đã được gia hạn.
- (3) SUBSCRIPTION_CANCELED – Đăng ký đã bị hủy một cách tự nguyện hoặc không tự nguyện. Đối với hủy tự nguyện, được gửi khi người dùng hủy.
- (4) SUBSCRIPTION_PURCHASED — Một đăng ký mới đã được mua.
- (5) SUBSCRIPTION_ON_HOLD — Đăng ký đã bị giữ tài khoản (nếu được bật).
- (6) SUBSCRIPTION_IN_GRACE_PERIOD — Đăng ký đã bước vào thời gian gia hạn (nếu được bật).
- (7) SUBSCRIPTION_RESTARTED — Người dùng đã kích hoạt lại đăng ký của họ từ Đăng ký tài khoản > Play > (yêu cầu chọn tham gia khôi phục đăng ký).
- (8) SUBSCRIPTION_PRICE_CHANGE_CONFIRMED — Người dùng đã xác nhận thành công việc thay đổi giá đăng ký.
- (9) SUBSCRIPTION_DEFERRED — Thời gian lặp lại của đăng ký đã được kéo dài.
- (10) SUBSCRIPTION_PAUSED — Đăng ký đã bị tạm dừng.
- (11) SUBSCRIPTION_PAUSE_SCHEDULE_CHANGED — Lịch tạm dừng đăng ký đã được thay đổi.
- (12) SUBSCRIPTION_REVOKED — Đăng ký đã bị thu hồi khỏi người dùng trước thời gian hết hạn.
- (13) SUBSCRIPTION_EXPIRED — Đăng ký đã hết hạn.
Tham khảo:https://developer.android.com/google/play/billing/rtdn-reference
Để tạm ngưng tài khoản, bạn sẽ cần phản ứng với loại thông báo 5:
- Chặn quyền truy cập của người dùng vào nội dung của bạn
- Hiển thị thông báo cho họ biết rằng thanh toán của họ không thành công
- Định tuyến cho họ để sửa phương thức thanh toán trên Cửa hàng Google Play
- Được đề xuất – Xem trạng thái cập nhật của đăng ký bằng cách sử dụng mã thông báo mua để cập nhật thời gian hết hạn, v.v.
Khi họ đã sửa nó, máy chủ phụ trợ của bạn sẽ nhận được thông báo loại 1. Đó là khi bạn:
- Khôi phục quyền truy cập của người dùng vào nội dung của bạn
- Hiển thị cho họ thông báo khôi phục
Và đó là tất cả!
[…] Triển khai tính năng Giữ tài khoản (Phần 2) — Hướng dẫn đầy đủ về đăng k… […]