Перейти к содержанию

Подключение Unity SDK🔗

Минимальные требования🔗

Минимальная поддерживаемая версия Unity 2018.x, Android 4.4(API: 19), iOS 11.0 и XCode 14.1. Также базовый модуль MRGS поддерживает все платформы на Unity, например PlayStation, Switch, XBOX, OSX и др.

Интеграция🔗

Для интеграции библиотеки MRGS необходимо выполнить всего четыре простых шага

Шаг 1 - Добавьте библиотеку в проект🔗

Шаг 1. Добавьте источники

Для того, чтобы добавить MRGS в проект через Unity Package Manager (доступно с Unity 2018+) просто добавьте в файл Packages/manifest.json раздел scopedRegistries, добавив в него следующую запись:

{
    "dependencies": {
        ...
    },
    "scopedRegistries": [
            {
                "name": "MRGS",
                "url": "https://mrgs-nexus.my.games/repository/mrgs-uninty-plugins/",
                "scopes": [
                    "games.my.mrgs"
                ]
            }
    ]
}

Альтернативно, можно нажать Edit -> Project Settings -> Package Manager -> '+' in scoped registry section, и заполнить поля в соответствии с данными выше.

Шаг 2. Добавьте зависимость

  • Нажмите Window -> Package Manager -> select 'Packages: MyRegistries' from dropdown list, выберите пакет MRGService из списка, затем нажмите "Install"
  • Импортируйте модуль: using MRGS;
  • Загрузите последнюю версию библиотеки. Распакуйте архив.
  • (Для интеграции unitypackage) В Unity нажмите Assets -> Import Package -> Custom Package, и выберите пакет games.my.mrgs.core.unitypackage из скачанного архива.
  • (Для интеграции tgz) В Unity нажмите Window -> Package Manager -> '+' -> Add package from tarball, и выберите пакет games.my.mrgs.core-<version>.tgz из скачанного архива.
  • Импортируйте модуль: using MRGS;

Play services resolver

MRGS использует Play services resolver для резолва внешних зависимостей, как для iOS, так и в Android. В случае, если вы не хотите использовать Play services resolver на iOS/Android, то просто удалите его из проекта, или выключите резолвер в его настройках, тогда MRGS автоматически определит, что резолвер не используется, сам добавит в проект все необходимые сторонние зависимости, хранящиеся также локально в пакете. Данное правило применимо для всех модулей MRGS. Также вы можете вручную с помощью define установить настройку работы MRGS с резолвером - MRGS_ENABLE_RESOLVER / MRGS_DISABLE_RESOLVER. Также для каждого модуля можно отдельно включить данную функцию с помощью дефайнов вида MRGS_ENABLE_RESOLVER_<MODULE_NAME_WITHOUT_MRGS> / MRGS_DISABLE_RESOLVER_<MODULE_NAME_WITHOUT_MRGS> ( например, MRGS_ENABLE_RESOLVER_FIREBASE).

Huawei/AppTouch Store

Для поддержки Huawei/AppTouch Store следует добавить:
1) com.huawei.hms:ads-identifier:3.4.62.300 согласно документации.
2) com.huawei.hms:opendevice:6.11.0.300 согласно документации.

Шаг 2 - Вызовите метод инициализации🔗

Вызовите метод инициализации MRGService.Instance.Initialize() в методе Awake класса MonoBehaviour, отвечающего за основную сцену в вашем проекте. В качестве аргументов необходимо указать MRGS_APP_ID, CLIENT_SECRET.

using MRGS;

public class MasterController : MonoBehaviour
{
    void Awake()
    {
        // MRGService settings
        var serviceParams = new MRGServiceParams(MRGS_APP_ID, CLIENT_SECRET);

        // Requires Platform for Android application
        serviceParams.AndroidExtraOptions.Platform = MRGSPlatformAndroid.Android; // (1)!

        // Start SDK
        MRGService.Instance.Initialize(serviceParams);
    }
}
  1. Необходимо только при сборке под Android. Доступные платформы: Amazon, Android, Huawei, Samsung, and FacebookCloud

Android MRGSPlatform

При инициализации MRGService под Android, необходимо передать MRGSPlatform (то есть тот магазин, в который планируется выкладывать сборку).

MRGS_APP_ID и CLIENT_SECRET

MRGS_APP_ID - ID приложения на сайте MRGS. CLIENT_SECRET - Клиентский ключ. Их можно получить на сайте MRGS в разделе настройки вашего приложения
Важно! Не забывайте что эти параметры отличаются для Android и iOS сборки. Используйте правильные ключи инициализации app_settings

Внимание! Вызов любых методов (кроме GDPR) до вызова метода старта SDK может привести к неопределенному поведению MRGS. Будьте внимательны, не начинайте работу с MRGS до вызова метода инициализации!

Запрос трекинга пользователя на iOS 14+

В случае, если вы хотите показать попап запроса на разрешения трекинга (получения IDFA) в iOS 14, можете воспользоваться нашими методами показа. Обычно IDFA необходим для трекинга рекламы, подробнее можете прочитать по ссылке выше.

Шаг 3 (Опциональный) - Добавьте трекинг входа в игровой аккаунт🔗

Если ваше приложение использует идентификатор игрока (USER_ID), его необходимо передать в MRGS с помощью метода:

MRGSUsers.Instance.SetUserId(USER_ID);

Шаг 4 - Добавьте трекинг платежей🔗

После проведения платежа необходимо сообщить данные о нем в MRGS.

iOS

По умолчанию MRGS на iOS автоматически соберет все данные о платежах с помощью автотрекинга, дополнительно никаких действий делать не нужно.

В случае, если вы не хотите использовать автотрекинг, то вам необходимо выключить автоматическое отслеживание платежей (serviceParams.IOSExtraOptions.AutomaticPaymentTracking = false;), и воспользоваться методом для прямой передачи данных о платеже, описанным ниже (нерекомендуемый подход).

Для отправки данных о платеже вы можете воспользоваться методом:

MRGSMetrics.Instance.AddPurchase(MRGSPurchaseEvent);

// Or if you're using Unity IAP:
MRGSMetrics.Instance.AddPurchase(UnityEngine.Purchasing.Product);

В случае, если вы используете Unity IAP, и define UNITY_PURCHASING по какой-то причине не выставился у вас в проекте, вы можете принудительно включить видимость метода с помощью define MRGS_FORCE_UNITY_IAP

Примеры отправки данных о платеже на разных платформах:

Пример для Android (GooglePlay)

skuDetails - информация о товаре в формате JSON. Получить ее можно вызвав метод getSkuDetails
purchaseData - это INAPP_PURCHASE_DATA поле полученное из ответа Google после покупки getBuyIntent
dataSignature - это INAPP_DATA_SIGNATURE поле полученное из ответа Google после покупки getBuyIntent

var purchaseEvent = MRGSPurchaseEvent.Google(skuDetails, purchaseData, dataSignature);
MRGSMetrics.Instance.AddPurchase(purchaseEvent);
Пример для Huawei/AppTouch

inAppPurchaseDataJson - информация о покупке в формате JSON. Получить ее можно вызвав метод com.huawei.hms.iap.entity.PurchaseResultInfo#getInAppPurchaseData()
inAppSignature - зашифрованная платежная информация. Получить ее можно вызвав метод com.huawei.hms.iap.entity.PurchaseResultInfo#getInAppDataSignature()

var purchaseEvent = MRGSPurchaseEvent.Huawei(inAppPurchaseDataJson, inAppSignature);
MRGSMetrics.Instance.AddPurchase(purchaseEvent);
Пример для Samsung

productVoJson - информация о товаре в формате JSON. Получить ее можно вызвав метод com.samsung.android.sdk.iap.lib.vo.ProductVo#getJsonString()
purchaseVoJson - информация о покупке в формате JSON. Получить ее можно вызвав метод com.samsung.android.sdk.iap.lib.vo.PurchaseVo#getJsonString()

var purchaseEvent = MRGSPurchaseEvent.Samsung(productVoJson, purchaseVoJson);
MRGSMetrics.Instance.AddPurchase(purchaseEvent);
Пример для Amazon

productJson - информация о товаре в формате JSON. Получить ее можно вызвав метод com.amazon.device.iap.model.Product#toJSON()
receiptJson - информация о покупке в формате JSON. Получить ее можно вызвав метод com.amazon.device.iap.model.Receipt#toJSON()
userDataJson - информация о покупателе в формате JSON. Получить ее можно вызвав метод com.amazon.device.iap.model.UserData#toJSON()

var purchaseEvent = MRGSPurchaseEvent.Amazon(productJson, receiptJson, userDataJson);
MRGSMetrics.Instance.AddPurchase(purchaseEvent);
Пример для iOS

product - информация о продукте.
transactionIdentifier - идентификатор транзакции.
transactionReceipt - чек транзакции в старом формате base64 (не applicationReceipt).

// Setting SDK params
serviceParams.IOSExtraOptions.AutomaticPaymentTracking = false;

// Sending payment
var product = MRGSPurchaseEvent.Product.Builder("games.my.mrgs.weapon6")
        .WithLocalizedTitle("Great gold weapon")
        .WithLocalizedDescription("Destroy anyone with this gun. Limited edition!")
        .WithPrice("15")
        .WithPriceCurrency("USD")
        .Build();
var transactionIdentifier = "1000000353116913";
var transactionReceipt = "MIIVSwYJKoZIhvcNAQcCoIIVPDCCFTgCAQExCzAJBgUrDg.........85+V19vrPYvnHcHh8yZEpRhtmlRmlWN+AWhJmYjuu4SGfIzg3oo416EWIYV8tke3t8pmHGClmoO7q+478RDbnmuBROz/1NQdlevyeyFkae/VCDRQ==";

var purchaseEvent = MRGSPurchaseEvent.IOS(product, transactionIdentifier, transactionReceipt);
MRGSMetrics.Instance.AddPurchase(purchaseEvent);
Пример для Standalone платформы (Windows, OSX, PlayStation, Xbox, Switch и др.)
var product = MRGSPurchaseEvent.Product.Builder("weapon_34")
        .WithLocalizedTitle("Great gold weapon")
        .WithLocalizedDescription("Limited edition")
        .WithPrice("1234.5")
        .WithPriceCurrency("USD")
        .Build();
var transactionIdentifier = "123456789";
var purchaseEvent = MRGSPurchaseEvent.Standalone(transactionIdentifier, product);
MRGSMetrics.Instance.AddPurchase(purchaseEvent);
Пример для сторонних платежных систем

Начиная с версии MRGS 6.1.0, появилась возможность отправлять информацию по платежам для любых сторонних платежных систем в MRGS. К таким платежам не будет применяться валидация платежей, и такие платежи будут записываться в базу данных как есть:

var transactionId = "1234-5678-000-ABCD";
const string productId = "com.your.product.custom10";
const float price = 12f;
const string currency = "EUR";
var revenue = new MRGSPurchaseEvent.Revenue(transactionId, productId, price, currency)
{
    Title = "Custom Product",
    Description = "Custom product need for test",
};

var purchaseEvent = MRGSPurchaseEvent.CustomEvent(revenue);
MRGSMetrics.Instance.AddPurchase(purchaseEvent);

Важно

  • Трекинг платежей необходим в том случае, если вы не используете модуль MRGSBank.
  • Убедитесь, что на сайте https://mrgs.astrum.team в настройках вашего приложения заполнены поля с ключами для валидации платежей и включена настройка "Только валидация платежей (без обработки)".
  • MRGS автоматически отправит информацию о покупках во все настроенные SDK: AppsFlyer(только для iOS, Android, Huawei/AppTouch и Samsung покупок), Firebase(только для iOS и Android покупок), MyTracker(только для iOS и Android покупок), если подключены соответствующие модули
  • Автотрекинг на iOS автоматически отключается при использовании модуля MRGSBank.

Проверка интеграции🔗

После завершения интеграции MRGS, мы рекомендуем убедиться в том, что библиотека работает корректно. О том как провести данную процедуру, читайте в разделе Проверки интеграции и поиск неисправностей

Обновление SDK🔗

При обновлении SDK через Unity Package Manager достаточно обновить SDK в интерфейсе UPM, а в случае, если вы интегрировали .unitypackage решение, мы рекомендуем вам полностью удалить папку Assets/MRGS/<games.my.mrgs.<module_name>, после чего импортировать уже обновленную версию SDK.


Последнее обновление: 2025-01-21
Дата создания: 2020-01-20