30

Đây là vấn đề được tìm kiếm rộng rãi trong số những người triển khai thanh toán trong ứng dụng trong Android, rằng có bao nhiêu tài khoản được xử lý. Nếu người dùng có nhiều tài khoản được định cấu hình, tài khoản nào sẽ được sử dụng cho thanh toán trong ứng dụng (vì không có tùy chọn để cho phép người dùng chọn tài khoản)? Sau khi đào rất nhiều, theo đoạn here dường như giải thích nó ..Thông tin tài khoản liên quan đến việc cài đặt ứng dụng

Lưu ý: Để mua thử nghiệm, tài khoản thử nghiệm giấy phép phải nằm trên thiết bị Android của người dùng. Nếu thiết bị có nhiều tài khoản, giao dịch mua sẽ được thực hiện bằng tài khoản đã tải xuống ứng dụng. Nếu không có tài khoản nào đã tải xuống ứng dụng, giao dịch mua được thực hiện bằng tài khoản đầu tiên. Người dùng có thể xác nhận tài khoản đang thực hiện mua hàng bằng cách mở rộng hộp thoại mua.

Tôi tạo tải trọng của nhà phát triển bằng tài khoản có liên quan đến thanh toán ứng dụng để có thể khôi phục đúng vào thời điểm sau đó hoặc trên một số thiết bị khác. Nhưng vì Honeycomb, không có những thứ như Tài khoản Chính. Người dùng có thể xóa bất kỳ tài khoản nào, có thể là tài khoản mà ứng dụng đã được mua, trong trường hợp đó, tài khoản đầu tiên từ danh sách tài khoản sẽ được sử dụng để thanh toán. Bây giờ, nếu tôi biết tài khoản nào đã được sử dụng và nếu nó xảy ra là 'không phải tài khoản đã cài đặt ứng dụng', tôi ít nhất có thể thông báo cho người dùng rằng các giao dịch mua sau sẽ không được khôi phục sau này.

Vì vậy, câu hỏi của tôi là ..

Có cách nào để tìm mà tài khoản được sử dụng để tải về các ứng dụng?

Google Play dường như sử dụng thông tin này. Dù sao chúng ta có thể tương tác với Google Play đến mức này?

lưu ý: PackageManager dường như không giải quyết vấn đề này.

+0

quan tâm đến những điều tương tự – Greg

+1

bạn có thể ghi lại các tài khoản đó lần đầu tiên được sử dụng để thực hiện đầu tiên mua hàng hoặc mở đầu tiên? (nó chắc chắn không giống như độ chính xác mức cửa hàng chơi) – Edison

Trả lời

0

Cảm giác ruột của tôi bảo tôi tạo tổ hợp AccountManagerSyncAdapter của riêng bạn. Để kiểm soát tài khoản được liên kết với thanh toán trong ứng dụng của bạn. Sau đó, bạn có thể hỗ trợ hợp nhất các tài khoản trên máy chủ của mình (nếu người dùng thực hiện hành động và quyết định hợp nhất các tài khoản) và xử lý thanh toán cho cùng một người hoặc dựa trên tài khoản của họ. Cũng như khôi phục mua hàng cho cùng một thiết bị nếu bạn muốn cho phép điều đó. Bạn có thể thực thi các chính sách thiết bị, v.v. sử dụng Google Play Licensing và vd. DeviceLimiter

Nếu người dùng xóa tài khoản cũ của bạn AccountManagerSyncAdapter kết hợp sẽ tạo ra một tài khoản mới và sau đó người dùng sẽ buộc phải sáp nhập tài khoản trên máy chủ của bạn để khôi phục mua trước đó và bạn sẽ phải "Tài khoản Primary mới "thông tin được lưu trữ ở đó.

Giống như Edison đã nói trong nhận xét của bạn. Phải có cách để ghi lại tài khoản liên quan đến lần mua hàng đầu tiên và đi từ đó.

Đây chỉ là suy nghĩ của tôi và tôi hy vọng chúng tôi có thể làm sáng tỏ điều này và tìm ra "thực hành tốt nhất" để hỗ trợ điều này.

+0

Điều này không giải quyết được vấn đề chung. Ví dụ, trong ứng dụng của chúng tôi, chúng tôi đã triển khai AccountManager và SyncAdapter chứa các tài khoản liên kết với người dùng trên máy chủ của chúng tôi. Mỗi người dùng trên ứng dụng của chúng tôi có thể mua đăng ký. Vấn đề là chúng tôi cũng muốn hỗ trợ nhiều người dùng trên một thiết bị (như Google thực hiện trên hầu hết các ứng dụng của họ). Vậy làm cách nào người dùng có thể có 2 tài khoản trên ứng dụng của chúng tôi trên cùng một thiết bị, với đăng ký trên cả hai thiết bị? Hiện tại, điều này khá phức tạp để triển khai vì hệ thống thanh toán được Google Play triển khai liên quan đến tài khoản người dùng. –

+0

Đây là thứ mà bạn phải xử lý bằng cách sử dụng hỗ trợ phía máy chủ. Nếu ứng dụng của bạn hỗ trợ nhiều tài khoản, bạn cần một cách để thông báo cho máy chủ rằng có hai tài khoản 'được kết nối'. Khi người dùng mua sản phẩm với IAB, bạn có thể thông báo cho máy chủ rằng có giao dịch mua mới cho tài khoản google cụ thể và bạn cũng có cách mở rộng giao dịch mua sang tài khoản khác. Điều này không được xử lý bởi google, nó là một phần của logic bạn phải xử lý phía máy khách và phía máy chủ. –

2

Nếu bạn muốn lấy tên của id thư tài khoản được định cấu hình để phát tài khoản cửa hàng hiện tại. Vui lòng sử dụng nó. Tôi đặt ở đây chỉ cho tên email nhưng bạn có thể nhận được tất cả thông tin của tài khoản như chủng loại, descriptin từ đối tượng tài khoản

Pattern emailPattern = Patterns.EMAIL_ADDRESS; 
      Account[] accounts =  AccountManager.get(this).getAccountsByType("com.google"); 
      for (Account account : accounts) { 
       if (emailPattern.matcher(account.name).matches()) { 
        primaryEmailID = account.name; 

       } 
      } 
Các vấn đề liên quan