2013-06-17 13 views
18

Tôi đang phải đối mặt với cùng một vấn đề chính xác nhưLỗi làm mới iventory (truy vấn giá các mặt hàng). (Trả lời: 6: Lỗi)

In-app billing v3 unable to query items without network connection or in airplane/flight mode

Nó không phải luôn luôn xảy ra. Bạn cần phải chuyển điện thoại sang chế độ trên máy bay hoặc tắt wifi, đợi vài giờ, chỉ có sự cố sẽ xảy ra. Thông báo lỗi sau sẽ được hiển thị.

Không truy vấn được iventory: IabResult: Lỗi làm mới iventory (truy vấn giá mặt hàng). (Trả lời: 6: Lỗi)

Tác giả đề nghị sử dụng

List<String> skulist = new ArrayList<String>(); 
skulist.add("my_sku_name1"); 
skulist.add("my_sku_name2"); 
mHelper.queryInventoryAsync(true, skulist, mGotInventoryListener); 

để giải quyết vấn đề.

Tuy nhiên, nó không hiệu quả đối với tôi. Vấn đề tương tự vẫn xảy ra.

Bất kỳ giải pháp nào về vấn đề này? Cảm ơn.

+2

Tôi chỉ có một sự hiểu biết rất cursory với lớp IabHelper (từ một câu hỏi SO), vì vậy đây là bản chất một đâm trong bóng tối. Thay vào đó, hãy thử gọi hàm này: 'mHelper.queryInventoryAsync (false, null, mGotInventoryListener);' (hoặc, tương đương, 'mHelper.queryInventoryAsync (false, mGotInventoryListener);'). – jerry

+0

Bạn đã giải quyết được vấn đề của mình chưa ?! –

+0

Không. Tôi chỉ cần đọc trạng thái mua hàng trong ứng dụng đang được lưu trữ trước đó, khi kết nối mạng bị lỗi. –

Trả lời

8

Như Jerry gợi ý trong comment của mình, bạn có thể làm việc này bằng cách gọi

mHelper.queryInventoryAsync (false, mGotInventoryListener);

thay vì

mHelper.queryInventoryAsync (mGotInventoryListener);

Tôi đã tắt tất cả kết nối mạng khỏi thiết bị của mình (trong hơn một ngày) và có thể tái tạo/khắc phục sự cố một cách đáng tin cậy với thay đổi thông số đơn đó. Có vẻ như bản thân giao dịch mua sẽ được lưu trữ lâu hơn (vô hạn?) Bởi dịch vụ thanh toán trong ứng dụng hơn so với chi tiết sku như giá.

+1

Nhưng bây giờ bạn không tìm nạp skuDetails, mà bạn có thể muốn có. Ghi nhớ nó trong tâm trí. – JacksOnF1re

+0

Điều đó không có tác dụng với tôi! ------ Ngay cả mHelper.queryInventoryAsync (true, skuList, mGot) ------- Ngay cả mHelper.queryInventoryAsync (false, skuList, mGot). –

3

Có vẻ như Google Play đã hết hạn các mục khoảng không quảng cáo được lưu trong bộ nhớ cache. Đó có thể là chi tiết triển khai về cách hoạt động của ứng dụng Google Play.

Lỗi 6 được định nghĩa là BILLING_RESPONSE_RESULT_ERROR.

Nếu điều quan trọng là bạn có thể cung cấp khoảng không quảng cáo để mua ngay cả khi không có kết nối Internet, bạn có thể cần phải lưu trữ bộ nhớ cache kết quả trả về cuối cùng cho mình và sử dụng chúng trong trường hợp truy vấn không thành công.

Tuy nhiên, việc mua cũng sẽ không hoạt động trong trường hợp như vậy, vậy tại sao phải bận tâm?

+0

Dựa trên câu hỏi được liên kết, tôi đã đọc vấn đề của OP khi hiển thị các mặt hàng đã được mua, không cung cấp các mặt hàng mới để bán. Trong trường hợp đó, việc lưu vào bộ nhớ đệm chính chúng sẽ hữu ích hơn (giả sử kết quả thực sự hết hạn; tôi không biết đó có phải là sự thật hay không). – jerry

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