2011-01-26 35 views
20

Ai đó có thể mô tả cho tôi một giải pháp để triển khai plugin bên trong ứng dụng Android và cách nó có thể được bán trên Android Market?Cách phát hành plugin ứng dụng bằng Android Market?

Thông thường, bạn tạo trò chơi có 4 cấp độ đầu tiên miễn phí. Sau đó, người dùng nên mua thứ gì đó bằng cách sử dụng Android Market để mở khóa các cấp bổ sung.

Một giải pháp có thể liệt kê các gói được thiết lập trên điện thoại có tên com.company.myApp.additionalLevelSet1 nhưng có vẻ như không an toàn chút nào! (người dùng có thể tự thiết lập các gói plugin và mở khóa các tính năng bổ sung một cách tự do)

Trên iPhone, bạn có thể sử dụng InAppPurchase để mua các sản phẩm không tiêu thụ hoặc tiêu hao.

Bất kỳ trợ giúp hoặc đề xuất nào sẽ được đánh giá cao. Cảm ơn!

+0

Google gần đây đã thông báo rằng mua hàng trong ứng dụng sẽ sớm được đưa ra thị trường. – tamasd

Trả lời

27

Nó khá đơn giản trong trường hợp của bạn, vì bạn không cần bất kỳ logic thêm, nhưng chỉ mức độ nhiều hơn, vì vậy tôi sẽ dính vào trường hợp cụ thể này:

bạn có thể (hoặc có thể đã làm) đã cấp trò chơi của bạn lưu lại dưới dạng nguồn trong .apk của bạn, do đó, một plug in có thể là một .apk tiêu chuẩn, sẽ không xuất hiện trong danh sách ứng dụng người dùng. Để ngăn chặn nó xuất hiện, chỉ đơn giản là không khai báo các loại-launcher:

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

Khi đoạn mã trên không KHÔNG xuất hiện trong AndroidManifest của plugin của bạn, nó sẽ không thể truy cập trực tiếp đến người sử dụng.

Khi hoạt động trò chơi chính của bạn bắt đầu, cần kiểm tra sự tồn tại của plugin, bạn có thể thực hiện bằng cách gọi PackageManager.queryIntentActivities.Và truy vấn cho một mục đích cụ thể mà bạn khai báo trong file AndroidManifest của plugin của bạn, ví dụ:

<intent-filter> 
    <action android:name="com.your.package.name.LEVEL_PACK" /> 
</intent-filter> 

Mã truy vấn sau đó sẽ là:

PackageManager packageManager = getPackageManager(); 
Intent levelsIntent = new Intent("com.your.package.name.LEVEL_PACK"); 
List<ResolveInfo> levelPacks = packageManager.queryIntentActivities(levelsIntent, 0); 

Có nhiều cách để làm điều này, nhưng điều này là khá tầm thường và thẳng về phía trước.

Bước cuối cùng là truy cập các cấp từ các gói cấp đã cài đặt. Bạn có thể làm điều này bằng cách gọi: PackageManager.getResourcesForActivity và tải các tài nguyên có liên quan và sử dụng chúng theo ý muốn.

+0

Cảm ơn câu trả lời của bạn đã bị xóa về quy trình. Tuy nhiên, bạn có biết nếu một giải pháp tồn tại để chống lại một người dùng có thể tìm thấy APK plugin, cài đặt nó theo cách thủ công và sau đó nhận được các cấp bổ sung một cách tự do? Có lẽ đó là một câu hỏi ngu ngốc ... – Sly

+0

Đây là một câu hỏi chung chung hơn - theo như tôi biết không có trò chơi/ứng dụng "không thể quản lý", cách bảo mật nhất là có máy chủ của riêng bạn và ứng dụng sẽ kiểm tra nó nếu các cấp được cài đặt ... Và mỗi cấp gói cài đặt nên báo cáo cho máy chủ ... Huge overkill tất nhiên :) – Devenv

+1

@Lior: Bạn có thể liệt kê những cách khác cho vấn đề trên? – kAnNaN

0

Điều tôi đã thấy cho đến nay trên Android Market là phiên bản ứng dụng hoàn toàn khác với nội dung miễn phí và trả phí của cùng một ứng dụng.

Tôi chưa xem xét plug-in nên tôi không biết liệu tính năng này có khả dụng hay không, nhưng nếu bạn không thể tìm ra giải pháp có thể là khởi chạy ứng dụng và ẩn chúng khỏi ứng dụng thêm vào menu chính và/hoặc menu lối tắt và chỉ cần thêm liên kết vào menu bên trong ứng dụng chính.

Cách giải quyết khác là xử lý nội dung bổ sung của bạn như thư viện nội dung trả phí và chỉ chặn truy cập cấp nếu tài nguyên không thể truy cập. Nhưng bạn phải xác minh xem bạn có quyền có quyền riêng tư riêng biệt với ứng dụng của mình hay không.

Về cơ bản những gì bạn đang tìm kiếm để làm là chính xác những gì hosters nội dung như Apple và Android đang cố gắng tránh hoặc kiểm soát vì nó sẽ cho phép bạn truyền tải nội dung mới để ứng dụng của bạn mà không cần máy chủ nội dung biết nó thực sự mới nội dung cho một ứng dụng khác.

tôi đề nghị bạn đọc để hiểu tại sao một ứng dụng ứng dụng nhiều là không rõ ràng trong Android: Android Security

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