2015-02-25 2 views
0

У меня есть приложение для Android, которое поставляется в двух версиях: бесплатное и премиальное с большим количеством функций стоимостью 0,99 доллара США.Слияние платного Android-приложения с бесплатной версией

Я хотел бы перейти к подходу In App Purchase, где премиальные функции можно купить в бесплатной версии. Тем не менее, я, очевидно, не хочу расстраивать своих пользователей, которые уже купили платное приложение.

Есть ли проверенный способ объединить отдельные приложения freemium в один?

Прямо сейчас, я рассматриваю решение, с которым у меня была бы бесплатная версия, автоматически разблокировать ее платные функции, если она обнаружит, что платная версия приложения установлена ​​на устройстве. Я думал об использовании межпроцессного взаимодействия между приложениями. Тем не менее, я не знаком с IPC, особенно на Android, и я не уверен, что он применим здесь или является особенно надежным.

ответ

1

Тем не менее, я, очевидно, не хочу расстраивать своих пользователей, которые уже купили платное приложение.

Если вы не платите меньше за IAP, чем за платное приложение, чтобы получить те же функции, я не уверен, как это приведет к жалобам пользователей. Платили ли они раньше или позже, если это такая же цена, это не имеет значения.

Я рассматриваю решение, с которым у меня была бы бесплатная версия, автоматически разблокировать ее платные функции, если она обнаружит, что платная версия приложения установлена ​​на устройстве.

Это можно сделать довольно просто, запросив PackageManager, чтобы узнать, установлено ли другое приложение. Что-то вроде:

try { 
    PackageInfo info = getPackageManager().getPackageInfo("com.example.paidapp", 0); 

    //If we got here, the paid app is installed. 
    // You can even check metadata, like which version they have 
    int installedVersion = info.versionCode; 
} catch (PackageManager.NameNotFoundException e) { 
    //Paid app is not installed! 
} 

Некоторые приложения сделали это по разным причинам, используя «платную» пакет в качестве ключа в бесплатное приложение, так что это не без прецедента.

Единственный IPC, к которому, возможно, потребуется принять участие, будет, если вы хотите как-то прочитать некоторые сохраненные данные из платного приложения в бесплатное приложение. В этом случае я бы предложил реализовать ContentProvider, чтобы вывести элементы данных, которые вам нужны, в другое приложение. Я также защитил бы этого провайдера с разрешением signature, чтобы доступ к нему могли получить только ваши приложения.

+0

Таким образом, это устойчиво к спуфингам (метод диспетчера пакетов)? Я чувствую, что кто-то может обойти его, установив пустое приложение, имеющее имя пакета моего платного приложения ... – you786

+0

Nevermind, по-видимому, я могу проверить подписи приложений и посмотреть, совпадают ли они! Потрясающие. – you786

+0

Правильно. Это также означает, что разрешение на уровне подписки приходит. Если вам нужно/нужно подключиться к приложению для проверки чего-либо, разрешение на уровне подписки может быть предоставлено только двум приложениям, подписанным с одним и тем же ключом. – Devunwired

Смежные вопросы