- PVSM.RU - https://www.pvsm.ru -
Когда-то давно, во времена Unity 4 добавление внутриигровых покупок вызывало некоторые трудности. Можно было идти двумя путями: использовать какой-либо плагин из уже существующих или реализовывать свою обертку над нативными функциями для каждой платформы. В первом случае было несколько решений: Soomla, OpenIAB, Prime и много-много других. Некоторые из них были платными и стояли довольно дорого: цена Prime составляла около 70$. Некоторые были бесплатными и отказывались работать в iOS: OpenIAB.
И вот в версии Unity3D 5.3 появилась поддержка in-app purchases как говорится «из коробки». Этот простой инструмент позволяет легко внедрить в приложение покупки для наиболее популярных магазинов приложений.
Сейчас поддерживаются:
Для начала во вкладке Services необходимо кликнуть по полю In-App Purchasing и включить эту функцию. Также автоматически включается сервис аналитики, в котором потом можно посмотреть Revenue, Average Revenue Per Paying User (ARPPU), Average Revenue Per Daily Active User (ARPDAU).
Далее необходимо нажать на кнопку Import после чего, произойдет импорт всех необходимых ассетов в проект.
Теперь необходимо добавить код для работы с IAP. Этот C# скрипт [1] содержит в себе следующие функции:
Чтобы было более понятней как применять скрипт, приведу пример. Есть две покупки: одна NonConsumable — отключение рекламы, вторая Consumable — дает игроку 80 монет. Используются две платформы: Google Play, AppStore. Для каждой покупки необходимо объявить три константы, содержащие в себе идентификаторы покупок UnityIAP, Google Play и AppStore.
public const string pMoney80 = "money_80";
public const string pNoAds = "no_ads";
public const string pMoney80AppStore = "app_money_80";
public const string pNoAdsAppStore = "app_no_ads";
public const string pMoney80GooglePlay = "gp_money_80";
public const string pNoAdsGooglePlay = "gp_no_ads";
После этого, в функцию инициализации, необходимо передать эти константы:
builder.AddProduct(pMoney80, ProductType.Consumable, new IDs() { { pMoney80AppStore, AppleAppStore.Name }, { pMoney80GooglePlay, GooglePlay.Name } });
builder.AddProduct(pNoAds, ProductType.NonConsumable, new IDs() { { pNoAdsAppStore, AppleAppStore.Name }, { pNoAdsGooglePlay, GooglePlay.Name } });
Теперь на кнопку покупки предмета, необходимо повесить функцию BuyProductID с передачей ей в качестве параметра идентификатора продаваемого предмета.
А в функции PurchaseProcessingResult добавить действия для каждой из покупок.
if (String.Equals(args.purchasedProduct.definition.id, pMoney80, StringComparison.Ordinal))
{
//Action for money
ResourceManager.Instance.Money += 80;
}
else if (String.Equals(args.purchasedProduct.definition.id, pNoAds, StringComparison.Ordinal))
{
//Action for no ads
ResourceManager.Instance.NoAds = true;
}
Вот и все. Остается только не забыть создать покупки с такими же идентификаторами в AppStore и Google Play.
Автор: Desu0x
Источник [2]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/gamedev/236478
Ссылки в тексте:
[1] Этот C# скрипт: https://github.com/shlapkoff/unity3d-iap-script/blob/master/InAppManager.cs
[2] Источник: https://habrahabr.ru/post/320224/?utm_source=habrahabr&utm_medium=rss&utm_campaign=sandbox
Нажмите здесь для печати.