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

Начало работы кросс-промо (Пилигрим)🔗

Для интеграции кросс-промо (Пилигрим) необходимо выполнить несколько простых шагов

Шаг 1. Импортируйте модуль кросс-промо🔗

  • Добавьте модуль MRGSAdvertising

    Unity:

    Добавление в проект (общая инструкция)

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

    iOS:

    Добавление в проект (общая инструкция)

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

    Через Package collection

    • В Xcode выберите File > Add Packages
    • Выберите «+» > "Add Swift Package Collection"
    • Вставьте URL: https://mrgs-nexus.my.games/repository/ios-sdks/MRGSPackageCollection.json
    • Выберите модуль MRGSAdvertising из "MRGS Package Collection".
    • Или вы можете выбрать пакет «MRGS» из "MRGS Package Collection" (содержит все модули mrgs в качестве продуктов), а затем выбрать только продукт "MRGS/Advertising".

    Отдельными пакетами

    • В Xcode выберите File > Add Packages
    • В строке поиска в правом верхнем углу вставьте URL: https://mrgs-gitea.my.games/mrgs/mrgsadvertising-ios-sdk.git
    • Добавьте модуль в свой проект
    • Или вы можете вставить URL https://mrgs-gitea.my.games/mrgs/ios-sdks.git, чтобы подключить пакет "MRGS", который содержит все модули mrgs в качестве продуктов, а затем выбрать только продукт "MRGS/Advertising".

    Шаг 2. Добавьте поддержку категорий ObjectiveC

    • В настройках проекта установите флаг -ObjC в поле "Other linker Flags".
    • Импортируйте модуль в коде: @import MRGServiceKit; или @import MRGSAdvertising; или #import <MRGSAdvertising/MRGSAdvertising.h>

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

    В вашем podfile добавьте источники в начало файла:

    source 'https://github.com/CocoaPods/Specs.git' # For main repo
    source 'https://mrgs-gitea.my.games/mrgs/cocoapods-specs.git'  # For MRGS repo
    

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

    В target добавьте последнюю версию MRGSAdvertising:

    Чтобы добавить через subspecs:

    target 'MyProject' do
        pod 'MRGS', '~> 5.0.0', :subspecs => ['Advertising']
    end
    

    Для добавления через отдельные модули:

    target 'MyProject' do
        pod 'MRGSAdvertising', '~> 5.0.0'
    end
    

    Чтобы добавить все модули mrgs:

    target 'MyProject' do
        pod 'MRGS/AllKits', '~> 5.0.0'
    end
    

    Шаг 3. Установите зависимости

    • Выполните pod install (или pod install --repo-update если необходимо)
    • Импортируйте модуль в коде: @import MRGServiceKit; или @import MRGSAdvertising; или #import <MRGSAdvertising/MRGSAdvertising.h>

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

    Добавьте зависимость в ваш Cartfile:

    binary "https://mrgs-nexus.my.games/repository/ios-sdks/MRGSAdvertising/MRGSAdvertising.json" ~> 5.0.0
    

    Шаг 2. Установите зависимости

    • Выполните carthage update --use-xcframeworks
    • Добавьте загруженные фреймворки в свой проект (убедитесь, что опция "do not embed" включена)
    • В настройках проекта установите флаг -ObjC в поле "Other linker Flags".
    • Импортируйте модуль в коде: @import MRGServiceKit; или @import MRGSAdvertising; или #import <MRGSAdvertising/MRGSAdvertising.h>
    • Загрузите последнюю версию библиотеки. Распакуйте архив.
    • Добавьте MRGSAdvertising.xcframework из скачанного архива в ваш проект (Перетащите библиотеки в раздел "Linked frameworks and Libraries") (для совместимости в архиве также находится MRGSAdvertising.framework - fat framework старого вида)

    • В настройках проекта установите флаг -ObjC в поле "Other linker Flags".

    • Импортируйте модуль в коде: @import MRGSAdvertising; или #import <MRGSAdvertising/MRGSAdvertising.h>
    • Также, вы можете добавить из архива файлы MRGServiceKit.h и module.modulemap в свой проект, либо в настройках проекта укажите путь до них в разделе Build Settings -> Header search paths. Теперь вместо импорта каждого из наших фреймворков по отдельности, вы можете импортировать только один заголовочный файл: @import MRGServiceKit;

    Android:

    Добавьте зависимость в build.gradle файл:

    dependencies {
        def mrgsVersion = "6.x.x"
    
        implementation "games.my.mrgs:advertising:$mrgsVersion"
    }
    

    Скопируйте файл MRGSAdvertising.aar в директорию libs вашего проекта. Добавьте необходимые зависимости в файл build.gradle

    dependencies {
        //...
        implementation(name: 'MRGSAdvertising', ext:'aar')
    
        implementation 'androidx.appcompat:appcompat:1.6.1'
        implementation 'androidx.recyclerview:recyclerview:1.2.1'
        implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
        implementation 'androidx.vectordrawable:vectordrawable:1.1.0'
    }
    

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

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

Шаг 2. Создайте объект рекламы🔗

Первым делом необходимо создать объект работы с рекламой. Вы можете работать со статической рекламой, или с видеорекламой и playable ads.

Для инициализации объекта воспользуйтесь методами:

// Static Ad
MRGSAdvertising staticAD = MRGSAdvertising.GetBanner();

// Video or playable ad
MRGSAdvertising videoAD = MRGSAdvertising.GetVideo();
//Статическая реклама
MRGSAdvertising* staticAD = [[MRGSAdvertisingManager sharedInstance] getAdvertising]; //Взять рекламу из общего массива

//Видеореклама или playable ad
MRGSAdvertising* videoAD = [[MRGSAdvertisingManager sharedInstance] createAdvertising:YES]; //YES указывает, что этот объект будет получать только видеоконтент и playable ads
//Статическая реклама
MRGSAdvert staticAD = MRGSAdvertisingFactory.getMRGSAdvertising();

//Видеореклама или playable ad
MRGSAdvert videoAD = MRGSAdvertisingFactory.createMRGSAdvertising(true); //true указывает, что этот объект будет получать только видеоконтент

Только для iOS и Android

Обратите внимание. Работа с видеорекламой аналогична отображению статического баннера. Основное отличие в том, что надо использовать не заранее созданные объект, а создать его вручную, указав что он будет работать только с видеоконтентом.

Шаг 3. Установите делегаты🔗

Затем необходимо установить делегат загрузки (протокол MRGSAdvertisingLoadDelegate) и делегат показа (протокол MRGSAdvertisingShowDelegate). Для установки воспользуйтесь методами:

// Set the delegate to be called on successful or unsuccessful download operation
// Conforms to MRGSAdvertising.ILoadDelegate
MRGSAdvertising.GetBanner().LoadDelegate = this;

// Set a delegate that will be called at the end of the view
// Conforms to MRGSAdvertising.IShowDelegate
MRGSAdvertising.GetBanner().ShowDelegate = this;
MRGSAdvertising* adv = //...

//установить делегат, который будет вызван, в случае успешной или неуспешной операции загрузки
[adv setLoadDelegate:self];
//установить делегат, который будет вызван по окончанию просмотра
[adv setShowDelegate:self];
MRGSAdvert adv = // ...

//установить делегат, который будет вызван, в случае успешной или неуспешной операции загрузки
adv.setLoadDelegate(this);
//установить делегат, который будет вызван по окончанию просмотра
adv.setShowDelegate(this);

Шаг 4. Загрузите рекламу🔗

После установки всех необходимых параметров, необходимо загрузить рекламу с сервера MRGS.

Для того, чтобы произвести загрузку, воспользуйтесь методом:

// Will check for content and load it
// Static
MRGSAdvertising.GetBanner().LoadContent();

// Will check for content and load it
// Video
MRGSAdvertising.GetVideo().LoadContent();
- (void)loadContent;

//То есть:
MRGSAdvertising* adv = //...
//Инициализация и установка делегатов...

[adv loadContent]; //этот метод проверит наличие контента и загрузит его
//То есть:
MRGSAdvert adv = // ...
//Инициализация и установка делегатов...

adv.loadContent(); //этот метод проверит наличие контента и загрузит его

После загрузки рекламы у объекта делегата будет вызван один из методов:

public void OnAdvertisingLoaded()
{
    // Download completed successfully
}

public void OnAdvertisingLoadingError()
{
    // Ad loading error
}
//Успешное завершение загрузки
- (void)onAdvertisingLoaded

//Ошибка загрузки рекламы
- (void)onAdvertisingLoadingError:(MRGSAdvertising*)advertising;
//Успешное завершение загрузки
onAdvertisingLoaded()

//Ошибка загрузки рекламы
onAdvertisingLoadingError()

Убедитесь в наличии настроенной рекламы на сервере

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

Шаг 5. Покажите рекламу🔗

После того, как реклама была загружена, Вы можете показать ее пользователю, для этого воспользуйтесь методом:

// Static
// Show ads. Optianally, you can set a payload that will be sent to your server after the ad has been shown.
MRGSAdvertising.GetBanner().ShowContent();

// Video
// Show ads. Optianally, you can set a payload that will be sent to your server after the ad has been shown.
MRGSAdvertising.GetVideo().ShowContent("test_payload");
- (void)showContentFromUIViewController:(UIViewController *)viewController;

//То есть:
MRGSAdvertising* adv = //...

[adv showContentFromUIViewController:self];
//То есть:
MRGSAdvert adv = // ...

adv.showContent();

После этого будет открыто окно рекламы. Для того, чтобы узнать о завершении показа и действии пользователя, будет вызван метод у объекта делегата

public void OnAdvertisingFinished(bool skipped)
{
    // Finished
}
- (void)onAdvertisingFinished:(MRGSAdvertising*)advertising wasSkipped:(BOOL)skipped;
void onAdvertisingFinished(boolean skipped)

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

Важно

Перед вызовом метода показа рекламы необходимо выключить убавить (mute) звук в игре, так как в баннере может использоваться видео с проигрыванием музыки. После срабатывания callback метода завершения показа звук можно опять включить.

Пример🔗

void LoadAdverts{
    // Static
    MRGSAdvertising.GetBanner().LoadDelegate = this;
    MRGSAdvertising.GetBanner().ShowDelegate = this;
    MRGSAdvertising.GetBanner().LoadContent();

    // Video
    MRGSAdvertising.GetVideo().LoadDelegate = this;
    MRGSAdvertising.GetVideo().ShowDelegate = this;
    MRGSAdvertising.GetVideo().LoadContent();
}

public void OnAdvertisingLoaded()
{
    MRGSLog.Instance.AddLog("MRGS OnAdvertisingLoaded: ");
    if (MRGSAdvertising.GetBanner().CanShowContent()){
        MRGSAdvertising.GetBanner().ShowContent();
    }

    if (MRGSAdvertising.getVideo().CanShowContent()){
        //Video Content Loaded
        // Mute the sound in the app, as there may be music in the video
        MRGSAdvertising.GetVideo().ShowContent();
    }
}

public void OnAdvertisingLoadingError()
{
    MRGSLog.Instance.AddLog("MRGS OnAdvertisingLoadingError: ");
}

public void OnAdvertisingFinished(bool skipped)
{
    MRGSLog.Instance.AddLog("MRGS OnAdvertisingFinished: " + skipped);
}
@property (nonatomic, strong) MRGSAdvertising* videoAD;

- (void)viewDidLoad {
    //Статическая реклама
    MRGSAdvertising* staticAD = [[MRGSAdvertisingManager sharedInstance] getAdvertising];
    [staticAD setLoadDelegate:self]; // где self - это объект реализующий протокол MRGSAdvertisingLoadDelegate
    [staticAD setShowDelegate:self]; // где self - это объект реализующий протокол MRGSAdvertisingShowDelegate
    [staticAD loadContent]; // этот метод проверит наличие контента и загрузит его

    //Видеореклама
    videoAD = [[MRGSAdvertisingManager sharedInstance] createAdvertising:YES]; //YES указывает, что этот объект будет получать только видеоконтент
    [videoAD setLoadDelegate:self]; // где self - это объект реализующий протокол MRGSAdvertisingLoadDelegate
    [videoAD setShowDelegate:self]; // где self - это объект реализующий протокол MRGSAdvertisingShowDelegate
    [videoAD loadContent]; // этот метод проверит наличие контента и загрузит его
}

#pragma mark - Advertising delegate

- (void)onAdvertisingLoaded:(MRGSAdvertising*)advertising {
    if(advertising == videoAD){
    //Video Content Loaded
    //Убрать звук в игре, так как в видео может быть музыка
    }

    [advertising showContentFromUIViewController:self];

    //Или
    //[[[MRGSAdvertisingManager sharedInstance] getAdvertising] showContentFromUIViewController:self]; //Получение рекламы из общего массива
}

- (void)onAdvertisingLoadingError:(MRGSAdvertising*)advertising {
    NSLog(@"Advertising loading error!");
}

- (void)onAdvertisingFinished:(MRGSAdvertising*)advertising wasSkipped:(BOOL)skipped {
    NSLog(@"Advertising finished! User %@", skipped ? @"skipped" : @"not skipped);
    //Продолжаем работу
}
public class AdvertisingManager implements MRGSAdvert.LoadDelegate, MRGSAdvert.ShowDelegate {
    private final MRGSAdvert staticAds;
    private final MRGSAdvert videoAds;

    public AdvertisingManager() {
        staticAds = MRGSAdvertisingFactory.getMRGSAdvertising();
        videoAds = MRGSAdvertisingFactory.createMRGSAdvertising(true);

        staticAds.setLoadDelegate(this);
        staticAds.setShowDelegate(this);

        videoAds.setLoadDelegate(this);
        videoAds.setShowDelegate(this);
    }

    public void loadAdverts() {
        staticAds.loadContent();
        videoAds.loadContent();
    }

    public void showStaticAds() {
        if (staticAds.canShowContent()) videoAds.showContent();
    }

    public void showVideoAds() {
        if (videoAds.canShowContent()) videoAds.showContent();
    }

    @Override
    public void onAdvertisingLoaded() {
        //Можно показать рекламу
    }

    @Override
    public void onAdvertisingLoadingError() {
    }

    @Override
    public void onAdvertisingFinished(boolean skipped) {

    }
}

Последнее обновление: 2023-10-25
Дата создания: 2020-02-05