Начало работы с витриной кросс-промо (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:
Для добавления через отдельные модули:
Чтобы добавить все модули mrgs:
Шаг 3. Установите зависимости
- Выполните
pod install(илиpod install --repo-updateесли необходимо) - Импортируйте модуль в коде:
@import MRGServiceKit;или@import MRGSShowcase;или#import <MRGSShowcase/MRGSShowcase.h>
Шаг 1. Добавьте зависимости
Добавьте зависимость в ваш Cartfile:
Шаг 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файл:Скопируйте файл 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. Установите делегат🔗
Затем необходимо установить делегат (см. комментарий в коде ниже) для получения уведомлений.
// 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. Покажите витрину🔗
Для показа воспользуйтесь методом:
Это относится только к 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();
Дата создания: 2021-03-19