2012-01-18 16 views
16

Tôi hiện có hai phiên bản ứng dụng của mình trong thị trường Android, một phiên bản trả phí và một phiên bản miễn phí. Nhưng tôi muốn tích hợp thanh toán trong ứng dụng vào ứng dụng miễn phí của tôi và tính phí khách hàng trên cơ sở đăng ký, với mức giá thấp hơn giá hiện tại của ứng dụng trả tiền.Cách di chuyển từ ứng dụng Android trả phí sang ứng dụng được thanh toán bằng thanh toán trong ứng dụng?

Nhưng tôi nên xử lý điều này cho khách hàng hiện tại như thế nào? Nó có vẻ không công bằng để cho họ trả tiền một lần nữa cho việc sử dụng các chức năng trả tiền, trong khi họ đã sớm chấp nhận các ứng dụng của tôi. Lý tưởng nhất là tôi thực hiện một cái gì đó mà sẽ cung cấp cho người dùng hiện có quyền truy cập vào các chức năng mở khóa trong ứng dụng miễn phí của tôi.

Bất kỳ ý tưởng nào về cách thực hiện điều này? Một phác thảo của một cách tiếp cận tốt để có là đủ, tôi không nhớ để làm một số nghiên cứu về cách thực sự thực hiện một cách tiếp cận như vậy.

+2

Bạn đã bao giờ tìm thấy giải pháp cho điều này chưa? Tôi đang xem xét việc làm tương tự và cần tìm cách cung cấp cho người dùng trả tiền hiện có chức năng tôi đang lập kế hoạch mở khóa thông qua mua hàng trong ứng dụng. Tôi đã cân nhắc thực hiện một việc như thế này (http://stackoverflow.com/questions/2133986/how-to-know-my-android-application-has-been-upgraded-in-order-to-reset-an-alarm) để phát hiện bản nâng cấp so với cài đặt sạch, nhưng lo lắng rằng nó sẽ không an toàn khi cấp cho người dùng hiện tại mua hàng trong ứng dụng thích hợp miễn phí (nếu có thể). –

+0

Tôi chưa tìm thấy giải pháp nào. Tôi đã suy nghĩ về một giải pháp kiểm tra xem ứng dụng trả phí có được cài đặt trên thiết bị không và nếu có, hãy thêm mục nhập vào tùy chọn được chia sẻ của ứng dụng miễn phí được cập nhật với đăng ký trong ứng dụng cho biết rằng người dùng phải có chức năng mở khóa ứng dụng của tôi. Nhưng tôi đã không dành thời gian điều tra những ưu và khuyết điểm của một giải pháp như vậy được nêu ra. –

+0

@ Jan-Henk Đã tìm thấy giải pháp chưa? Bạn đã làm nó như thế nào? Tôi cũng sẵn sàng thực hiện điều này. Để chia sẻ kinh nghiệm của tôi. Tôi đã mua phiên bản trả tiền SwiftKey. Sau đó, Swiftkey trở thành khái niệm mua ứng dụng. Tôi không biết làm thế nào họ đã làm nó nhưng bằng cách nào đó họ "biết" rằng tôi đã được trả tiền người dùng và cho tôi có 1 chủ đề miễn phí. – rxlky

Trả lời

-1

Trang web dành cho nhà phát triển Android bao gồm điều này khá tốt.

http://developer.android.com/guide/market/billing/index.html

+7

Liên kết của bạn bao gồm cách triển khai thanh toán trong ứng dụng, nhưng trọng tâm chính của câu hỏi là cách di chuyển người dùng từ ứng dụng trả phí hiện tại sang ứng dụng miễn phí, nơi thanh toán trong ứng dụng sẽ được triển khai. Tôi đang tìm một giải pháp mà những người dùng này không phải trả tiền một lần nữa. –

+0

Trang web dành cho nhà phát triển Android không bao gồm trường hợp sử dụng này. – donturner

0

Đúng nếu tôi hiểu sai. Bạn đã đề cập về việc đăng ký có nghĩa là chi tiết người dùng + cơ sở dữ liệu + thông tin bổ sung?

nếu ứng dụng của bạn không có cơ sở dữ liệu hoặc bất kỳ thứ gì để lưu giữ hồ sơ người dùng. Tôi sẽ đề xuất phát hành bản cập nhật cho ứng dụng trả tiền và bật chia sẻ tệp hoặc tệp ini phổ biến. sử dụng ứng dụng miễn phí để đọc cùng một tệp sharedpreferenece hoặc tệp ini của riêng bạn để đọc cài đặt.

chuyển sang cơ sở dữ liệu sẽ giúp bạn trong tương lai cho nhiều hoạt động quan hệ khách hàng hơn.

1
  • Tăng của bạn phiên bản cơ sở dữ liệu (ví dụ: 34 -> 35.)
  • Trong phương pháp SqliteOpenHelper mở khóa các tính năng của bạn cho người dùng trước

Ví dụ:

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ 
    if(oldVersion != 0 and oldVersion <= 34){ 
     appConf.unlockAllFeatures() 
    } 
} 
  • Nếu ứng dụng của bạn không sử dụng cơ sở dữ liệu, hãy làm điều đó trong onCreate, nhưng lưu ý rằng onCreate được gọi trên một cuộc gọi cơ sở dữ liệu đầu tiên
2

Bạn có thể giữ lại cả trả miễn phí/phiên bản IAB của bạn của bạn, nhưng căn họ cả về dự án thư viện tương tự như vậy mà bạn muốn chỉ có một bộ các tập tin nguồn để duy trì. Dự án thư viện có thể mở khóa tất cả các tính năng hiện có sẵn cho người dùng trả phí của bạn cho phiên bản trả tiền (được kích hoạt, bằng cách kiểm tra tên gói của ứng dụng) và mở khóa các tính năng tương tự cho phiên bản miễn phí chỉ khi thanh toán được thực hiện qua IAB.

Điều này cũng cho phép bạn tính phí người dùng phiên bản trả tiền cho các tính năng bổ sung ngoài những tính năng hiện có khi họ thanh toán cho ứng dụng, nếu bạn thêm một số tính năng thực sự quan trọng trong tương lai và muốn tính thêm số tiền cho những người.

Nó cũng sẽ có lợi thế là người dùng trả phí hiện tại của bạn sẽ không phải làm gì cả; với họ nó sẽ xuất hiện mà không có thay đổi nào xảy ra. Đặc biệt, họ sẽ không phải cài đặt ứng dụng miễn phí/IAB của bạn hoặc thực hiện bất kỳ thủ tục ủy quyền đặc biệt nào.

Điểm bất lợi là bạn sẽ phải tạo và tải lên hai dự án cho mỗi bản phát hành. Tuy nhiên, điều này có thể được tự động hóa một phần.

+0

Chỉ cần nhận thấy rằng câu hỏi của bạn là cho năm 2012! Một số câu trả lời khác ở đây là từ năm 2013, vì vậy tôi đã bỏ lỡ điều đó. Hy vọng rằng, bạn đã giải quyết vấn đề của mình; có lẽ câu trả lời này sẽ giúp người khác. – Carl

4

Phát hành phiên bản ứng dụng miễn phí riêng biệt; sử dụng phiên bản trả tiền như thể đó là khóa cấp phép cho phiên bản miễn phí.

PackageManager manager = getPackageManager(); 
if (manager.checkSignatures("old.package.name", "new.package.name") 
    == PackageManager.SIGNATURE_MATCH) { 
    //full version 
} 
+0

Đây là giải pháp dễ nhất. Thiên tài! – hunterp

+1

Đây là một giải pháp dễ dàng, nhưng không yêu cầu người dùng phải giữ ứng dụng trả tiền cho ứng dụng cũ, ngay cả khi họ không sử dụng nó nữa? –

+0

Bạn có thể chạy kiểm tra một lần, nếu người dùng đã cài đặt ứng dụng trả tiền, sau đó lưu trữ kết quả đó trong lưu trữ liên tục để các lần chạy ứng dụng miễn phí tiếp theo luôn chạy phiên bản đầy đủ. Sau khi hoàn tất, bạn có thể hiển thị hộp thoại cho người dùng yêu cầu họ gỡ cài đặt phiên bản trả tiền. – donturner