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

Начало работы с MyGamesSupport🔗

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    dependencies {
        //...
        implementation(name: 'MRGSSupport', ext:'aar')
    
        implementation 'androidx.appcompat:appcompat:1.6.1'
    }
    

Шаг 2. Предварительная настройка🔗

О безопасности и авторизации

Виджет поддержки может содержать в переписках персональные данные пользователя. Чтобы точно не допустить неавторизованного доступа к данным, система поддержки должна иметь понимание того, что пользователь имеет право на такие действия. Лучше всего для этого подходит авторизация или верификация пользователя (например в приложениях с авторизацией сервер s2s может по accessToken получить реальные данные о пользователе, которые нельзя подделать с клиента или извне), но так как во многих играх пользователь - это просто строковый идентификатор, который нельзя подтвердить логином/паролем, то для таких проектов точно верифицировать пользователя нельзя, и для таких случаев можно только открывать "анонимную" страницу поддержки - она завязана на связку userId и deviceID, это позволяет гарантировать безопасность данных пользователя, т.к. подобрать такую связку практически невозможно, но при таком подходе при переходе на новое устройство, вся история переписки потеряется, в отличие от проектов с авторизацией, поскольку они могут подтвердить подлинность пользователя. Для подтверждения пользователя можно использовать и сторонние системы авторизации (например, Facebook, VK, MyGames), т.к. также по accessToken можно получить реальные данные о пользователе без возможности их подделать.

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

  1. Авторизованный пользователь, данные о котором можно верифицировать s2s - переписка видна при входе с любого устройства
  2. Используя "анонимную" учетную запись на основе связки userId и deviceID - переписка пропадает при переходе на другое устройство

MRGS поддерживает оба подхода:

  1. При отсутствии дополнительных настроек, будет открыта "анонимная" запись
  2. Можно добавить при открытии виджета авторизацию в сторонней системе - мы поддерживаем MyGames, Facebook, VK. При таком открытии вся переписка анонимной ученой записи, которая была до открытия, синхронизируется и связывается с аккаунтом в сторонней системе, позволяя видеть переписки на любом устройстве. Более того, при использовании модуля MRGSAuthentication, авторизация в сетях передается в виджет автоматически. (То есть как только открывают виджет с аккаунтом в сторонней сети, мы их связываем, и потом переписку можно увидеть на любом устройстве, это поможет при решении проблем - можно будет попросить пользователя зайти, например, в MyGames, и он вернет историю своей переписки с поддержкой, а поддержке будет виден его старый аккаунт)

Также, в случае, если у проекта есть своя авторизация, или есть возможность однозначно верифицировать пользователя, и необходимо сделать доступ к переписке исключительно безопасным и закрытым только по авторизации, проект может сам авторизовать пользователя в widget поддержки (1-ый способ из перечисленных выше). Для этого проекту нужно самому получить код авторизации по S2S API с сервера MyGamesSupport (зашивая в него все параметры отображения виджета), и передать его в MRGS при открытии виджета - такой способ мы также поддерживаем.

Шаг 2.1. Добавление системных разрешений на доступ к файлам🔗

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

Шаг 2.1.1 Установка разрешений для iOS🔗

Для iOS проверьте, что у Вашего приложения стоят настройки NSCameraUsageDescription и NSPhotoLibraryUsageDescription в Info.plist приложения, так как в окне поддержки пользователь может захотеть добавить фотографию или скриншот из библиотеки. Пример части Info.plist для вышеуказанных полей:

<key>NSCameraUsageDescription</key>
<string>We use camera so you can send photo to support, if you have problems.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>We use photo library so you can send screenshot to support, if you have problems.</string>

Шаг 2.1.2. Установка разрешений для Android🔗

Для корректной работы на Android необходимо наличие разрешения READ_EXTERNAL_STORAGE и WRITE_EXTERNAL_STORAGE. Модуль MRGSSupport уже включает в своем манифесте это разрешение. На Android 6 и выше оно будет запрошено у пользователя автоматически, если у приложения еще нет доступа к внешнему носителю

Шаг 2.1.3. Локализация запроса разрешений для Android🔗

Также, можно передать нужную локализацию для диалоговых окон для объяснения зачем нужны разрешения на доступ к хранилищу:

MRGSMyGamesSupport.Localization localization = new MRGSMyGamesSupport.Localization();

// The text of the message that will be shown to the user (player) if an error occurs while working with support.
localization.SetErrorDialogParams(string title, string message, string button)

// Explanation of why write access to the storage is needed.
localization.SetWritePermissionRationaleDialogParams(string title, string message, string okButton, string cancelButton);

// Explanation of how to enable the required permission in the settings.
localization.SetWritePermissionSettingsDialogParams(string title, string message, string settingsButton, string cancelButton)

// Setting to config before opening widget
var widgetConfig = new MRGSMyGamesSupport.WidgetConfig();
widgetConfig.DialogLocalization = localization;
import games.my.mrgs.support.MRGSMyGamesSupportLocalization;

final MRGSMyGamesSupportLocalization localization = MRGSMyGamesSupportLocalization.newInstance();

// The text of the message that will be shown to the user (player) if an error occurs while working with support.
localization.setErrorDialogParams(String title, String message, String button)

// Explanation of why write access to the storage is needed.
localization.setWritePermissionRationaleDialogParams(String title, String message, String okButton, String cancelButton);

// Explanation of how to enable the required permission in the settings.
localization.setWritePermissionSettingsDialogParams(String title, String message, String settingsButton, String cancelButton)

Шаг 2.2. Установка игрового идентификатора пользователя🔗

Только при работе через MRGS

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

Для корректной работы MyGamesSupport необходимо установить игровой идентификатор пользователя до открытия окна поддержки. Про установку идентификатора пользователя читайте в разделе "Подключение SDK" Unity, iOS, Android

Как указать пользователя, отличного от выставленного в MRGS?

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

MRGSMyGamesSupport.Instance.CustomUserID = "user_1234567_id";
[MRGSMyGamesSupport sharedInstance].customUserID = @"user_1234567_id";
MRGSMyGamesSupport.getInstance().setCustomUserId("user_1234567_id");

Шаг 3. Показ виджета поддержки🔗

Шаг 3.1. Настройка параметров показа виджета🔗

Перед тем, как показать виджет (обычный виджет, окно поддержки, список запросов или любую другую страницу), вы можете настроить некоторые параметры показа:

  1. Тему оформления виджета: может быть светлой, темной, темно-оранжевой, или определяться автоматически на основе темы устройства. По умолчанию будет открыта светлая тема.
  2. Язык оформления виджета: если не установлен, то будет выбран автоматически на основе языка устройства. Если установлен неподдерживаемый язык, будет выбрана английская локализация.
  3. Дополнительные параметры пользователя: вы можете передать json с доп. информацией в виджет. (например указать, что это vip юзер)

Пример установки всех параметров:

var widgetConfig = new MRGSMyGamesSupport.WidgetConfig();

// Optional. Set up the theme of the widget (Default value is Light).
widgetConfig.Theme = MRGSMyGamesSupport.WidgetTheme.DeviceTheme;

// Optional. Set up a language in ISO alpha-2 format (By default the device language will be used).
widgetConfig.Language = "fr";
// or use MRGS class helper
widgetConfig.Language = MRGSUtils.SystemLanguageToISO(SystemLanguage.English);

widgetConfig.ExtraParameters = "{\"vip\" : true}";
MRGSMyGamesSupportWidgetConfig* widgetConfig = [[MRGSMyGamesSupportWidgetConfig alloc] init];

// Optional. Set up the theme of the widget (Default value is Light).
widgetConfig.theme = MRGSMyGamesSupportWidgetThemeDeviceTheme;

// Optional. Set up a language in ISO alpha-2 format (By default the device language will be used).
widgetConfig.language = @"fr";

// Optional. Set up extra params in JSON format.
widgetConfig.extraParameters = @"{\"vip\" : true}";
import games.my.mrgs.support.MRGSMyGamesSupport;
import games.my.mrgs.support.MRGSMyGamesSupportWidgetConfig;

final MRGSMyGamesSupportWidgetConfig widgetConfig = MRGSMyGamesSupportWidgetConfig.newInstance();

// Optional. Set up the theme of the widget (Default value is Light).
widgetConfig.setTheme(MRGSMyGamesSupport.WidgetTheme.SYSTEM);

// Optional. Set up a language in ISO alpha-2 format (By default the device language will be used).
widgetConfig.setLanguage("fr");

// Optional. Set up extra params in JSON format.
widgetConfig.setExtraParameters("{\"vip\" : true}");

Установка кода авторизации при его получении самостоятельно

В случае, если вы решили получать код авторизации виджета самостоятельно, для начала вам нужно безопасно получить код авторизации через S2S api MyGamesSupport, описание API можно посмотреть здесь. Затем, необходимо выставить его в созданный выше объект настроек и передать в методы показа (так как при авторизации напрямую параметры показа зашиваются в код авторизации, остальные настройки в конфигурации не будут применены):

var widgetConfig = new MRGSMyGamesSupport.WidgetConfig();
widgetConfig.AuthCode = "some_received_code";
MRGSMyGamesSupportWidgetConfig* widgetConfig = [[MRGSMyGamesSupportWidgetConfig alloc] init];
widgetConfig.authCode = @"some_received_code";
import games.my.mrgs.support.MRGSMyGamesSupport;
import games.my.mrgs.support.MRGSMyGamesSupportWidgetConfig;

final MRGSMyGamesSupportWidgetConfig widgetConfig = MRGSMyGamesSupportWidgetConfig.newInstance();
widgetConfig.setAuthCode("some_received_code");

Шаг 3.2. Добавление сторонней авторизации🔗

Только при работе через MRGS

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

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

var widgetConfig = new MRGSMyGamesSupport.WidgetConfig();
// MyGames
var authMyGames = MRGSMyGamesSupportCredential.Create(MRGSMyGamesSupportCredential.SocialNetwork.MyGames, "some_token");
widgetConfig.AddAuthentication(authMyGames);

// Facebook
var authFacebook = MRGSMyGamesSupportCredential.Create(MRGSMyGamesSupportCredential.SocialNetwork.Facebook, "some_token");
widgetConfig.AddAuthentication(authFacebook);
MRGSMyGamesSupportWidgetConfig* widgetConfig = [[MRGSMyGamesSupportWidgetConfig alloc] init];

// MyGames
MRGSMyGamesSupportCredential* credentialMyGames = [MRGSMyGamesSupportCredential credentialWithSocialNetwork:kMRGSMyGamesSupportCredentialSocialNetworkMyGames token:@"fakeToken"];
[widgetConfig addAuthentication: credentialMyGames];

// Facebook
MRGSMyGamesSupportCredential* credentialFacebook = [MRGSMyGamesSupportCredential credentialWithSocialNetwork:kMRGSMyGamesSupportCredentialSocialNetworkFacebook token:@"fakeToken"];
[widgetConfig addAuthentication: credentialFacebook];
import games.my.mrgs.support.MRGSMyGamesSupport.Credential;
import games.my.mrgs.support.MRGSMyGamesSupportWidgetConfig;

final MRGSMyGamesSupportWidgetConfig widgetConfig = MRGSMyGamesSupportWidgetConfig.newInstance();

// MyGames
final Credential credentialMyGames = new Credential(Credential.SocialNetwork.MY_GAMES, "some_token");
widgetConfig.addAuthentication(credentialMyGames);

// Facebook
final Credential credentialFacebook = new Credential(Credential.SocialNetwork.FACEBOOK, "some_token");
widgetConfig.addAuthentication(credentialFacebook);

Добавление ключа для VK авторизации

В случае, если вы используете авторизацию в VK (через MRGSAuthentication или пробрасываете в виджет сами), чтобы MRGS мог валидировать юзера, нужно добавить сервисный ключ приложения VK (раздел "Настройки->Сервисный ключ доступа" на сайте VK) в админке MRGS в разделе "Интеграции->VK Access Token".

Шаг 3.3 Выбор страницы для показа🔗

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

var widgetConfig = new MRGSMyGamesSupport.WidgetConfig();
widgetConfig.Page = MRGSMyGamesSupport.WidgetPage.TicketsList;

MRGSMyGamesSupport.Instance.Show(widgetConfig, error =>
{
    // Handle result here.
});
MRGSMyGamesSupportWidgetConfig* widgetConfig = [[MRGSMyGamesSupportWidgetConfig alloc] init];
widgetConfig.page = MRGSMyGamesSupportWidgetPage.ticketsListPage;

[[MRGSMyGamesSupport sharedInstance] showWidgetInView:presentationView config:widgetConfig completionHandler:^(NSError * _Nullable error) {
    // Handle result here.
}];
import androidx.annotation.Nullable;

import games.my.mrgs.MRGSError;
import games.my.mrgs.support.MRGSMyGamesSupport;
import games.my.mrgs.support.MRGSMyGamesSupportWidgetConfig;
import games.my.mrgs.support.MRGSMyGamesSupportWidgetPage;
import games.my.mrgs.utils.optional.Consumer;

final MRGSMyGamesSupportWidgetConfig widgetConfig = MRGSMyGamesSupportWidgetConfig.newInstance();
widgetConfig.setPage(MRGSMyGamesSupportWidgetPage.TICKETS_LIST);

MRGSMyGamesSupport.getInstance().show(activity, widgetConfig, new Consumer<MRGSError>() {
    @Override
    public void accept(@Nullable MRGSError error) {
        // Handle result here
    }
});

Окно Feedback

Обратите внимание, что вы можете показать окно feedback - отдельную страницу для отправки отзывов.

var widgetConfig = new MRGSMyGamesSupport.WidgetConfig();
widgetConfig.Page = MRGSMyGamesSupport.WidgetPage.Feedback;

MRGSMyGamesSupport.Instance.Show(widgetConfig, error =>
{
    // Handle result here.
});
MRGSMyGamesSupportWidgetConfig* widgetConfig = [[MRGSMyGamesSupportWidgetConfig alloc] init];
widgetConfig.page = MRGSMyGamesSupportWidgetPage.feedbackPage;

[[MRGSMyGamesSupport sharedInstance] showWidgetInView:presentationView config:widgetConfig completionHandler:^(NSError * _Nullable error) {
    // Handle result here.
}];
import androidx.annotation.Nullable;

import games.my.mrgs.MRGSError;
import games.my.mrgs.support.MRGSMyGamesSupport;
import games.my.mrgs.support.MRGSMyGamesSupportWidgetConfig;
import games.my.mrgs.support.MRGSMyGamesSupportWidgetPage;
import games.my.mrgs.utils.optional.Consumer;

final MRGSMyGamesSupportWidgetConfig widgetConfig = MRGSMyGamesSupportWidgetConfig.newInstance();
widgetConfig.setPage(MRGSMyGamesSupportWidgetPage.FEEDBACK);

MRGSMyGamesSupport.getInstance().show(activity, widgetConfig, new Consumer<MRGSError>() {
    @Override
    public void accept(@Nullable MRGSError error) {
        // Handle result here
    }
});

Шаг 3.4 Открытие виджета поддержки🔗

После установки параметров, нужно вызвать метод показа:

Процесс открытия окна поддержки представлен ниже:

MRGSMyGamesSupport.Instance.Show(config, error =>
{
    // Handle result here.
});
[[MRGSMyGamesSupport sharedInstance] showWidgetInView:presentationView config:widgetConfig completionHandler:^(NSError * _Nullable error) {
    // Handle result here.
}];
import androidx.annotation.Nullable;

import games.my.mrgs.MRGSError;
import games.my.mrgs.support.MRGSMyGamesSupport;
import games.my.mrgs.utils.optional.Consumer;

MRGSMyGamesSupport.getInstance().show(activity, widgetConfig, new Consumer<MRGSError>() {
    @Override
    public void accept(@Nullable MRGSError error) {
        // Handle result here.
    }
});

Статистика

MRGS автоматически собирает статистику по ошибкам в виджете с помощью MRGSMetrics (метрика -18)

Шаг 4. Проверка ответов от службы поддержки MyGamesSupport🔗

Только при работе через MRGS

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

Процесс проверки ответов на вопросы пользователя представлен ниже:

MRGSMyGamesSupport.Instance.CheckTickets((int numberOfUnread, MRGSError error) => {
    // Handle result here.
});

// Async/await way
var (unread, error) = await MRGSMyGamesSupport.Instance.CheckTicketsAsync();
var unread = await MRGSMyGamesSupport.Instance.CheckTicketsAsync().Throwable();
[[MRGSMyGamesSupport sharedInstance] checkTicketsWithCompletionHandler:^(NSNumber * _Nonnull numberOfUnreadTickets, NSError * _Nullable error) {
    // Handle result here.
}];
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import games.my.mrgs.MRGSError;
import games.my.mrgs.support.MRGSMyGamesSupport;
import games.my.mrgs.utils.optional.BiConsumer;

MRGSMyGamesSupport.getInstance().checkTickets(new BiConsumer<Integer, MRGSError>() {
    @Override
    public void accept(@NonNull Integer integer, @Nullable MRGSError error) {
        // Handle result here.
    }
});

Шаг 5. Получение уведомлений об ответах службы поддержки🔗

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

private class NotificationSupportDelegate : MRGSMyGamesSupport.INotificationDelegate
{
    public void OnReceiveShowIntent(MRGSMyGamesSupport.WidgetPage page)
    {
        var config = new MRGSMyGamesSupport.WidgetConfig()
        {
            Theme = MRGSMyGamesSupport.WidgetTheme.Dark,
            Page = page
        };

        MRGSLog.Instance.AddLog("Opening support view with params:\n"+config);
        MRGSMyGamesSupport.Instance.Show(config, error =>
        {
            MRGSLog.Instance.AddLog("Closed support view." + (error != null ? "With error - " + error : ""));
        });
    }
}

MRGSMyGamesSupport.Instance.NotificationDelegate = new NotificationSupportDelegate();
[MRGSMyGamesSupport sharedInstance].notificationDelegate = self;

- (void)didReceiveShowIntentForPage:(MRGSMyGamesSupportWidgetPage*)page{
  NSLog(@"Received didReceiveShowIntentForPage delegate callback with page - %@", page);
}
MRGSMyGamesSupportNotificationListener supportNotificationListener = new MRGSMyGamesSupportNotificationListener() {
    @Override
    public void onReceiveShowIntentForPage(@NonNull MRGSMyGamesSupportWidgetPage page) {
        MRGSMyGamesSupportWidgetConfig config = MRGSMyGamesSupportWidgetConfig.newInstance();
        config.setPage(page);
        MRGSMyGamesSupport.getInstance().show(Activity.this, config);
    }
};
MRGSMyGamesSupport.getInstance().setSupportNotificationListener(supportNotificationListener);

В случае, если у вас не интегрирован модуль уведомлений от MRGS - вы можете отлавливать такие уведомления самостоятельно, их формат указан ниже:

{
    "ref": "support",
    "url": "/#/ticket/123456"
}

Где:

  • "ref" - обязательный параметр, со значением "support".
  • "url" - обязательный параметр, строка формата "/#/ticket/$ticket_number" в котором указан номер ticket.

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