Подтвердить что ты не робот

Как освободить плагин приложения с Android Market?

Может ли кто-нибудь описать мне решение для внедрения плагина внутри приложения для Android и как его можно будет продавать на Android Market?

Как правило, вы создаете игру, чьи 4 первых уровня бесплатны. Затем пользователь должен что-то купить с помощью Android Market, чтобы разблокировать дополнительные уровни.

Решением может быть список пакетов, настроенных на телефоне с именем com.company.myApp.additionalLevelSet1, но он вообще не выглядит безопасным! (пользователь может вручную настроить пакеты плагинов и так свободно разблокировать дополнительные функции)

На iPhone вы можете использовать InAppPurchase для покупки нерасходуемых или расходных материалов.

Любая помощь или предложение будут оценены. Спасибо!

4b9b3361

Ответ 1

В вашем случае это довольно просто, так как вам не нужна дополнительная логика, а всего лишь несколько уровней, поэтому я буду придерживаться этого конкретного случая:

Вы можете (или, возможно, уже сделали), чтобы ваши уровни игры были сохранены как ресурсы в вашем .apk, поэтому подключаемый модуль может быть стандартным .apk, который не будет отображаться в списке пользователей -Программы. Чтобы предотвратить его появление, просто не объявляйте пусковую установку категории:

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

Как только сниппп выше НЕ появится в вашем плагине AndroidManifest, он не будет напрямую доступен пользователю.

Когда начнется ваша основная игровая активность, он должен проверить наличие плагинов, вы можете сделать это, вызвав PackageManager.queryIntentActivities. И запрос на конкретное намерение, которое вы указали в файле AndroidManifest вашего плагина, например:

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

Тогда код запроса:

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

Есть много способов сделать это, но это довольно тривиально и прямо.

Последний шаг - получить доступ к уровням установленных пакетов уровней. Вы можете сделать это, вызвав: PackageManager.getResourcesForActivity и загрузить соответствующие ресурсы и использовать их так, как вы.

Ответ 2

То, что я видел до сих пор на Android Market, - совершенно другая версия приложений для бесплатного и платного контента того же приложения.

Я еще не заглянул в плагины, поэтому я не знаю, доступна ли эта функция, но если вы не можете найти ее обходным решением, можно запустить приложения и скрыть их из приложения добавления в домашнее меню и/или контекстное меню и просто добавьте ссылку на него внутри основного приложения.

Другим обходным решением является обработка вашего дополнительного контента, такого как платные библиотеки контента, и просто блокировка доступа к уровню, если ресурс недоступен. Но вы должны проверить, имеете ли вы право иметь частные librairies, которые отделены от вашего приложения.

В основном то, что вы хотите сделать, это именно то, что хостингторы контента, такие как Apple и Android, пытаются избежать или контролировать, поскольку это позволит вам передавать новый контент в ваше приложение без хоста контента, зная, что это действительно новый контент для другого приложения.

Я предлагаю вам прочитать это, чтобы понять, почему несколько приложений для приложений не очевидны в Android: Android Security