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

Начало работы кросс-промо (Game center)🔗

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    • Добавьте bundle с ресурсами:

      • Добавьте MRGSGameCenterResources.bundle в проект, перетащив его в структуру проекта.
      • Перейдите к разделу "Copy Bundle Resources" во вкладке "Build Phases", нажмите "+", и выберите необходимый бандл.
    • В настройках проекта установите флаг -ObjC в поле "Other linker Flags".

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

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

    dependencies {
        //...
        implementation(name: 'MRGSGameCenter', 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 IMRGSGameCenterClientDelegate
MRGSGameCenter.Instance.Delegate = this;
// Where self - implementation of MRGSGamecenterClientDelegate
[MRGSGameCenter sharedInstance].delegate = self;
// Where this - implementation of MRGSGameCenterNewContentDelegate
MRGSGameCenter.getInstance().setNewContentDelegate(this);

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

// Will be called when Game Center has something new and not yet seen by the user
// If this method is called, you need to mark the path to Game Center with circles in the game
public void OnGameCenterHasNewBonuses()
{
    // Show an invitation to open Game Center to the user
}
// Will be called when Game Center has something new and not yet seen by the user
// If this method is called, you need to mark the path to Game Center with circles in the game
-(void)gameCenterHasNewBonuses;
// Will be called when Game Center has something new and not yet seen by the user
// If this method is called, you need to mark the path to Game Center with circles in the game
public void onNewGCContent() {
    // Show an invitation to open Game Center to the user
}

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

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

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

MRGSGameCenter.Instance.Show();
- (void) showGameCenterfromViewController:(nullable UIViewController*)controller withSocialClassObject:(nullable MRGSGameCenterSocialClass*)socialInfo  completion:(void (^ __nullable)(BOOL))completion;

То есть:
[[MRGSGameCenter sharedInstance] showGameCenterfromViewController:self withSocialClassObject:socialInfoFromApp completion:^(BOOL _) {
    //Этот код будет выполнен после закрытия GameCenter
}];
MRGSGameCenter.getInstance().open(this); // где this объект Activity

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

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

Пример🔗

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

// ...
// Implementation of the delegate
public void OnGameCenterHasNewBonuses()
{
    // Here we use markers to indicate the path to the button that opens the showcase
}

// ...
// По нажатию на кнопку необходимо вызвать метод показа:
MRGSGameCenter.Instance.Show();
// Set a delegate
[MRGSGameCenter sharedInstance].delegate = self;

// ...
// Implementation of the delegate
-(void)gameCenterHasNewBonuses{
    // Here we use markers to indicate the path to the button that opens the showcase
}

// ...
// Call this method to show content:
[[MRGSGameCenter sharedInstance] showGameCenterfromViewController:self withSocialClassObject:nil completion:^(BOOL _) {
    //This code will be executed after closing Game Center
}];
MRGSGameCenter.getInstance().setNewContentDelegate(this);

// Implementation of the delegate
public void onNewGCContent() {

}

// Call this method to show content:
MRGSGameCenter.getInstance().open(this);

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

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

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

// Clear server 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
MRGSGameCenter.Instance.ClearCache()

// Очистить загруженные данные(картинки) кампаний. 
// Данный метод можно использовать для тестирования "чистого" открытия геймцентра, без заранее загруженных данных.
MRGSGameCenter.Instance.ClearLoadedData()
// Clear server 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
[[MRGSGameCenter sharedInstance] clearGameCenterCache];

// Clear downloaded data (images) of the campaigns
// This method can be used to test the "clean" launch of Game Center without pre-loaded data
[[MRGSGameCenter sharedInstance] clearGameCenterLoadedData];
// There is no need for implementation. It is enough to open the system settings, find the game in the list of applications, open the information on it and click the "Clear cache" button
Что делать, если возникли проблемы с локализацией на iOS?

На iOS могут возникнуть ошибки с локализацией. Мы используем нативную локализацию, поэтому, сам проект должен ее поддерживать. Поэтому, если у вас возникли проблемы с локализацией, проверьте:

Первый вариант(более правильный и перспективный):

  • В настройках проекта в пункте с локализацией есть как минимум русский и английские языки
  • В проекте есть хотя бы один файл Localizble.strings (даже пустой), он локализован на русский и английский и он добавлен в таргет для сборки (в результате внутри собранного приложения будут папки с именем язык.lproj)
  • Дефолтный язык локализации проекта(XCode) должен быть выставлен на английский.

Второй вариант(ручное указание поддерживаемых языков):

Добавить в Info.plist приложения ключ:

<key>CFBundleLocalizations</key>
<array>
<string>en</string>
<string>ru</string>
</array>

Автоматическое добавление ключа из второго варианта в Unity описано здесь.


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