10

Tất cả các hướng dẫn tôi có thể tìm thấy trên Android In-App-Billing V3 giả sử bạn có một hoạt động duy nhất xử lý mọi thứ liên quan đến thanh toán. Trong trường hợp của tôi, có nhiều hoạt động sẽ cần quyền truy cập vào thanh toán. Tôi sẽ xử lý một điều như thế nào một cách thanh lịch nhất?Tách thanh toán trong ứng dụng từ hoạt động

Một vấn đề ví dụ mà tôi gặp phải khi: Khi làm việc với các lớp trợ giúp thanh toán Google, bạn luôn giao hoạt động hiện tại làm tham số. Các cuộc gọi lại sau này (ví dụ: onActivityResult) được gọi trên hoạt động đó. Nhưng nếu hoạt động tích cực thay đổi mọi lúc thì sao? Tôi có phải tắt và khởi động lại thanh toán mọi lúc không?

Trả lời

4

Nhưng nếu hoạt động tích cực thay đổi mọi lúc thì sao? Tôi có phải tắt và khởi động lại thanh toán mọi lúc không?

Không có gì xấu trong đó. Kết nối với một dịch vụ rất nhanh. Điều quan trọng nhất là có thể xử lý gọi lại onActivityResult() khi hoạt động bắt đầu lại.

Tôi sẽ xử lý một điều như thế nào một cách thanh lịch nhất?

Tôi không chắc bạn sẽ viết loại ứng dụng nào. Nếu đó là một trò chơi, thì rất có thể nó bao gồm một hoạt động đơn lẻ và không có vấn đề gì. Nếu đó là loại ứng dụng khác với nhiều hoạt động, theo ý kiến ​​của tôi, bạn nên có một hoạt động duy nhất, nơi người dùng có thể xem tất cả các sản phẩm trong ứng dụng (đã mua và mua). Điều này giống như hoạt động "cửa hàng nội bộ". Hoạt động này có thể kết nối với dịch vụ thanh toán. Các hoạt động khác nên chuyển tiếp tới "cửa hàng nội bộ" nơi người dùng có thể đọc thêm về sản phẩm trong ứng dụng và quyết định mua sản phẩm đó. Tôi thấy nó rất tiện lợi.

Một cách tiếp cận khác là triển khai logic thanh toán trong Phân đoạn có thể được sử dụng lại trong mọi hoạt động. Bạn chỉ cần ghi đè onActivityResult() và chuyển tiếp kết quả đến Phân đoạn đó. Đây là cách tôi đã triển khai nó trong ứng dụng của mình.

Hy vọng điều này sẽ hữu ích.

+0

Thông tin tuyệt vời. Tôi có câu hỏi, cách truy cập mã InAppBilling từ hoạt động khác? Tôi không thể làm cho nó hoạt động –

+0

Bạn có thể đăng mẫu ví dụ của bạn với thanh toán không? Cảm ơn. – dragoon

+0

Nhanh để kết nối với một dịch vụ, ok, nhưng còn ảnh hưởng đến thiết bị thì sao? Nó có liên quan đến giao tiếp với máy chủ không? –

0

Suy nghĩ một chút bên ngoài hộp mẫu. Nó không liên quan đến vấn đề của bạn mà chỉ là vấn đề chung.

Tôi sẽ sử dụng hệ thống thông báo vì bạn có 1 nhà xuất bản và nhiều người nghe cần thiết (trường hợp của bạn 2). One, phương pháp xấu nhất có thể (nhưng nhanh nhất để viết):

  1. làm cho một hoạt động giả (thậm chí vô hình, bất cứ điều gì)
  2. copy-paste đoạn mã ví dụ mà làm việc ở đó
  3. hack một chút mà làm việc mã và thêm thính giả, trong đó có các thông số như hoạt động thực sự của bạn
  4. thông báo khi cần thiết trường hợp của bạn, khi cần thiết

5th lên bỏ phiếu nếu giúp hoặc thích :)

+0

Hm, tạo hoạt động giả mạo không dễ dàng như vậy. Cách duy nhất để tạo ra một hoạt động là bắt đầu nó thông qua vòng đời Android, phải không? Trong trường hợp đó các hoạt động sẽ không được giả nữa, nhưng thực sự trên màn hình ;-) – Boris

+0

làm thế nào khó khăn cho bạn để làm cho vô hình một hoạt động? –

+0

Tôi nghĩ rằng đánh bại mục đích tách logic kinh doanh khỏi quan điểm (hoạt động). – Boris