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

Начало работы с витриной кросс-промо (Showcase)🔗

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

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

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

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

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

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

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

    • В настройках проекта установите флаг -ObjC в поле "Other linker Flags".
    • Импортируйте модуль в коде: @import MRGServiceKit; или @import MRGSShowcase; или #import <MRGSShowcase/MRGSShowcase.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 добавьте последнюю версию MRGSShowcase:

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

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

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

    target 'MyProject' do
        pod 'MRGSShowcase', '~> 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 MRGSShowcase; или #import <MRGSShowcase/MRGSShowcase.h>

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

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

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

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

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

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

    • Импортируйте модуль в коде: @import MRGSShowcase; или #import <MRGSShowcase/MRGSShowcase.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:showcase:$mrgsVersion"
    }
    

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

    dependencies {
        //...
        implementation(name: 'MRGSShowcase', 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'
    }
    

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

Затем необходимо установить делегат (см. комментарий в коде ниже) для получения уведомлений.

 // Where this - implementation of IMRGSShowcaseDelegate
MRGSShowcase.Instance.Delegate = this;
// Where this - implementation of MRGSShowcaseDelegate
[MRGSShowcase sharedInstance].delegate = self;
// Set a listener of a new content event, where this - implementation of MRGSShowcase.OnNewContentListener
MRGSShowcase.getInstance().setNewContentListener(this);

// // Set a listener of a close showcase event, where this - implementation of MRGSShowcase.OnShowListener
MRGSShowcase.getInstance().setShowListener(this);

Далее необходимо реализовать методы делегата, который Вы установили ранее:

// Will be called when Showcase has something new and not yet seen by the user
// If this method is called, you need to mark the path to Showcase with circles in the game
public void OnReceiveNewShowcaseContent(int numberOfNewEvents)
{
    Debug.Log("Received new events in MRGSShowcase - " + numberOfNewEvents);
    // Show the user an invitation to open Showcase
}
// Will be called when Showcase has something new and not yet seen by the user
// If this method is called, you need to mark the path to Showcase with circles in the gameShowcase в игре.
-(void)didReceiveNewShowcaseContent:(NSNumber *)numberOfNewEvents{
    NSLog(@"Received didReceiveNewShowcaseContent delegate callback with number - %@", numberOfNewEvents);
    // Show the user an invitation to open Showcase
}
// Will be called when Showcase has something new and not yet seen by the user
// If this method is called, you need to mark the path to Showcase with circles in the game
void onNewContent(int countContents) {
    // Show the user an invitation to open Showcase
}

void onShowFinished() {
     // Will be called after showcase close
}

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

Шаг 3. Покажите витрину🔗

Для показа воспользуйтесь методом:

MRGSShowcase.Instance.Present(() => {
    Debug.Log("MRGSShowcase closed callback");
    // Will be called after closing Showcase
});
[[MRGSShowcase sharedInstance] presentShowcaseFromViewController:self withCompletionHandler:^{
    NSLog(@"Received callback on closing MRGSShowcase");
    // Will be called after closing Showcase
}];
MRGSShowcase.getInstance().showContent();

Это относится только к Android.

В настоящее время Unity под Android поддерживает только singleTask launchMod для своего основного Unity Activity. Смотрите Unity документацию и Android документацию.

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

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

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

Пример🔗

// Set a delegate
MRGSShowcase.Instance.Delegate = this;

// ...
// Implementation of the delegate
public void OnReceiveNewShowcaseContent(int numberOfNewEvents)
{
    Debug.Log("Received new events in MRGSShowcase - " + numberOfNewEvents);
    // Show the user an invitation to open Showcase
}

// ...
// Call to show content:
MRGSShowcase.Instance.Present(() => {
    Debug.Log("MRGSShowcase closed callback");
    // Will be called after closing Showcase
});
// Set a delegate
[MRGSShowcase sharedInstance].delegate = self;

// ...
// Implementation of the delegate
-(void)didReceiveNewShowcaseContent:(NSNumber *)numberOfNewEvents{
    NSLog(@"Received didReceiveNewShowcaseContent delegate callback with number - %@", numberOfNewEvents);
    // Show the user an invitation to open Showcase
}

// ...
// Call to show content:
[[MRGSShowcase sharedInstance] presentShowcaseFromViewController:self withCompletionHandler:^{
    NSLog(@"Received callback on closing MRGSShowcase");
    // Will be called after closing Showcase
}];
// Set listeners
MRGSShowcase.getInstance().setNewContentListener(this);
MRGSShowcase.getInstance().setShowListener(this);

// ...
// Implementations of listeners 
void onNewContent(int countContents){
    // Show the user an invitation to open Showcase
}

void onShowFinished(){
     // Will be called after closing Showcase
}

// ...
// Call to show content:
MRGSShowcase.getInstance().showContent();

Возможности для Android🔗

Смена ориентации экрана🔗

По умолчанию Витрина наследует поведение родительского Activity, при помощи настроек android:screenOrientation="behind". Если вам нужно изменить данное поведение, можно переопределить настройки в своем AndroidManifest.xml файле, изменив behind на любой другой желаемый параметр. См. поддерживаемые параметры android:screenOrientation

Пример с sensorLandscape - поддержка горизонтального режима в обоих направлениях (определяется датчиком устройства):

<manifest
    ...
    xmlns:tools="http://schemas.android.com/tools">
    <application>
            ... 
            <activity
                android:name="games.my.mrgs.showcase.internal.ui.showcase.ShowcaseActivity"
                android:configChanges="orientation|screenSize"
                android:launchMode="singleTop"
                android:screenOrientation="sensorLandscape"
                android:theme="@style/MrgsShowcaseTheme"
                tools:replace="android:screenOrientation"/>
    </application>
</manifest>

Тестирование🔗

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

Для тестирования воспользуйтесь следующими методами:

// Clear cache
// When testing the delegate, it is necessary that the delegate indicating new bonuses must be called when clearing the cache during the next launch
MRGSShowcase.Instance.ClearCache();

// Clear downloaded data (images) of the campaigns
// This method can be used to test the "clean" launch of Showcase without pre-loaded data
MRGSShowcase.Instance.ClearLoadedData();
// Clear cache
// When testing the delegate, it is necessary that the delegate indicating new bonuses must be called when clearing the cache during the next launch
[[MRGSShowcase sharedInstance] clearShowcaseCache];

// Clear downloaded data (images) of the campaigns
// This method can be used to test the "clean" launch of Showcase without pre-loaded data
[[MRGSShowcase sharedInstance] clearShowcaseLoadedData];
// Clear cache
// When testing the delegate, it is necessary that the delegate indicating new bonuses must be called when clearing the cache during the next launch
MRGSShowcase.getInstance().clearCache();

// Clear downloaded data (images) of the campaigns
// This method can be used to test the "clean" launch of Showcase without pre-loaded data
MRGSShowcase.getInstance().clearLoadedData();

Последнее обновление: 2023-10-25
Дата создания: 2021-03-19