Инструкция по миграции🔗
Данный документ содержит инструкцию по обновлению MRGS SDK, в случае, когда в код или настройки проекта нужно внести какие-либо изменения.
5.x.x → 6.0.0🔗
Версия 6.0.0 содержатся обратно несовместимые изменения из-за частично переработано API: удалили @Deprecated функционал, поменяли имена функций, исправили опечатки, у публичного API изменился package, а приватное API переехало в internal.
Java packages🔗
Все классы в MRGS SDK поменяли названия package с ru.mail.mrgservice на games.my.mrgs.
MRGSMyTracker🔗
MRGSMyTracker был перенесет в свой собственный модуль и больше не поставляется с MRGService. Новый способ подключения:
Добавьте зависимость в build.gradle файл:
Обновите код🔗
Основные изменения:
- Класс
MRGSMyTrackerперемещен изru.mail.mrgserviceвgames.my.mrgs.my.tracker. - Класс
MRGSExternalSDKParams.MyTrackerParamsпереименован и перемещен вgames.my.mrgs.my.tracker.MRGSMyTrackerParams.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSExternalSDKParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.MyTrackerParams;
import ru.mail.mrgservice.MRGSPlatform;
import ru.mail.mrgservice.MRGService;
import ru.mail.mrgservice.MRGServiceParams;
final MRGServiceParams serviceParams
= MRGServiceParams.init(<MRGS_APP_ID>, <CLIENT_SECRET>, MRGSPlatform.ANDROID);
serviceParams.setDebuggable(false);
// Setting External SDKS
final MRGSExternalSDKParams externalSDKParams = MRGSExternalSDKParams.newInstance();
// Setting MyTracker
final MyTrackerParams myTrackerParams = MyTrackerParams.init("MY_TRACKER_SDK_KEY");
myTrackerParams.setDebuggable(false);
externalSDKParams.myTrackerParams = myTrackerParams;
MRGService.service(context, serviceParams, externalSDKParams);
После
import java.util.ArrayList;
import java.util.List;
import games.my.mrgs.MRGSModuleParams;
import games.my.mrgs.MRGSPlatform;
import games.my.mrgs.MRGService;
import games.my.mrgs.MRGServiceParams;
import games.my.mrgs.my.tracker.MRGSMyTrackerParams;
final MRGServiceParams serviceParams
= MRGServiceParams.init(<MRGS_APP_ID>, <CLIENT_SECRET>, MRGSPlatform.ANDROID);
serviceParams.setDebuggable(false);
// Settings for MRGSModules
final List<MRGSModuleParams> moduleParams = new ArrayList<>();
// Setting MyTracker
final MRGSMyTrackerParams myTrackerParams = MRGSMyTrackerParams.init("MY_TRACKER_SDK_KEY");
myTrackerParams.setDebuggable(false);
moduleParams.add(myTrackerParams);
MRGService.service(context, serviceParams, moduleParams);
MRGService🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.x.x"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:core:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
ru.mail.mrgservice.MRGSExternalSDKParamsудален. - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.AmazonAuthParamsпереименован и перемещен в модуль MRGSAuthenticationgames.my.mrgs.authentication.MRGSAmazonAuthParams. - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.AppsFlyerParamsпереименован и перемещен в модуль MRGSAnalyticsgames.my.mrgs.analytics.MRGSAppsFlyerParams. - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.FacebookParamsпереименован и перемещен в модуль MRGSAuthenticationgames.my.mrgs.authentication.MRGSFacebookParams. - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.GooglePlayGamesParamsпереименован и перемещен в модуль MRGSAuthenticationGoogleSignIngames.my.mrgs.authentication.google.signin.MRGSGooglePlayGamesParams. - Класс
ru.mail.mrgservice.authentication.googlegames.MRGSGoogleGamesудален авторизация Google перемещена в отдельные модули MRGSAuthenticationGoogleSignIn и MRGSAuthenticationGoogleSignIn - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.GameCenterParamsпереименован и перемещен в модуль MRGSAuthenticationgames.my.mrgs.authentication.MRGSGameCenterParams. - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.MyGamesAuthParamsпереименован и перемещен в модуль MRGSAuthenticationgames.my.mrgs.authentication.MRGSMyGamesAuthParams. - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.MyTrackerParamsпереименован и перемещен в модуль MRGSMyTrackergames.my.mrgs.my.tracker.MRGSMyTrackerParams. - Класс
ru.mail.mrgservice.MRGSExternalSDKParams.SamsungBillingParamsпереименован и перемещен в модуль MRGSBillinggames.my.mrgs.billing.MRGSSamsungBillingParams. -
Класс
ru.mail.mrgservice.MRGSExternalSDKParams.VKontakteParamsпереименован и перемещен в модуль MRGSAuthenticationVKgames.my.mrgs.authentication.vk.MRGSVKontakteParams. -
enum
ru.mail.mrgservice.MRGServiceParams.BillingSubstitutionудален. ИспользуйтеMRGSMyGamesBilling#useAsMainBilling()иMRGSVKPay#useAsMainBilling(). -
Метод
MRGService#service(Context, MRGSServerDataDelegate, String, String)удален. ИспользуйтеMRGService#service(Context, String, String, MRGSServerDataDelegate). - Метод
MRGService#service(Context, MRGSServerDataDelegate, String, String, Bundle)удален. ИспользуйтеMRGService#service(Context, MRGServiceParams, List<MRGSModuleParams>, MRGSServerDataDelegate loadDelegate). - Метод
MRGService#service(Context, MRGSServerDataDelegate, String, String, Bundle, Bundle)удален. ИспользуйтеMRGService#service(Context, MRGServiceParams, List<MRGSModuleParams>, MRGSServerDataDelegate loadDelegate). - Метод
MRGService#service(Context, MRGServiceParams, MRGSExternalSDKParams)удален. ИспользуйтеMRGService#service(Context, MRGServiceParams, List<MRGSModuleParams>). -
Метод
MRGService#service(Context, MRGServiceParams, MRGSExternalSDKParams, MRGSServerDataDelegate loadDelegate)удален. ИспользуйтеMRGService#service(Context, MRGServiceParams, List<MRGSModuleParams>, MRGSServerDataDelegate loadDelegate). -
Метод
ru.mail.mrgservice.MRGServiceParams#shouldUseMyGamesBillingOnly()удален. -
Метод
ru.mail.mrgservice.MRGServiceParams#setUseMyGamesBillingOnly(boolean)удален. ИспользуйтеMRGSMyGamesBilling#useAsMainBilling()иMRGSVKPay#useAsMainBilling(). -
Поле
MRGService#BILLING_GOOGLEудалено. - Поле
MRGService#BILLING_SAMSUNGудалено. - Поле
MRGService#BILLING_AMAZONудалено. - Поле
MRGService#BILLING_HUAWEIудалено. - Поле
MRGService#BILLING_FACEBOOK_CLOUDудалено. -
Поле
MRGService#BILLING_MY_GAMESудалено. -
Поле
ru.mail.mrgservice.MRGSSocial#ODNOKLASSNIKIудалено. - Поле
ru.mail.mrgservice.MRGSSocial#MAILRUудалено. - Поле
ru.mail.mrgservice.MRGSSocial#VKONTAKTEудалено. - Поле
ru.mail.mrgservice.MRGSSocial#VKIDудалено.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSExternalSDKParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.AppsFlyerParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.MyTrackerParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.FacebookParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.GooglePlayGamesParams;
import ru.mail.mrgservice.MRGSPlatform;
import ru.mail.mrgservice.MRGService;
import ru.mail.mrgservice.MRGServiceParams;
// Setting MRGService
// Available MRGSPlatform: AMAZON, ANDROID, HUAWEI, SAMSUNG and FACEBOOK_CLOUD
final MRGServiceParams serviceParams
= MRGServiceParams.init(<MRGS_APP_ID>, <CLIENT_SECRET>, MRGSPlatform.ANDROID);
serviceParams.setDebuggable(false);
// Setting External SDKS
final MRGSExternalSDKParams externalSDKParams = MRGSExternalSDKParams.newInstance();
// Setting MyTracker
final MyTrackerParams myTrackerParams = MyTrackerParams.init("MY_TRACKER_SDK_KEY");
myTrackerParams.setDebuggable(false);
externalSDKParams.myTrackerParams = myTrackerParams;
// Setting AppsFlyer
final AppsFlyerParams appsFlyerParams = AppsFlyerParams.init("DEV_KEY");
appsFlyerParams.setDebuggable(false);
appsFlyerParams.setForwardMetricsEnabled(true);
externalSDKParams.appsFlyerParams = appsFlyerParams;
// Setting other external SDKS
externalSDKParams.facebookParams = FacebookParams.init("FACEBOOK_APP_ID");
externalSDKParams.googlePlayGamesParams = GooglePlayGamesParams.init("GOOGLE_CLIENT_ID");
MRGService.service(context, serviceParams, externalSDKParams);
После
import java.util.ArrayList;
import java.util.List;
import games.my.mrgs.MRGSModuleParams;
import games.my.mrgs.MRGSPlatform;
import games.my.mrgs.MRGService;
import games.my.mrgs.MRGServiceParams;
import games.my.mrgs.analytics.MRGSAppsFlyerParams;
import games.my.mrgs.authentication.MRGSFacebookParams;
import games.my.mrgs.authentication.MRGSGooglePlayGamesParams;
import games.my.mrgs.my.tracker.MRGSMyTrackerParams;
// Setting MRGService
// Available MRGSPlatform: AMAZON, ANDROID, HUAWEI, SAMSUNG and FACEBOOK_CLOUD
final MRGServiceParams serviceParams
= MRGServiceParams.init(<MRGS_APP_ID>, <CLIENT_SECRET>, MRGSPlatform.ANDROID);
serviceParams.setDebuggable(false);
// Settings for MRGS modules
final List<MRGSModuleParams> moduleParams = new ArrayList<>();
// Setting MyTracker
final MRGSMyTrackerParams myTrackerParams = MRGSMyTrackerParams.init("MY_TRACKER_SDK_KEY");
myTrackerParams.setDebuggable(false);
moduleParams.add(myTrackerParams);
// Setting AppsFlyer
final MRGSAppsFlyerParams appsFlyerParams = MRGSAppsFlyerParams.init("DEV_KEY");
appsFlyerParams.setDebuggable(false);
appsFlyerParams.setForwardMetricsEnabled(true);
moduleParams.add(appsFlyerParams);
// Setting other external SDKS
final MRGSFacebookParams facebookParams = MRGSFacebookParams.init("FACEBOOK_APP_ID");
moduleParams.add(facebookParams);
final MRGSGoogleSignInParams googleSignInParams = MRGSGoogleSignInParams.init("GOOGLE_CLIENT_ID");
moduleParams.add(googleSignInParams);
MRGService.service(context, serviceParams, moduleParams);
MRGSAdvertising🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.x.x"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:advertising:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSAdvertперемещен изru.mail.mrgservice.advertisingвgames.my.mrgs.advertising. -
Класс
MRGSAdvertisingFactoryперемещен изru.mail.mrgservice.advertisingвgames.my.mrgs.advertising. -
Метод
MRGSAdvert#showContent(int, String)удален. ИспользуйтеMRGSAdvert#showContent(String). -
Поле
MRGSAdvert.SHOW_FULLSCREENудалено.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.advertising.MRGSAdvert;
import ru.mail.mrgservice.advertising.MRGSAdvertisingFactory;
final MRGSAdvert videoAdvert = MRGSAdvertisingFactory.createMRGSAdvertising(true);
videoAdvert.showContent();
После
import games.my.mrgs.advertising.MRGSAdvert;
import games.my.mrgs.advertising.MRGSAdvertisingFactory;
final MRGSAdvert videoAdvert = MRGSAdvertisingFactory.createMRGSAdvertising(true);
videoAdvert.showContent();
MRGSAnalytics🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:analytics:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
-
Класс
AppsFlyerParamsпереименован вMRGSAppsFlyerParamsи перемещен в модуль MRGSAnalytics. -
Класс
MRGSAnalyticsперемещен изru.mail.mrgservice.analyticsвgames.my.mrgs.analytics. - Класс
MRGSAppsFlyerперемещен изru.mail.mrgservice.analyticsвgames.my.mrgs.analytics. - Класс
MRGSAppsFlyerLinkGeneratorперемещен изru.mail.mrgservice.analyticsвgames.my.mrgs.analytics.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.analytics.MRGSAnalytics;
import ru.mail.mrgservice.analytics.MRGSAppsFlyer;
final MRGSAnalytics analytics = MRGSAnalytics.getInstance();
analytics.sendEvent("<Event>", null);
MRGSAppsFlyer.forceCustomerUserId("custom_user_id");
final MRGSAppsFlyer appsFlyer = analytics.getAppsFlyer();
appsFlyer.sendEvent("<Event>", "<Value>");
После
import games.my.mrgs.analytics.MRGSAnalytics;
import games.my.mrgs.analytics.MRGSAppsFlyer;
final MRGSAnalytics analytics = MRGSAnalytics.getInstance();
analytics.sendEvent("<Event>", null);
MRGSAppsFlyer.forceCustomerUserId("custom_user_id");
final MRGSAppsFlyer appsFlyer = analytics.getAppsFlyer();
appsFlyer.sendEvent("<Event>", "<Value>");
MRGSAuthentications🔗
MRGSVK был перенесет в свой собственный модуль и больше не поставляется с MRGSAuthentication. Новый способ подключения:
Добавьте зависимость в build.gradle файл:
MRGSGoogleGames был переименован и перенесет в свой собственный модуль и больше не поставляется с MRGSAuthentication. Новый способ подключения:
Добавьте зависимость в build.gradle файл:
Скопируйте файл MRGSAuthenticationVK в директорию libs вашего проекта. Добавьте необходимые зависимости в build.gradle файл
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:authentication:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSVKперемещен в свой собственный модульMRGSAuthenticationVK. -
Класс
VKontakteParamsпереименован вMRGSVKontakteParamsи перемещен в модуль MRGSAuthenticationVK. -
Класс
MRGSAmazonперемещен изru.mail.mrgservice.authentication.amazonвgames.my.mrgs.authentication.amazon. - Класс
MRGSFacebookперемещен изru.mail.mrgservice.authentication.facebookвgames.my.mrgs.authentication.facebook. - Класс
MRGSGoogleGamesперемещен изru.mail.mrgservice.authentication.googlegamesвgames.my.mrgs.authentication.googlegames. -
Класс
MRGSMyGamesперемещен изru.mail.mrgservice.authentication.mygamesвgames.my.mrgs.authentication.mygames. -
Класс
MRGSUserперемещен изru.mail.mrgservice.authenticationвgames.my.mrgs.authentication. -
Класс
MRGSAuthInfoудален. ИспользуйтеMRGSAccessToken. -
Интерфейс
MRGSAuthentication.ExternalLogoutCallbackудален. ИспользуйтеMRGSAuthentication.OnExternalLogoutListener. - Интерфейс
MRGSSocialперемещен изru.mail.mrgservice.authenticationвgames.my.mrgs.authentication. - Интерфейс
MRGSScoreперемещен изru.mail.mrgservice.authenticationвgames.my.mrgs.authentication. - Интерфейс
MRGSLeaderBoardsперемещен изru.mail.mrgservice.authenticationвgames.my.mrgs.authentication. -
Интерфейс
MRGSAchievementsперемещен изru.mail.mrgservice.authenticationвgames.my.mrgs.authentication. -
Enum
MRGSAuthenticationNetworkудален. - Enum
MRGSAuthenticationNetwork.UNKNOWNудален. - Enum
MRGSAuthenticationNetwork.AMAZONудален. ИспользуйтеMRGSAmazon.SOCIAL_ID. - Enum
MRGSAuthenticationNetwork.FACEBOOKудален. ИспользуйтеMRGSFacebook.SOCIAL_ID. - Enum
MRGSAuthenticationNetwork.GOOGLE_GAMESудален. ИспользуйтеMRGSGoogleGamesMRGSGoogleSignIn.SOCIAL_ID. - Enum
MRGSAuthenticationNetwork.MY_GAMESудален. ИспользуйтеMRGSMyGames.SOCIAL_ID. -
Enum
MRGSAuthenticationNetwork.VKONTAKTEудален. ИспользуйтеMRGSVK.SOCIAL_ID. -
Метод
MRGSAccessToken#getSocialId()теперь возвращаетStringвместоMRGSAuthenticationNetwork. - Метод
MRGSAuthentication#getSocialId()теперь возвращаетStringвместоMRGSAuthenticationNetwork. - Метод
MRGSAuthentication#loginWithScopes(List<String>, MRGSLoginCallback)удален. ИспользуйтеMRGSAuthentication#login(List<String>, MRGSLoginCallback). - Метод
MRGSAuthentication#getAuthInfo()удален. ИспользуйтеMRGSAuthentication#getAccessToken(BiConsumer<MRGSAccessToken, MRGSError>). - Метод
MRGSAuthentication#getAuthInfo(BiConsumer<MRGSAuthInfo, MRGSError>)удален. ИспользуйтеMRGSAuthentication#getAccessToken(BiConsumer<MRGSAccessToken, MRGSError>). - Метод
MRGSAuthentication#getUserAvatar(MRGSUser, MRGSAvatarCallback, int, int)удален. ИспользуйтеMRGSAuthentication#getUserAvatar(MRGSUser, int, int, MRGSAvatarCallback). - Метод
MRGSAuthentication#setOnExternalLogoutCallback(ExternalLogoutCallback)удален. ИспользуйтеMRGSAuthentication#setOnExternalLogoutListener(OnExternalLogoutListener). -
Метод
MRGSAuthentication.OnExternalLogoutListener#onUserLogoutтеперь принимаетStringвместоMRGSAuthenticationNetwork. -
Метод
MRGSAmazon#tryUpdateToken()удален. ИспользуйтеMRGSAmazon#getAccessToken(BiConsumer<MRGSAccessToken, MRGSError>). -
Метод
MRGSAchievement#achievementId()удален. ИспользуйтеMRGSAchievement#getAchievementId(). - Метод
MRGSAchievement#name()удален. ИспользуйтеMRGSAchievement#getName(). - Метод
MRGSAchievement#description()удален. ИспользуйтеMRGSAchievement#getDescription(). - Метод
MRGSAchievement#state()удален. ИспользуйтеMRGSAchievement#getState(). - Метод
MRGSAchievement#currentSteps()удален. ИспользуйтеMRGSAchievement#getCurrentSteps(). - Метод
MRGSAchievement#totalSteps()удален. ИспользуйтеMRGSAchievement#getTotalSteps(). -
Метод
MRGSAchievement#completionPercent()удален. ИспользуйтеMRGSAchievement#getCompletionPercent(). -
Метод
MRGSCredentials#setUserId(String)удален. - Метод
MRGSCredentials#setUser(MRGSUser)удален. - Метод
MRGSCredentials#setAuthInfo(MRGSAuthInfo)удален. - Метод
MRGSCredentials#getAuthInfo()удален. ИспользуйтеMRGSCredentials#getAccessToken(). -
Метод
MRGSCredentials#getSocialId()теперь возвращаетStringвместоMRGSAuthenticationNetwork. -
Метод
MRGSLeaderboard#leaderboardId()удален. ИспользуйтеMRGSLeaderboard#getLeaderboardId(). -
Метод
MRGSLeaderboard#name()удален. ИспользуйтеMRGSLeaderboard#getName(). -
Метод
MRGSScore#leaderboardId()удален. ИспользуйтеMRGSScore#getLeaderboardId(). - Метод
MRGSScore#rank()удален. ИспользуйтеMRGSScore#getRank(). - Метод
MRGSScore#displayRank()удален. ИспользуйтеMRGSScore#getDisplayRank(). - Метод
MRGSScore#rawScore()удален. ИспользуйтеMRGSScore#getRawScore(). - Метод
MRGSScore#displayScore()удален. ИспользуйтеMRGSScore#getDisplayScore(). -
Метод
MRGSScore#player()удален. ИспользуйтеMRGSScore#getPlayer(). -
Метод
MRGSUser#userId()удален. ИспользуйтеMRGSUser#getUserId(). - Метод
MRGSUser#nick()удален. ИспользуйтеMRGSUser#getNickName(). - Метод
MRGSUser#firstName()удален. ИспользуйтеMRGSUser#getFirstName(). - Метод
MRGSUser#lastName()удален. ИспользуйтеMRGSUser#getLastName(). - Метод
MRGSUser#middleName()удален. ИспользуйтеMRGSUser#getMiddleName(). - Метод
MRGSUser#fullName()удален. ИспользуйтеMRGSUser#getFullName(). - Метод
MRGSUser#displayName()удален. ИспользуйтеMRGSUser#getDisplayName(). - Метод
MRGSUser#gender()удален. ИспользуйтеMRGSUser#getGender(). - Метод
MRGSUser#birthDate()удален. ИспользуйтеMRGSUser#getBirthDate(). - Метод
MRGSUser#location()удален. ИспользуйтеMRGSUser#getLocation(). - Метод
MRGSUser#socialId()удален. ИспользуйтеMRGSUser#getSocialId(). - Метод
MRGSUser#getSocialId()теперь возвращаетStringвместоMRGSAuthenticationNetwork.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import java.util.Arrays;
import ru.mail.mrgservice.MRGSError;
import ru.mail.mrgservice.authentication.MRGSAccessToken;
import ru.mail.mrgservice.authentication.MRGSAuthentication;
import ru.mail.mrgservice.authentication.MRGSAuthentication.OnExternalLogoutListener;
import ru.mail.mrgservice.authentication.MRGSAuthenticationNetwork;
import ru.mail.mrgservice.authentication.MRGSCredentials;
import ru.mail.mrgservice.authentication.MRGSLoginCallback;
import ru.mail.mrgservice.authentication.MRGSUser;
import ru.mail.mrgservice.utils.optional.BiConsumer;
final MRGSAuthentication authentication = AuthenticationImpl.getInstance();
// Set logout listener
authentication.setOnExternalLogoutListener(new OnExternalLogoutListener() {
@Override
public void onUserLogout(@NonNull MRGSAuthenticationNetwork network) {
// Handle result
}
});
// Common login
authentication.login(new MRGSLoginCallback() {
@Override
public void onSuccess(@NonNull MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error
}
});
// Login with scopes
authentication.login(Arrays.asList("scope_1", "scope_2"), new MRGSLoginCallback() {
@Override
public void onSuccess(@NonNull MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error
}
});
// Get current user's information
authentication.getCurrentUser(new MRGSAuthentication.UserCallback() {
@Override
public void onSuccess(@NonNull final MRGSUser user) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
}
});
// Get current user's authentication information
authentication.getAccessToken(new BiConsumer<MRGSAccessToken, MRGSError>() {
@Override
public void accept(@Nullable MRGSAccessToken accessToken, @Nullable MRGSError error) {
if (error != null) {
// Handle error
} else {
// Handle result
}
}
});
// Call logout
authentication.logout();
После
import java.util.Arrays;
import games.my.mrgs.MRGSError;
import games.my.mrgs.authentication.MRGSAccessToken;
import games.my.mrgs.authentication.MRGSAuthentication;
import games.my.mrgs.authentication.MRGSAuthentication.OnExternalLogoutListener;
import games.my.mrgs.authentication.MRGSAuthenticationNetwork;
import games.my.mrgs.authentication.MRGSCredentials;
import games.my.mrgs.authentication.MRGSLoginCallback;
import games.my.mrgs.authentication.MRGSUser;
import games.my.mrgs.utils.optional.BiConsumer;
final MRGSAuthentication authentication = AuthenticationImpl.getInstance();
// Set logout listener
authentication.setOnExternalLogoutListener(new OnExternalLogoutListener() {
@Override
public void onUserLogout(@NonNull MRGSAuthenticationNetwork network) {
// Handle result
}
});
// Common login
authentication.login(new MRGSLoginCallback() {
@Override
public void onSuccess(@NonNull MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error
}
});
// Login with scopes
authentication.login(Arrays.asList("scope_1", "scope_2"), new MRGSLoginCallback() {
@Override
public void onSuccess(@NonNull MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error
}
});
// Get current user's information
authentication.getCurrentUser(new MRGSAuthentication.UserCallback() {
@Override
public void onSuccess(@NonNull final MRGSUser user) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
}
});
// Get current user's authentication information
authentication.getAccessToken(new BiConsumer<MRGSAccessToken, MRGSError>() {
@Override
public void accept(@Nullable MRGSAccessToken accessToken, @Nullable MRGSError error) {
if (error != null) {
// Handle error
} else {
// Handle result
}
}
});
// Call logout
authentication.logout();
MRGSBilling🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:billing:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSBillingперемещен изru.mail.mrgservice.billingвgames.my.mrgs.billing. - Класс
MRGSBillingProductперемещен изru.mail.mrgservice.billingвgames.my.mrgs.billing. - Класс
MRGSBillingEntitiesперемещен изru.mail.mrgservice.billingвgames.my.mrgs.billing. - Класс
MRGSMyGamesBillingперемещен изru.mail.mrgservice.billingвgames.my.mrgs.billing. -
Класс
SamsungBillingParamsпереименован вMRGSSamsungBillingParamsи перемещен в модуль MRGSBilling. -
Интерфейс
MRGSBillingDelegateперемещен изru.mail.mrgservice.billingвgames.my.mrgs.billing. -
Метод
MRGSBilling#isInstantiated()удален. ИспользуйтеMRGSBilling##isBillingAvailable(Context)илиMRGSBilling##isBillingAvailable(Context, MRGSBillingAvailableCallback). - Метод
MRGSBillingEntities.MRGSBankPurchaseRequest#getProductIdentifier()удален. ИспользуйтеMRGSBillingEntities.MRGSBankPurchaseRequest#getProductId(). - Метод
MRGSBillingEntities.MRGSBankPurchaseRequest#setOldSubscriptionIdentifier(String)удален. ИспользуйтеMRGSBillingEntities.MRGSBankPurchaseRequest#setOldSubscriptionId(String). - Метод
MRGSBillingEntities.MRGSBankPurchaseResult#getProductIdentifier()удален. ИспользуйтеMRGSBillingEntities.MRGSBankPurchaseResult#getProductId(). -
Метод
MRGSBillingEntities.MRGSBankTransaction#getTransactionIdentifier()удален. ИспользуйтеMRGSBillingEntities.MRGSBankTransaction#getTransactionId(). -
Поле
MRGSBilling.BILLING_VKPAYудалено. ИспользуйтеMRGSVKPay.BILLING_VKPAY.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import java.util.Arrays;
import java.util.List;
import ru.mail.mrgservice.billing.MRGSBilling;
import ru.mail.mrgservice.billing.MRGSBillingDelegate;
import ru.mail.mrgservice.billing.MRGSBillingEntities.MRGSBankProductsRequest;
import ru.mail.mrgservice.billing.MRGSBillingEntities.MRGSBankPurchaseRequest;
import ru.mail.mrgservice.billing.MRGSBillingProduct;
final MRGSBilling billing = MRGSBilling.getInstance();
final MRGSBillingDelegate listener = new MRGSBillingDelegate() {
...
};
billing.setDelegate(listener);
// Request Products
final List<String> consumable = Arrays.asList(
"games.my.mrgs.purchase1",
"games.my.mrgs.purchase2",
"android.test.purchased");
final List<String> nonConsumable = Arrays.asList("games.my.mrgs.mrgservisetest.noncons");
final List<String> subscriptions = Arrays.asList(
"games.my.mrgs.subs1",
"games.my.mrgs.subs2",
"games.my.mrgs.subs3");
final MRGSBankProductsRequest productRequest = new MRGSBankProductsRequest();
productRequest.add(consumable, MRGSBillingProduct.CONS);
productRequest.add(nonConsumable, MRGSBillingProduct.NONCONS);
productRequest.add(subscriptions, MRGSBillingProduct.SUBS);
// The result of request will be sent to one of
// MRGSBillingDelegate#onReceiveProductsResponse(MRGSBankProductsResponse)
// or to MRGSBillingDelegate#onReceiveProductsError(MRGSBankProductsResponse)
billing.requestProductsInfo(productRequest);
// Buy product
// создание специального объекта запроса платежа и добавлением пейлоада
final String sku = "games.my.mrgs.purchase1";
final String devPayload = "{\"item\": 123,\"store\": 456}";
final MRGSBankPurchaseRequest purchaseRequest = new MRGSBankPurchaseRequest(sku, devPayload);
// The result of request will be sent to one of
// MRGSBillingDelegate#onReceiveSuccessfulPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegate#onReceiveFailedPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegate#onReceivePendingPurchase(MRGSBankPurchaseResult),
// or MRGSBillingDelegate#onReceiveCancelledPurchase(MRGSBankPurchaseResult).
billing.buyItem(purchaseRequest);
После
import java.util.Arrays;
import java.util.List;
import games.my.mrgs.billing.MRGSBilling;
import games.my.mrgs.billing.MRGSBillingDelegate;
import games.my.mrgs.billing.MRGSBillingEntities.MRGSBankProductsRequest;
import games.my.mrgs.billing.MRGSBillingEntities.MRGSBankPurchaseRequest;
import games.my.mrgs.billing.MRGSBillingProduct;
final MRGSBilling billing = MRGSBilling.getInstance();
final MRGSBillingDelegate listener = new MRGSBillingDelegate() {
...
};
billing.setDelegate(listener);
// Request Products
final List<String> consumable = Arrays.asList(
"games.my.mrgs.purchase1",
"games.my.mrgs.purchase2",
"android.test.purchased");
final List<String> nonConsumable = Arrays.asList("games.my.mrgs.mrgservisetest.noncons");
final List<String> subscriptions = Arrays.asList(
"games.my.mrgs.subs1",
"games.my.mrgs.subs2",
"games.my.mrgs.subs3");
final MRGSBankProductsRequest productRequest = new MRGSBankProductsRequest();
productRequest.add(consumable, MRGSBillingProduct.CONS);
productRequest.add(nonConsumable, MRGSBillingProduct.NONCONS);
productRequest.add(subscriptions, MRGSBillingProduct.SUBS);
// The result of request will be sent to one of
// MRGSBillingDelegate#onReceiveProductsResponse(MRGSBankProductsResponse)
// or to MRGSBillingDelegate#onReceiveProductsError(MRGSBankProductsResponse)
billing.requestProductsInfo(productRequest);
// Buy product
// создание специального объекта запроса платежа и добавлением пейлоада
final String sku = "games.my.mrgs.purchase1";
final String devPayload = "{\"item\": 123,\"store\": 456}";
final MRGSBankPurchaseRequest purchaseRequest = new MRGSBankPurchaseRequest(sku, devPayload);
// The result of request will be sent to one of
// MRGSBillingDelegate#onReceiveSuccessfulPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegate#onReceiveFailedPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegate#onReceivePendingPurchase(MRGSBankPurchaseResult),
// or MRGSBillingDelegate#onReceiveCancelledPurchase(MRGSBankPurchaseResult).
billing.buyItem(purchaseRequest);
MRGSFirebase🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:firebase:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSFirebaseAnalyticsперемещен изru.mail.mrgservice.firebaseвgames.my.mrgs.firebase.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import java.util.Map;
import java.util.TreeMap;
import ru.mail.mrgservice.firebase.MRGSFirebaseAnalytics;
final Map<String, Object> params = new TreeMap<>();
params.put("someInfoKey", "someImportantInfo");
MRGSFirebaseAnalytics.getInstance().sendEvent("event_name", params);
После
import java.util.Map;
import java.util.TreeMap;
import games.my.mrgs.firebase.MRGSFirebaseAnalytics;
final Map<String, Object> params = new TreeMap<>();
params.put("someInfoKey", "someImportantInfo");
MRGSFirebaseAnalytics.getInstance().sendEvent("event_name", params);
MRGSGDPR🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:gdpr:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSCCPAперемещен изru.mail.mrgservice.ccpaвgames.my.mrgs.ccpa. - Класс
MRGSCCPAперемещен изru.mail.mrgservice.coppaвgames.my.mrgs.coppa. -
Класс
MRGSGDPRперемещен изru.mail.mrgservice.gdprвgames.my.mrgs.gdpr. -
Интерфейс
MRGSCOPPAParametersперемещен изru.mail.mrgservice.coppaвgames.my.mrgs.coppa. - Интерфейс
MRGSCOPPAShowResultперемещен изru.mail.mrgservice.coppaвgames.my.mrgs.coppa.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.gdpr.MRGSGDPR;
final MRGSGDPR gdpr = MRGSGDPR.getInstance();
gdpr.setDelegate(this);
gdpr.onlyEU(true);
gdpr.setBackgroundColor(255, 0, 0);
gdpr.withAdvertising(true);
gdpr.setLocalizationLanguage("en");
После
import games.my.mrgs.gdpr.MRGSGDPR;
final MRGSGDPR gdpr = MRGSGDPR.getInstance();
gdpr.setDelegate(this);
gdpr.onlyEU(true);
gdpr.setBackgroundColor(255, 0, 0);
gdpr.withAdvertising(true);
gdpr.setLocalizationLanguage("en");
MRGSNotifications🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:notifications:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSNotificationCenterперемещен изru.mail.mrgserviceвgames.my.mrgs.notifications. - Класс
MRGSNotificationChannelперемещен изru.mail.mrgserviceвgames.my.mrgs.notifications. - Класс
MRGSNotificationChannelGroupперемещен изru.mail.mrgserviceвgames.my.mrgs.notifications. - Класс
MRGSPushNotificationперемещен изru.mail.mrgserviceвgames.my.mrgs.notifications. - Класс
MRGSPushNotificationHandlerперемещен изru.mail.mrgserviceвgames.my.mrgs.notifications.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGS;
import ru.mail.mrgservice.MRGSMap;
import ru.mail.mrgservice.MRGSNotificationCenter;
import ru.mail.mrgservice.MRGSNotificationChannel;
import ru.mail.mrgservice.MRGSNotificationChannelGroup;
import ru.mail.mrgservice.MRGSPushNotification;
import ru.mail.mrgservice.MRGSPushNotificationHandler.MRGSPushNotificationDelegate;
final MRGSNotificationCenter notificationCenter = MRGSNotificationCenter.getInstance();
// Create a listener for local and remote notification.
// You can create another listener to separate notifications or uses one and separate them
// with boolean isLocal
MRGSPushNotificationDelegate notifyDelegate = new MRGSPushNotificationDelegate() {
@Override
public void clickOnNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
@Override
public void receivedNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
};
notificationCenter.setLocalDelegate(notifyDelegate);
notificationCenter.setRemoteDelegate(notifyDelegate);
// Create notification channel group
final MRGSNotificationChannelGroup group = new MRGSNotificationChannelGroup("my_group_id", "My Group");
notificationCenter.createNotificationChannelGroup(context, group);
// Create notification channel
final MRGSNotificationChannel channel = new MRGSNotificationChannel("my_channel_id", "My Channel");
channel.setDescription("Description");
channel.setGroup("my_group_id");
channel.setSound("push_sound");
channel.enableLights(true);
notificationCenter.createNotificationChannel(context, channel);
// Create local push notification
final int time = MRGS.timeUnix() + 10;
MRGSPushNotification notification = MRGSPushNotification.create("Message number 1", 1, time);
notification.setGroupId(222);
notification.setGroupMessage("New resources arrived");
notification.setGroupTitle("Receive your resources");
notificationCenter.addLocalPush(notification);
После
import games.my.mrgs.MRGS;
import games.my.mrgs.MRGSMap;
import games.my.mrgs.notifications.MRGSNotificationCenter;
import games.my.mrgs.notifications.MRGSNotificationChannel;
import games.my.mrgs.notifications.MRGSNotificationChannelGroup;
import games.my.mrgs.notifications.MRGSPushNotification;
import games.my.mrgs.notifications.MRGSPushNotificationHandler.MRGSPushNotificationDelegate;
final MRGSNotificationCenter notificationCenter = MRGSNotificationCenter.getInstance();
// Create a listener for local and remote notification.
// You can create another listener to separate notifications or uses one and separate them
// with boolean isLocal
MRGSPushNotificationDelegate notifyDelegate = new MRGSPushNotificationDelegate() {
@Override
public void clickOnNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
@Override
public void receivedNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
};
notificationCenter.setLocalDelegate(notifyDelegate);
notificationCenter.setRemoteDelegate(notifyDelegate);
// Create notification channel group
final MRGSNotificationChannelGroup group = new MRGSNotificationChannelGroup("my_group_id", "My Group");
notificationCenter.createNotificationChannelGroup(context, group);
// Create notification channel
final MRGSNotificationChannel channel = new MRGSNotificationChannel("my_channel_id", "My Channel");
channel.setDescription("Description");
channel.setGroup("my_group_id");
channel.setSound("push_sound");
channel.enableLights(true);
notificationCenter.createNotificationChannel(context, channel);
// Create local push notification
final int time = MRGS.timeUnix() + 10;
MRGSPushNotification notification = MRGSPushNotification.create("Message number 1", 1, time);
notification.setGroupId(222);
notification.setGroupMessage("New resources arrived");
notification.setGroupTitle("Receive your resources");
notificationCenter.addLocalPush(notification);
MRGSRecommendations🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:recsys:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSRecommendationsперемещен изru.mail.mrgservice.recsysвgames.my.mrgs.recsys. - Класс
MRGSRecSysEventперемещен изru.mail.mrgservice.recsysвgames.my.mrgs.recsys. - Класс
MRGSRecSysEventsперемещен изru.mail.mrgservice.recsysвgames.my.mrgs.recsys.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.recsys.MRGSRecSysEvent;
import ru.mail.mrgservice.recsys.MRGSRecSysEvents;
import ru.mail.mrgservice.recsys.MRGSRecommendations;
final MRGSRecommendations recSys = MRGSRecommendations.getInstance();
final MRGSRecSysEvent offerEvent = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_VIEW);
recSys.trackEvent(offerEvent);
final MRGSRecSysEvent offerClick = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_CLICK);
recSys.trackEvent(offerClick);
final MRGSRecSysEvent offerBuy = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_CLICK);
offerBuy.putParam("sku", "ru.mail.mrgstestpurchase");
offerBuy.putParam("gameOfferId", "offer123");
recSys.trackEvent(offerBuy);
После
import games.my.mrgs.recsys.MRGSRecSysEvent;
import games.my.mrgs.recsys.MRGSRecSysEvents;
import games.my.mrgs.recsys.MRGSRecommendations;
final MRGSRecommendations recSys = MRGSRecommendations.getInstance();
final MRGSRecSysEvent offerEvent = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_VIEW);
recSys.trackEvent(offerEvent);
final MRGSRecSysEvent offerClick = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_CLICK);
recSys.trackEvent(offerClick);
final MRGSRecSysEvent offerBuy = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_CLICK);
offerBuy.putParam("sku", "games.my.mrgstestpurchase");
offerBuy.putParam("gameOfferId", "offer123");
recSys.trackEvent(offerBuy);
MRGSShowcase🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:showcase:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSShowcaseперемещен изru.mail.mrgservice.showcaseвgames.my.mrgs.showcase.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.showcase.MRGSShowcase;
final MRGSShowcase instance = MRGSShowcase.getInstance();
instance.setShowListener(this);
instance.setNewContentListener(this);
instance.showContent();
После
import games.my.mrgs.showcase.MRGSShowcase;
final MRGSShowcase instance = MRGSShowcase.getInstance();
instance.setShowListener(this);
instance.setNewContentListener(this);
instance.showContent();
MRGSSupport🔗
Обновите SDK🔗
dependencies {
- def mrgsVersion = "5.0.0"
+ def mrgsVersion = "6.0.0"
implementation "games.my.mrgs:support:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSMyComSupportпереименован вMRGSMyGamesSupportи перемещен изru.mail.mrgserviceвgames.my.mrgs.support. - Класс
MRGSMyComSupportDialogудален, используйтеMRGSMyGamesSupport. - Класс
MyComSupportParamsудален, используйтеMRGSMyGamesSupportWidgetConfig. -
Класс
MRGSMyGamesSupportTicketперемещен изru.mail.mrgservice.supportвgames.my.mrgs.support. -
Интерфейс
MRGSMyGamesSupportDialog.MyComListenerудален, используйтеMRGSMyGamesSupport.show(Activity, Consumer<MRGSError>). -
Enum
ru.mail.mrgservice.MRGSMyComSupport.Credential.SocialNetwork.VKудален. -
Метод
MRGSMyComSupport#getMyComSupport()переименован вMRGSMyGamesSupport#getInstance(). -
Метод
MRGSMyGamesSupportDialog.setCode(String)удален, используйтеMRGSMyGamesSupportWidgetConfig.setAuthCode(String). -
Метод
MRGSMyGamesSupportDialog.setFull(bool)удален, используйтеMRGSMyGamesSupportWidgetConfig.setFullscreen(bool). -
Метод
MRGSMyGamesSupportDialog.addExtraParam(String)удален, используйтеMRGSMyGamesSupportWidgetConfig.setExtraParameters(String). - Метод
MRGSMyGamesSupportDialog.show()удален, используйтеMRGSMyGamesSupport.show(Activity) - Метод
MRGSMyGamesSupportDialog.showFeedback()удален, используйтеMRGSMyGamesSupport.show(Activity, MRGSMyGamesSupportWidgetConfig). - Метод
MRGSMyGamesSupportDialog.setLocalizationLanguage(String)удален, ИспользуйтеWidgetConfig.setLanguage(String). - Метод
MRGSMyGamesSupportDialog.setCategory(String)удален, используйтеWidgetConfig.setPage(WidgetPage). -
Метод
MRGSMyGamesSupportDialog.setListener(OnUiListener)удален, используйтеMRGSMyGamesSupport.show(Activity, Consumer<MRGSError>). -
Метод
MRGSMyGamesSupportDialog.setErrorTitle(String). удален, используйтеMRGSMyGamesSupportLocalization.setErrorDialogParams(String, String, String). - Метод
MRGSMyGamesSupportDialog.setErrorMessage(String)удален, используйтеMRGSMyGamesSupportLocalization.setErrorDialogParams(String, String, String). -
Метод
MRGSMyGamesSupportDialog.setErrorButton(String)удален, используйтеMRGSMyGamesSupportLocalization.setErrorDialogParams(String, String, String). -
Метод
MRGSMyGamesSupportDialog.setText(String)удален, так как больше не используется. - Метод
MRGSMyGamesSupportDialog.setWritePermissionRationaleDialogParams(String, String, String, String)удален, используйтеMRGSMyGamesSupportLocalization.setWritePermissionRationaleDialogParams(String, String, String, String). -
Метод
MRGSMyGamesSupportDialog.setWritePermissionSettingsDialogParams(String, String, String, String)удален, используйтеMRGSMyGamesSupportLocalization.setWritePermissionSettingsDialogParams(String, String, String, String). -
Метод
MRGSMyGamesSupportDialog.setRequestSettingClassName(String)удален, так как больше не используется. - Метод
MRGSMyGamesSupportDialog.setRequestRationalActivityClassName(String)удален, так как больше не используется. - Метод
MRGSMyGamesSupportDialog.setRequestRationalDialogParams(String, String, int)удален, так как больше не используется. - Метод
MRGSMyGamesSupportDialog.setRequestRationalDialogParams(String, String)удален, так как больше не используется. - Метод
MRGSMyGamesSupportDialog.setRequestSettingsDialogParams(String, String, String)удален, так как больше не используется. - Метод
MRGSMyGamesSupportDialog.setRequestSettingsDialogParams(String, String, String, int)удален, так как больше не используется. - Метод
MRGSMyGamesSupportDialog.setRequestSettingsDialogParams(String, String, String, int, String, String)удален, так как больше не используется.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSMyComSupportDialog;
final MRGSMyComSupportDialog dialog = new MRGSMyComSupportDialog(activity);
dialog.setCategory(<CATEGORY>);
dialog.setText(<TEXT>);
dialog.setListener(this);
dialog.show();
// Or show feedback
dialog.showFeedback();
После
import android.app.Activity;
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.setExtraParameters(<Payload>);
MRGSMyGamesSupport.getInstance().show(activity, widgetConfig, new Consumer<MRGSError>() {
@Override
public void accept(@Nullable MRGSError error) {
// Support widget was closed.
// Check if there was any errors
if (error != null) {
// Handle the error
}
}
});
// Or show feedback
widgetConfig.setPage(MRGSMyGamesSupportWidgetPage.FEEDBACK);
MRGSMyGamesSupport.getInstance().show(activity, widgetConfig, callback);
4.x.x → 5.0.0🔗
В версии 5.0.0 содержатся обратно несовместимые изменения из-за частично переработано API: удалили @Deprecated функционал, поменяли имена функций, исправили опечатки, у публичного API изменился package, а приватное API переехало в internal.
Java 8🔗
Так же для работы SDK требуется подключить к проекту Java не ниже версии 8 в ваш application модуль. Скорее всего у вас уже используется Java 8 или выше, просто проверьте настройки вашего приложения.
apply plugin: 'com.android.application'
android {
compileSdkVersion ...
buildToolsVersion ...
defaultConfig { ... }
buildTypes { ... }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
}
Поддержка Maven репозитория🔗
Была добавлена поддержка распространения SDK через Maven репозиторий. Для этого надо добавить url в корневой build.gradle (для com.android.tools.build:gradle:7.0.4 и ниже ) или в settings.gradle (для com.android.tools.build:gradle:7.1.0 и выше)
MRGService🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGService', ext:'aar')
+ implementation "games.my.mrgs:core:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
-
Переделан способ инициализации MRGService. Теперь он похож на способ который используется MRGS Unity SDK. Смотри Подключение Android SDK
-
Интерфейс
MRGService.ActivityResultListenerудален. - Интерфейс
Printableудален. - Интерфейс
MRGSIntegrationCheck.MRGSIntegrationCheckListenerудален. - Класс
MRGSX509ExtendedTrustManagerудален. - Класс
MRGSX509TrustManagerудален. - Класс
MRGSAirLogудален. -
Класс
MRGSExtSDKудален. -
Метод
MRGService#instance()переименован вMRGService#getInstance(). - Метод
MRGService#checkIntegration(MRGSIntegrationCheck.MRGSIntegrationCheckListener)удален. ИспользуйтеcheckIntegration(@Nullable Consumer<MRGSIntegrationCheckResult>). - Метод
MRGService#initialized()удален. ИспользуйтеMRGService#isInitialized(). - Метод
MRGService#registerResultListener(ActivityResultListener)удален. - Метод
MRGService#unregisterResultListener(ActivityResultListener)удален. - Метод
MRGService#onActivityRes(Activity, int, int, Intent)удален. - Метод
MRGService#registerTransferManagerDelegate(String, MRGSTransferManagerDelegate)удален. - Метод
MRGService#unregisterTransferManagerDelegate(MRGSTransferManagerDelegate)удален. - Метод
MRGService#getIsRunService()удален. - Метод
MRGService#setAppContext(Context)удален. - Метод
MRGService#onStart(Activity)удален. - Метод
MRGService#onStop(Activity)удален. - Метод
MRGService#getSharedPreferences(String)удален. ИспользуйтеMRGSSharedPreferences#newInstance(String). - Метод
MRGService#getSharedPreferences(Context, String)удален. ИспользуйтеMRGSSharedPreferences#newInstance(Context, String). - Метод
MRGService#sendHandleException(String)удален. ИспользуйтеMRGSCrashReports#sendHandleException(String). -
Метод
MRGService#sendHandleException(String, String)удален. ИспользуйтеMRGSCrashReports#sendHandleException(String, String). -
Метод
MRGSLog#log(String)удален. -
Метод
MRGSMetrics.addPurchase(String, String, String)удален. ИспользуйтеMRGSMetrics.addPurchase(MRGSPurchaseEvent). -
Метод
MRGSUsers#instance()переименован вMRGSUsers#getInstance(). -
Метод
MRGSUsers#getCurrentUser()теперь возвращает MRGSUser вместо MRGSMap. -
Метод
MRGSDevice#instance()переименован вMRGSDevice#getInstance(). - Метод
MRGSDevice#useOldUDIDMethod()удален. - Метод
MRGSDevice#shouldUseOldUDIDMethod()удален. - Метод
MRGSDevice#generateDeviceIdOld(Context)удален. - Метод
MRGSDevice#getGoogleAccountPrimary()удален. - Метод
MRGSDevice#getODIN1()удален. - Метод
MRGSDevice#getIMEI()удален. - Метод
MRGSDevice#openSystemSettingsOfApplication()удален.MRGSDevice#openApplicationDetailsSettings(Context). -
Метод
MRGSDevice#getOldOpenUDID()переименован вMRGSDevice#getDeviceIdOrUUID(). -
Метод
MRGSApplication#instance()переименован вMRGSApplication#getInstance(). -
Метод
MRGSApplication#getApplicationBundleName()больше не будет возвращать null. -
Метод
MRGSServerData#instance()переименован вMRGSServerData#getInstance().
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import android.os.Bundle;
import ru.mail.mrgservice.MRGSBillingDelegateEx;
import ru.mail.mrgservice.MRGService;
// Setting MRGService
final Bundle serviceParams = new Bundle();
serviceParams.putBoolean("debug", false);
serviceParams.putString("billing", "google");
// Setting External SDKS
final Bundle externalSDKParams = new Bundle();
// Setting MyTracker
final Bundle tracker = new Bundle();
tracker.putString("appId", "MY_TRACKER_SDK_KEY");
tracker.putString("enable", "true");
tracker.putString("debug", "false");
externalSDKParams.putBundle("MyTracker", tracker);
// Setting AppsFlyer
Bundle appsFlyer = new Bundle();
appsFlyer.putString("app_key", "<APPS_FLYER_DEVKEY>");
appsFlyer.putString("debug", "false");
appsFlyer.putString("enable", "true");
externalSDKParams.putBundle("AppsFlyer", appsFlyer);
// Setting other external SDKS
externalSDKParams.putBundle("Facebook", facebook);
externalSDKParams.putBundle("GoogleGames", googleGames);
MRGService.service(context, null, MRGS_APP_ID, CLIENT_SECRET, serviceParams, externalSDKParams);
После
import ru.mail.mrgservice.MRGSExternalSDKParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.AppsFlyerParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.MyTrackerParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.FacebookParams;
import ru.mail.mrgservice.MRGSExternalSDKParams.GooglePlayGamesParams;
import ru.mail.mrgservice.MRGSPlatform;
import ru.mail.mrgservice.MRGService;
import ru.mail.mrgservice.MRGServiceParams;
// Setting MRGService
// Available MRGSPlatform: AMAZON, ANDROID, HUAWEI, SAMSUNG and FACEBOOK_CLOUD
final MRGServiceParams serviceParams
= MRGServiceParams.init(<MRGS_APP_ID>, <CLIENT_SECRET>, MRGSPlatform.ANDROID)
serviceParams.setDebuggable(false);
// Setting External SDKS
final MRGSExternalSDKParams externalSDKParams = MRGSExternalSDKParams.newInstance();
// Setting MyTracker
final MyTrackerParams myTrackerParams = MyTrackerParams.init("MY_TRACKER_SDK_KEY");
myTrackerParams.setDebuggable(false);
externalSDKParams.myTrackerParams = myTrackerParams;
// Setting AppsFlyer
final AppsFlyerParams appsFlyerParams = AppsFlyerParams.init("DEV_KEY");
appsFlyerParams.setDebuggable(false);
appsFlyerParams.setForwardMetricsEnabled(true);
externalSDKParams.appsFlyerParams = appsFlyerParams;
// Setting other external SDKS
externalSDKParams.facebookParams = FacebookParams.init("FACEBOOK_APP_ID");
externalSDKParams.googlePlayGamesParams = GooglePlayGamesParams.init("GOOGLE_CLIENT_ID");
MRGService.service(context, serviceParams, externalSDKParams);
MRGSAdvertising🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSAdvertising', ext:'aar')
+ implementation "games.my.mrgs:advertising:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSAdvertisingConstsудален. - Класс
MRGSAdvertisingFactoryперемещен изru.mail.mrgserviceвru.mail.mrgservice.advertising.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSAdvertisingFactory;
import ru.mail.mrgservice.advertising.MRGSAdvert;
final MRGSAdvert videoAdvert = MRGSAdvertisingFactory.createMRGSAdvertising(true);
videoAdvert.showContent();
После
import ru.mail.mrgservice.advertising.MRGSAdvert;
import ru.mail.mrgservice.advertising.MRGSAdvertisingFactory;
final MRGSAdvert videoAdvert = MRGSAdvertisingFactory.createMRGSAdvertising(true);
videoAdvert.showContent();
MRGSAnalytics🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSAnalytics', ext:'aar')
+ implementation "games.my.mrgs:analytics:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSGoogleConversionудален. - Класс
MRGSAnalyticsперемещен изru.mail.mrgserviceвru.mail.mrgservice.analytics. -
Класс
MRGSAppsFlyerперемещен изru.mail.mrgserviceвru.mail.mrgservice.analytics. -
Метод
MRGSAnalytics#getGoogleConversion()удален. - Метод
MRGSAppsFlyer#setCustomerUserId(String)удален. ИспользуйтеMRGSAppsFlyer#forceCustomerUserId(String)
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSAnalytics;
import ru.mail.mrgservice.MRGSAppsFlyer;
final MRGSAnalytics analytics = MRGSAnalytics.getInstance();
analytics.sendEvent("<Event>", null);
MRGSAppsFlyer.forceCustomerUserId("custom_user_id");
final MRGSAppsFlyer appsFlyer = analytics.getAppsFlyer();
appsFlyer.sendEvent("<Event>", "<Value>");
После
import ru.mail.mrgservice.analytics.MRGSAnalytics;
import ru.mail.mrgservice.analytics.MRGSAppsFlyer;
final MRGSAnalytics analytics = MRGSAnalytics.getInstance();
analytics.sendEvent("<Event>", null);
MRGSAppsFlyer.forceCustomerUserId("custom_user_id");
final MRGSAppsFlyer appsFlyer = analytics.getAppsFlyer();
appsFlyer.sendEvent("<Event>", "<Value>");
MRGSAuthentications🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSAuthentication', ext:'aar')
+ implementation "games.my.mrgs:authentication:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSAmazonперемещен изru.mail.mrgservice.amazonвru.mail.mrgservice.authentication.amazon. - Класс
MRGSFacebookперемещен изru.mail.mrgservice.facebookвru.mail.mrgservice.authentication.facebook.. - Класс
MRGSGoogleGamesперемещен изru.mail.mrgservice.googlegamesвru.mail.mrgservice.authentication.googlegames. - Класс
MRGSMyGamesперемещен изru.mail.mrgservice.mygamesвru.mail.mrgservice.authentication.mygames. - Класс
MRGSVKперемещен изru.mail.mrgservice.vkвru.mail.mrgservice.authentication. - Класс
MRGSUserтеперь является интерфейсом а так же перемещен изfrom ru.mail.mrgserviceвru.mail.mrgservice.authentication.amazon. - Класс
FacebookUserудален. - Класс
MRGSCredentialsтеперь является интерфейсом. -
Класс
MRGSAuthInfoпомечен как @Deprecated. ИспользуйтеMRGSAccessToken. -
Интерфейс
MRGSAuthentication.ExternalLogoutCallbackпомечен как @Deprecated. ИспользуйтеMRGSAuthentication.OnExternalLogoutListener. - Интерфейс
MRGSSocialперемещен изru.mail.mrgservice.socialвru.mail.mrgservice.authentication. - Интерфейс
MRGSScoreперемещен изru.mail.mrgservice.gamesвru.mail.mrgservice.authentication. - Интерфейс
MRGSLeaderBoardsперемещен изru.mail.mrgservice.gamesвru.mail.mrgservice.authentication. - Интерфейс
MRGSAchievementsперемещен изru.mail.mrgservice.gamesвru.mail.mrgservice.authentication. -
Интерфейс
MRGSAuthInfoCallback.javaудален. -
Enum
MRGSAuthenticationNetwork.MRGSAuthenticationNetworkAmazonпереименован вMRGSAuthenticationNetwork.AMAZON. - Enum
MRGSAuthenticationNetwork.MRGSAuthenticationNetworkFacebookпереименован вMRGSAuthenticationNetwork.FACEBOOK. - Enum
MRGSAuthenticationNetwork.MRGSAuthenticationNetworkGoogleGamesпереименован вMRGSAuthenticationNetwork.GOOGLE_GAMES. - Enum
MRGSAuthenticationNetwork.MRGSAuthenticationNetworkMyGamesпереименован вMRGSAuthenticationNetwork.MY_GAMES. - Enum
MRGSAuthenticationNetwork.MRGSAuthenticationNetworkVKontakteпереименован вMRGSAuthenticationNetwork.VKONTAKTE. -
Enum
MRGSAuthenticationNetwork.Unknownпереименован вMRGSAuthenticationNetwork.UNKNOWN. -
Метод
MRGSAuthentication#loginWithScopes(List<String>, MRGSLoginCallback)помечен как @Deprecated. ИспользуйтеMRGSAuthentication#login(List<String>, MRGSLoginCallback). - Метод
MRGSAuthentication#getAuthInfo(BiConsumer<MRGSAuthInfo, MRGSError>)помечен как @Deprecated. ИспользуйтеMRGSAuthentication#getAccessToken(BiConsumer<MRGSAuthInfo, MRGSError>). - Метод
MRGSAuthentication#getUserAvatar(MRGSUser, MRGSAvatarCallback, int, int)помечен как @Deprecated. ИспользуйтеMRGSAuthentication#getUserAvatar(MRGSUser, int, int, MRGSAvatarCallback). -
Метод
MRGSAuthentication#setOnExternalLogoutCallback(ExternalLogoutCallback)помечен как @Deprecated. ИспользуйтеMRGSAuthentication#setOnExternalLogoutListener(OnExternalLogoutListener). -
Метод
MRGSAmazon#tryUpdateToken()удален. ИспользуйтеMRGSAmazon#getAccessToken(BiConsumer<MRGSAccessToken, MRGSError>). -
Метод
MRGSAchievement#achievementId()помечен как @Deprecated. ИспользуйтеMRGSAchievement#getAchievementId(). - Метод
MRGSAchievement#name()помечен как @Deprecated. ИспользуйтеMRGSAchievement#getName(). - Метод
MRGSAchievement#description()помечен как @Deprecated. ИспользуйтеMRGSAchievement#getDescription(). - Метод
MRGSAchievement#state()помечен как @Deprecated. ИспользуйтеMRGSAchievement#getState(). - Метод
MRGSAchievement#currentSteps()помечен как @Deprecated. ИспользуйтеMRGSAchievement#getCurrentSteps(). - Метод
MRGSAchievement#totalSteps()помечен как @Deprecated. ИспользуйтеMRGSAchievement#getTotalSteps(). -
Метод
MRGSAchievement#completionPercent()помечен как @Deprecated. ИспользуйтеMRGSAchievement#getCompletionPercent(). -
Метод
MRGSCredentials#setUserId(String)удален. - Метод
MRGSCredentials#setUser(MRGSUser)удален. - Метод
MRGSCredentials#setAuthInfo(MRGSAuthInfo)удален. -
Метод
MRGSCredentials#getAuthInfo()помечен как @Deprecated. ИспользуйтеMRGSCredentials#getAccessToken(). -
Метод
MRGSLeaderboard#leaderboardId()помечен как @Deprecated. ИспользуйтеMRGSLeaderboard#getLeaderboardId(). -
Метод
MRGSLeaderboard#name()помечен как @Deprecated. ИспользуйтеMRGSLeaderboard#getName(). -
Метод
MRGSScore#leaderboardId()помечен как @Deprecated. ИспользуйтеMRGSScore#getLeaderboardId(). - Метод
MRGSScore#rank()помечен как @Deprecated. ИспользуйтеMRGSScore#getRank(). - Метод
MRGSScore#displayRank()помечен как @Deprecated. ИспользуйтеMRGSScore#getDisplayRank(). - Метод
MRGSScore#rawScore()помечен как @Deprecated. ИспользуйтеMRGSScore#getRawScore(). - Метод
MRGSScore#displayScore()помечен как @Deprecated. ИспользуйтеMRGSScore#getDisplayScore(). -
Метод
MRGSScore#player()помечен как @Deprecated. ИспользуйтеMRGSScore#getPlayer(). -
Метод
MRGSUser#userId()помечен как @Deprecated. ИспользуйтеMRGSUser#getUserId(). - Метод
MRGSUser#nick()помечен как @Deprecated. ИспользуйтеMRGSUser#getNickName(). - Метод
MRGSUser#firstName()помечен как @Deprecated. ИспользуйтеMRGSUser#getFirstName(). - Метод
MRGSUser#lastName()помечен как @Deprecated. ИспользуйтеMRGSUser#getLastName(). - Метод
MRGSUser#middleName()помечен как @Deprecated. ИспользуйтеMRGSUser#getMiddleName(). - Метод
MRGSUser#fullName()помечен как @Deprecated. ИспользуйтеMRGSUser#getFullName(). - Метод
MRGSUser#displayName()помечен как @Deprecated. ИспользуйтеMRGSUser#getDisplayName(). - Метод
MRGSUser#gender()помечен как @Deprecated. ИспользуйтеMRGSUser#getGender(). - Метод
MRGSUser#birthDate()помечен как @Deprecated. ИспользуйтеMRGSUser#getBirthDate(). - Метод
MRGSUser#location()помечен как @Deprecated. ИспользуйтеMRGSUser#getLocation(). - Метод
MRGSUser#socialId()помечен как @Deprecated. ИспользуйтеMRGSUser#getSocialId().
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import androidx.annotation.Nullable;
import java.util.Arrays;
import ru.mail.mrgservice.MRGSError;
import ru.mail.mrgservice.MRGSUser;
import ru.mail.mrgservice.authentication.MRGSAuthInfo;
import ru.mail.mrgservice.authentication.MRGSAuthentication;
import ru.mail.mrgservice.authentication.MRGSAuthenticationNetwork;
import ru.mail.mrgservice.authentication.MRGSCredentials;
import ru.mail.mrgservice.authentication.MRGSLoginCallback;
import ru.mail.mrgservice.utils.optional.BiConsumer;
final MRGSAuthentication authentication = AuthenticationImpl.getInstance();
// Set logout listener
authentication.setOnExternalLogoutCallback(new MRGSAuthentication.ExternalLogoutCallback() {
@Override
public void onUserLogout(MRGSAuthenticationNetwork network) {
// Handle result
}
});
// Common login
authentication.login(new MRGSLoginCallback() {
@Override
public void onSuccess(MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(MRGSError error) {
// Handle error
}
});
// Login with scopes
authentication.loginWithScopes(Arrays.asList("scope_1", "scope_2"), new MRGSLoginCallback() {
@Override
public void onSuccess(MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(MRGSError error) {
// Handle error
}
});
// Get current user's information
authentication.getCurrentUser(new MRGSAuthentication.UserCallback() {
@Override
public void onSuccess(final MRGSUser user) {
// Handle result
}
@Override
public void onError(MRGSError error) {
}
});
// Get current user's authentication information
authentication.getAuthInfo(new BiConsumer<MRGSAuthInfo, MRGSError>() {
@Override
public void accept(@Nullable MRGSAuthInfo authInfo, @Nullable MRGSError error) {
if (error != null) {
// Handle error
} else {
// Handle result
}
}
});
// Call logout
authentication.logout();
После
import java.util.Arrays;
import ru.mail.mrgservice.MRGSError;
import ru.mail.mrgservice.authentication.MRGSAccessToken;
import ru.mail.mrgservice.authentication.MRGSAuthentication;
import ru.mail.mrgservice.authentication.MRGSAuthentication.OnExternalLogoutListener;
import ru.mail.mrgservice.authentication.MRGSAuthenticationNetwork;
import ru.mail.mrgservice.authentication.MRGSCredentials;
import ru.mail.mrgservice.authentication.MRGSLoginCallback;
import ru.mail.mrgservice.authentication.MRGSUser;
import ru.mail.mrgservice.utils.optional.BiConsumer;
final MRGSAuthentication authentication = AuthenticationImpl.getInstance();
// Set logout listener
authentication.setOnExternalLogoutListener(new OnExternalLogoutListener() {
@Override
public void onUserLogout(@NonNull MRGSAuthenticationNetwork network) {
// Handle result
}
});
// Common login
authentication.login(new MRGSLoginCallback() {
@Override
public void onSuccess(@NonNull MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error
}
});
// Login with scopes
authentication.login(Arrays.asList("scope_1", "scope_2"), new MRGSLoginCallback() {
@Override
public void onSuccess(@NonNull MRGSCredentials credentials) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
// Handle error
}
});
// Get current user's information
authentication.getCurrentUser(new MRGSAuthentication.UserCallback() {
@Override
public void onSuccess(@NonNull final MRGSUser user) {
// Handle result
}
@Override
public void onError(@NonNull MRGSError error) {
}
});
// Get current user's authentication information
authentication.getAccessToken(new BiConsumer<MRGSAccessToken, MRGSError>() {
@Override
public void accept(@Nullable MRGSAccessToken accessToken, @Nullable MRGSError error) {
if (error != null) {
// Handle error
} else {
// Handle result
}
}
});
// Call logout
authentication.logout();
MRGSBilling🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSBilling', ext:'aar')
+ implementation "games.my.mrgs:billing:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSBillingперемещен изru.mail.mrgserviceвru.mail.mrgservice.billing. - Класс
MRGSPurchaseItemпереименован вMRGSBillingProductи перемещен изru.mail.mrgserviceвru.mail.mrgservice.billing. - Класс
MRGSBillingEntitiesперемещен изru.mail.mrgserviceвru.mail.mrgservice.billing. - Класс
MRGSMyGamesBillingперемещен изru.mail.mrgserviceвru.mail.mrgservice.billing. - Интерфейс
MRGSBillingDelegateудален. -
Интерфейс
MRGSBillingDelegateExпереименован вMRGSBillingDelegateи перемещен изru.mail.mrgserviceвru.mail.mrgservice.billing. -
Метод
MRGSBilling#instance()переименован вMRGSBilling#getInstance(). - Метод
MRGSBilling#requestProductsInfoWithRequest(MRGSBankProductsRequest)переименован вMRGSBilling#requestProductsInfo(MRGSBankProductsRequest). - Метод
MRGSBilling#buyItem(String sku, final String type)удален. ИспользуйтеMRGSBilling#buyItem(String sku). - Метод
MRGSBilling#buyItem(String sku, String type, String developerPayload)удален. ИспользуйтеMRGSBilling#buyItem(String sku, String developerPayload). - Метод
MRGSBilling#buyItem(final MRGSPurchaseItem purchase)удален. ИспользуйтеMRGSBilling#buyItem(MRGSBankPurchaseRequest). - Метод
MRGSBilling#setDelegate(MRGSBillingDelegateEx)удален. - Метод
MRGSBilling#changeItem(String, String, String)удален. ИспользуйтеMRGSBilling#buyItem(MRGSBankPurchaseRequest). - Метод
MRGSBilling#changeItem(String, String, String, String)удален. ИспользуйтеMRGSBilling#buyItem(MRGSBankPurchaseRequest). - Метод
MRGSBilling#changeItem(MRGSPurchaseItem, MRGSPurchaseItem)удален. ИспользуйтеMRGSBilling#buyItem(MRGSBankPurchaseRequest). - Метод
MRGSBilling#getProductsInfo(ArrayList<String>)удален. ИспользуйтеMRGSBilling#requestProductsInfo(MRGSBankProductsRequest). - Метод
MRGSBilling#getProductsInfoWithTypes(ArrayList<Pair<String, String>>)удален. ИспользуйтеMRGSBilling#requestProductsInfo(MRGSBankProductsRequest). - Метод
MRGSBilling#getProductsInfoFromPurchaseInfo(ArrayList<MRGSBillingProduct>)удален. ИспользуйтеMRGSBilling#requestProductsInfo(MRGSBankProductsRequest). - Метод
MRGSBilling#notifyMRGSAboutConsume(MRGSPurchaseItem)изменен наMRGSBilling#notifyMRGSAboutConsume(String sku, String transactionId) -
Метод
MRGSBilling#closePayment(MRGSPurchaseItem)удален. ИспользуйтеMRGSBilling#notifyMRGSAboutConsume(String sku, String transactionId) -
Метод
MRGSBillingProduct#createWithPurchaseInfo(String)удален. - Метод
MRGSBillingProduct#createWithPurchaseInfoWithType(String, String)удален. - Метод
MRGSBillingProduct#fromJSON(String)удален. - Метод
MRGSBillingProduct#setSku(String)удален. - Метод
MRGSBillingProduct#setIntroductoryPeriod(String)удален. - Метод
MRGSBillingProduct#setType(String)удален. - Метод
MRGSBillingProduct#getDictionary()удален. - Метод
MRGSBillingProduct#getPurchaseToken()удален. - Метод
MRGSBillingProduct#setPurchaseToken(String token)удален. - Метод
MRGSBillingProduct#getTransactionId()удален. ИспользуйтеMRGSBankTransaction#getTransactionIdentifier(). - Метод
MRGSBillingProduct#getTransactionReceipt()удален. - Метод
MRGSBillingProduct#getResultCode()удален. - Метод
MRGSBillingProduct#getRawPurchaseInfo()удален. ИспользуйтеMRGSBankTransaction#getRawPurchaseResult(). - Метод
MRGSBillingProduct#getDeveloperPayload()удален. ИспользуйтеMRGSBankPurchaseResult#getDeveloperPayload(). - Метод
MRGSBillingProduct#setDeveloperPayload(String)удален. -
Метод
MRGSBillingProduct#getUserId()удален. -
Метод
MRGSBillingDelegate#onReceiveProductsResponceпереименован вMRGSBillingDelegate#onReceiveProductsResponse. - Метод
MRGSBillingDelegate#onReceiveSuccessfullPurchaseпереименован вMRGSBillingDelegate#onReceiveSuccessfulPurchase.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import java.util.Arrays;
import java.util.List;
import ru.mail.mrgservice.MRGSBilling;
import ru.mail.mrgservice.MRGSBillingDelegateEx;
import ru.mail.mrgservice.MRGSBillingEntities.MRGSBankProductsRequest;
import ru.mail.mrgservice.MRGSBillingEntities.MRGSBankPurchaseRequest;
import ru.mail.mrgservice.MRGSPurchaseItem;
final MRGSBilling billing = MRGSBilling.instance();
final MRGSBillingDelegateEx listener = new MRGSBillingDelegateEx() {
...
};
billing.setDelegateEx(listener);
// Request Products
final List<String> consumable = Arrays.asList(
"ru.mail.games.mrgservisetest.purchase1",
"ru.mail.games.mrgservisetest.purchase2",
"android.test.purchased");
final List<String> nonConsumable = Arrays.asList("ru.mail.games.mrgservisetest.noncons");
final List<String> subscriptions = Arrays.asList(
"ru.mail.mrgs.subs1",
"ru.mail.mrgs.subs2",
"ru.mail.mrgs.subs3");
final MRGSBankProductsRequest productRequest = new MRGSBankProductsRequest();
productRequest.add(consumable, MRGSPurchaseItem.CONS);
productRequest.add(nonConsumable, MRGSPurchaseItem.NONCONS);
productRequest.add(subscriptions, MRGSPurchaseItem.SUBS);
// The result of request will be sent to one of
// MRGSBillingDelegateEx#onReceiveProductsResponce(MRGSBankProductsResponse)
// or to MRGSBillingDelegateEx#onReceiveProductsError(MRGSBankProductsResponse)
billing.requestProductsInfoWithRequest(productRequest);
// Buy product
// создание специального объекта запроса платежа и добавлением пейлоада
final String sku = "ru.mail.games.mrgservisetest.purchase1";
final String devPayload = "{\"item\": 123,\"store\": 456}";
final MRGSBankPurchaseRequest purchaseRequest = new MRGSBankPurchaseRequest(sku, devPayload);
// The result of request will be sent to one of
// MRGSBillingDelegateEx#onReceiveSuccessfullPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegateEx#onReceiveFailedPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegateEx#onReceivePendingPurchase(MRGSBankPurchaseResult),
// or MRGSBillingDelegateEx#onReceiveCancelledPurchase(MRGSBankPurchaseResult).
billing.buyItem(purchaseRequest);
После
import java.util.Arrays;
import java.util.List;
import ru.mail.mrgservice.billing.MRGSBilling;
import ru.mail.mrgservice.billing.MRGSBillingDelegate;
import ru.mail.mrgservice.billing.MRGSBillingEntities.MRGSBankProductsRequest;
import ru.mail.mrgservice.billing.MRGSBillingEntities.MRGSBankPurchaseRequest;
import ru.mail.mrgservice.billing.MRGSBillingProduct;
final MRGSBilling billing = MRGSBilling.getInstance();
final MRGSBillingDelegate listener = new MRGSBillingDelegate() {
...
};
billing.setDelegate(listener);
// Request Products
final List<String> consumable = Arrays.asList(
"ru.mail.games.mrgservisetest.purchase1",
"ru.mail.games.mrgservisetest.purchase2",
"android.test.purchased");
final List<String> nonConsumable = Arrays.asList("ru.mail.games.mrgservisetest.noncons");
final List<String> subscriptions = Arrays.asList(
"ru.mail.mrgs.subs1",
"ru.mail.mrgs.subs2",
"ru.mail.mrgs.subs3");
final MRGSBankProductsRequest productRequest = new MRGSBankProductsRequest();
productRequest.add(consumable, MRGSBillingProduct.CONS);
productRequest.add(nonConsumable, MRGSBillingProduct.NONCONS);
productRequest.add(subscriptions, MRGSBillingProduct.SUBS);
// The result of request will be sent to one of
// MRGSBillingDelegate#onReceiveProductsResponse(MRGSBankProductsResponse)
// or to MRGSBillingDelegate#onReceiveProductsError(MRGSBankProductsResponse)
billing.requestProductsInfo(productRequest);
// Buy product
// создание специального объекта запроса платежа и добавлением пейлоада
final String sku = "ru.mail.games.mrgservisetest.purchase1";
final String devPayload = "{\"item\": 123,\"store\": 456}";
final MRGSBankPurchaseRequest purchaseRequest = new MRGSBankPurchaseRequest(sku, devPayload);
// The result of request will be sent to one of
// MRGSBillingDelegate#onReceiveSuccessfulPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegate#onReceiveFailedPurchase(MRGSBankPurchaseResult),
// MRGSBillingDelegate#onReceivePendingPurchase(MRGSBankPurchaseResult),
// or MRGSBillingDelegate#onReceiveCancelledPurchase(MRGSBankPurchaseResult).
billing.buyItem(purchaseRequest);
MRGSFirebase🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSFirebase', ext:'aar')
+ implementation "games.my.mrgs:firebase:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSFirebaseAnalyticsперемещен изru.mail.mrgserviceвru.mail.mrgservice.firebase.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import java.util.Map;
import java.util.TreeMap;
import ru.mail.mrgservice.MRGSFirebaseAnalytics;
final Map<String, Object> params = new TreeMap<>();
params.put("someInfoKey", "someImportantInfo");
MRGSFirebaseAnalytics.getInstance().sendEvent("event_name", params);
После
import java.util.Map;
import java.util.TreeMap;
import ru.mail.mrgservice.firebase.MRGSFirebaseAnalytics;
final Map<String, Object> params = new TreeMap<>();
params.put("someInfoKey", "someImportantInfo");
MRGSFirebaseAnalytics.getInstance().sendEvent("event_name", params);
MRGSGameCenter🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSGameCenter', ext:'aar')
+ implementation "games.my.mrgs:gamecenter:$mrgsVersion"
}
Обновите код🔗
Изменений нет.
MRGSGDPR🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSGDPR', ext:'aar')
+ implementation "games.my.mrgs:gdpr:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSGDPRперемещен изru.mail.mrgserviceвru.mail.mrgservice.gdpr. - Класс
MRGSGDPR.MRGSGDPRFactoryудален. ИспользуйтеMRGSGDPR#getInstance(). -
Интерфейс
MRGSCOPPA.OnResponseCallbackудален из публичного API, так как предназначен для внутренней работы. -
Метод
MRGSGDPR#showAgreementAtActivity(Activity, String, String, int)удален. ИспользуйтеMRGSGDPR#showAgreementAtActivity(Activity, String, String). - Метод
MRGSGDPR#shouldShowGDPRForVersion(Activity, String, int, boolean, MRGSGDPRAsyncStatus)удален. ИспользуйтеMRGSGDPR#shouldShowGDPRForVersion(Activity, String, boolean, MRGSGDPRAsyncStatus). - Метод
MRGSGDPR#setUserHasAcceptedAgreementWithVersion(Context, int, boolean, boolean, String)удален. ИспользуйтеMRGSGDPR#setUserHasAcceptedAgreementWithVersion(Context, boolean, boolean, String). - Метод
MRGSCCPA#fetchCountyIfNeeded()удален из публичного API, так как предназначен для внутренней работы. - Метод
MRGSCOPPA#isUnderUk(Consumer<Boolean>)удален из публичного API, так как предназначен для внутренней работы. - Метод
MRGSCOPPA#shouldShowCoppa(Consumer<Boolean>)удален из публичного API, так как предназначен для внутренней работы. - Метод
MRGSCOPPA#shouldShowCoppa(Context, Consumer<Boolean>)удален из публичного API, так как предназначен для внутренней работы. - Метод
MRGSCOPPA#sendEmail(String, OnResponseCallback<MRGSSendEmailResult>)удален из публичного API, так как предназначен для внутренней работы. - Метод
MRGSCOPPA#checkEmails(List<String>, OnResponseCallback<MRGSCheckEmailResult>)удален из публичного API, так как предназначен для внутренней работы.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSGDPR;
final MRGSGDPR gdpr = MRGSGDPR.getInstance();
gdpr.setDelegate(this);
gdpr.onlyEU(true);
gdpr.setBackgroundColor(255, 0, 0);
gdpr.withAdvertising(true);
gdpr.setLocalizationLanguage("en");
После
import ru.mail.mrgservice.gdpr.MRGSGDPR;
final MRGSGDPR gdpr = MRGSGDPR.getInstance();
gdpr.setDelegate(this);
gdpr.onlyEU(true);
gdpr.setBackgroundColor(255, 0, 0);
gdpr.withAdvertising(true);
gdpr.setLocalizationLanguage("en");
MRGSMyTarget🔗
- Модуль был полностью удален.
MRGSNotifications🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSNotifications', ext:'aar')
+ implementation "games.my.mrgs:notifications:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Класс
MRGSPushNotificationsудален. ИспользуйтеMRGSNotificationCenter. - Класс
MRGSLocalPushServiceудален. ИспользуйтеMRGSNotificationCenter. - Класс
MRGSLocalPushAutoStartReceiverудален. - Класс
MRGSPushNotification.MRGSPushNotificationChannelудален. Используйтеru.mail.mrgservice.MRGSNotificationChannel. -
Класс
MRGSPushNotification.MRGSPushNotificationChannelsGroupудален. Используйтеru.mail.mrgservice.MRGSNotificationChannelGroup. -
Интерфейс
MRGSPushNotificationHandler.MRGSPushNotificationDelegateудален -
Интерфейс
MRGSPushNotificationHandler.MRGSPushNotificationDelegateExпереименован вMRGSPushNotificationHandler.MRGSPushNotificationDelegate. -
Интерфейс
MRGSPushNotificationHandler.MRGSPushNotificationGroupDelegateудален -
Интерфейс
MRGSPushNotificationHandler.MRGSPushNotificationExGroupDelegateпереименован вMRGSPushNotificationHandler.MRGSPushNotificationGroupDelegate. -
Метод
MRGSNotificationCenterImpl.getInstance()удален. ИспользуйтеMRGSNotificationCenter.getInstance(). - Метод
MRGSPushNotification.getCutomTextStrings()переименован вMRGSPushNotification.getCustomTextStrings(). - Метод
MRGSPushNotificationHandler#setDelegate(MRGSPushNotificationDelegateEx)удален.
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGS;
import ru.mail.mrgservice.MRGSMap;
import ru.mail.mrgservice.MRGSNotificationCenter;
import ru.mail.mrgservice.MRGSNotificationCenterImpl;
import ru.mail.mrgservice.MRGSPushNotification;
import ru.mail.mrgservice.MRGSPushNotification.MRGSPushNotificationChannel;
import ru.mail.mrgservice.MRGSPushNotification.MRGSPushNotificationChannelsGroup;
import ru.mail.mrgservice.MRGSPushNotificationHandler.MRGSPushNotificationExDelegate;
final MRGSNotificationCenter notificationCenter = MRGSNotificationCenterImpl.getInstance();
// Create a listener for local and remote notification.
// You can create another listener to separate notifications or uses one and separate them
// with boolean isLocal
MRGSPushNotificationExDelegate notifyDelegate = new MRGSPushNotificationExDelegate() {
@Override
public void clickOnNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
@Override
public void receivedNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
};
notificationCenter.setLocalDelegate(notifyDelegate);
notificationCenter.setRemoteDelegate(notifyDelegate);
// Create notification channel group
final MRGSPushNotificationChannelsGroup group = new MRGSPushNotificationChannelsGroup();
group.Id = "my_group_id";
group.Name = "My Group";
notificationCenter.createNotificationChannelGroup(context, group);
// Create notification channel
final MRGSPushNotificationChannel channel = new MRGSPushNotificationChannel();
channel.Id = "my_channel_id";
channel.Name= "My Channel";
channel.Description = "Description";
channel.Group = "my_group_id";
channel.Sound = "push_sound";
channel.ShowLights = true;
notificationCenter.createNotificationChannel(context, channel);
// Create local push notification
final int time = MRGS.timeUnix() + 10;
MRGSPushNotification notification = MRGSPushNotification.create("Message number 1", 1, time);
notification.setGroupId(222);
notification.setGroupMessage("New resources arrived");
notification.setGroupTitle("Receive your resources");
notificationCenter.addLocalPush(notification);`
После
import ru.mail.mrgservice.MRGS;
import ru.mail.mrgservice.MRGSMap;
import ru.mail.mrgservice.MRGSNotificationCenter;
import ru.mail.mrgservice.MRGSNotificationChannel;
import ru.mail.mrgservice.MRGSNotificationChannelGroup;
import ru.mail.mrgservice.MRGSPushNotification;
import ru.mail.mrgservice.MRGSPushNotificationHandler.MRGSPushNotificationDelegate;
final MRGSNotificationCenter notificationCenter = MRGSNotificationCenter.getInstance();
// Create a listener for local and remote notification.
// You can create another listener to separate notifications or uses one and separate them
// with boolean isLocal
MRGSPushNotificationDelegate notifyDelegate = new MRGSPushNotificationDelegate() {
@Override
public void clickOnNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
@Override
public void receivedNotification(int idNotify, String title, String msg, MRGSMap developerPayload, boolean isLocal) {
//Handle result.
}
};
notificationCenter.setLocalDelegate(notifyDelegate);
notificationCenter.setRemoteDelegate(notifyDelegate);
// Create notification channel group
final MRGSNotificationChannelGroup group = new MRGSNotificationChannelGroup("my_group_id", "My Group");
notificationCenter.createNotificationChannelGroup(context, group);
// Create notification channel
final MRGSNotificationChannel channel = new MRGSNotificationChannel("my_channel_id", "My Channel");
channel.setDescription("Description");
channel.setGroup("my_group_id");
channel.setSound("push_sound");
channel.enableLights(true);
notificationCenter.createNotificationChannel(context, channel);
// Create local push notification
final int time = MRGS.timeUnix() + 10;
MRGSPushNotification notification = MRGSPushNotification.create("Message number 1", 1, time);
notification.setGroupId(222);
notification.setGroupMessage("New resources arrived");
notification.setGroupTitle("Receive your resources");
notificationCenter.addLocalPush(notification);
MRGSRecommendations🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSRecommendations', ext:'aar')
+ implementation "games.my.mrgs:recsys:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
-
Класс
MRGSRecommendationsперемещен изru.mail.mrgserviceвru.mail.mrgservice.recsys. -
Метод
MRGSRecommendations#offerView(String, MRGSMap)удален. ИспользуйтеMRGSRecommendations#trackEvent(MRGSRecSysEvent) - Метод
MRGSRecommendations#offerClick(String, MRGSMap)удален. ИспользуйтеMRGSRecommendations#trackEvent(MRGSRecSysEvent) - Метод
MRGSRecommendations#offerBuy(String, MRGSMap)удален. ИспользуйтеMRGSRecommendations#trackEvent(MRGSRecSysEvent)
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSMap;
import ru.mail.mrgservice.MRGSRecommendations;
final MRGSRecommendations recSys = MRGSRecommendations.getInstance();
recSys.offerView("testOffer1", null);
recSys.offerClick("testOffer1", null);
final MRGSMap buyParams = new MRGSMap();
buyParams.put("sku", "ru.mail.mrgstestpurchase");
buyParams.put("gameOfferId", "offer123");
recSys.offerBuy("testOffer1", buyParams);
После
import ru.mail.mrgservice.recsys.MRGSRecSysEvent;
import ru.mail.mrgservice.recsys.MRGSRecSysEvents;
import ru.mail.mrgservice.recsys.MRGSRecommendations;
final MRGSRecommendations recSys = MRGSRecommendations.getInstance();
final MRGSRecSysEvent offerEvent = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_VIEW);
recSys.trackEvent(offerEvent);
final MRGSRecSysEvent offerClick = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_CLICK);
recSys.trackEvent(offerClick);
final MRGSRecSysEvent offerBuy = new MRGSRecSysEvents.OfferActionEvent("testOffer1", MRGSRecSysEvent.ACTION_TYPE_CLICK);
offerBuy.putParam("sku", "ru.mail.mrgstestpurchase");
offerBuy.putParam("gameOfferId", "offer123");
recSys.trackEvent(offerBuy);
MRGSShowcase🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSShowcase', ext:'aar')
+ implementation "games.my.mrgs:showcase:$mrgsVersion"
}
Обновите код🔗
Изменений нет.
MRGSSupport🔗
Обновите SDK🔗
Теперь SDK можно подключить через Maven репозиторий, для этого обновите ваш build.gradle файл
dependencies {
def mrgsVersion = "5.0.0"
- implementation(name:'MRGSSupport', ext:'aar')
+ implementation "games.my.mrgs:support:$mrgsVersion"
}
Обновите код🔗
Основные изменения:
- Конструктор
MRGSMyComSupportDialog(Activity, String)удален. ИспользуйтеMRGSMyComSupportDialog(Activity). - Конструктор
MRGSMyComSupportDialog(Activity, String, boolean)удален. ИспользуйтеMRGSMyComSupportDialog(Activity).
В следующем примере показано, как может выглядеть ваше приложение до и после внесения этих изменений:
До
import ru.mail.mrgservice.MRGSMyComSupportDialog;
final MRGSMyComSupportDialog dialog = new MRGSMyComSupportDialog(activity, "<SECRET>", true);
dialog.setCategory(<CATEGORY>);
dialog.setText(<TEXT>);
dialog.setListener(this);
dialog.show();
После
import ru.mail.mrgservice.MRGSMyComSupportDialog;
final MRGSMyComSupportDialog dialog = new MRGSMyComSupportDialog(activity);
dialog.setCategory(<CATEGORY>);
dialog.setText(<TEXT>);
dialog.setListener(this);
dialog.show();
4.1.x → 4.1.3🔗
В версии 4.1.3 полностью переработано API по работе с пользователями. Теперь нет необходимости регистрировать, а затем авторизовать пользователя. Достаточно вызывать метод setUserId. Однако для корректного подсчета статистики на стороне MyTracker, необходимо вызывать два метода - trackRegistrationEvent и trackLoginEvent у класса MRGSMyTracker. Подробности читайте в документации, в разделе Авторизация пользователя
4.0.x → 4.1🔗
Основное изменение - MRGService теперь зависит от библиотек серии androidx, вместо support-library
Отредактируйте свой build.gradle файл таким образом, чтоб удалить старые зависимости, такие как:
'com.google.android.gms:play-services-ads-identifier:16.0.0'
'com.android.support:support-v4:28.0.0'
'com.android.support:recyclerview-v7:28.0.0'
'com.android.support:appcompat-v7:28.0.0'
'com.android.support:support-vector-drawable:28.0.0'
'com.android.support:multidex:1.0.3'
и добавить новые
'androidx.appcompat:appcompat:1.1.0'
'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
'androidx.recyclerview:recyclerview:1.0.0'
'androidx.vectordrawable:vectordrawable:1.1.0'
'androidx.multidex:multidex:2.0.0'
В этой версии обновился firebase (который также теперь зависит от androidx). Удалите старые зависимости
добавьте новые:
Обновился MyTracker до версии 1.5.12. Замените
на
3.8.x → 4.0🔗
Основное изменение - теперь MRGService состоит из набора модулей (библиотеки aar). Основным модулем является MRGService.aar. Остальные же модули можно добавлять только при необходимости.
Если вы уже используете весь функционал MRGS, проще всего будет добавить все aar файлы из архива в ваш проект.
Удалите библиотеку MRGServiceDependencies.aar, если она у вас есть
Так как теперь MRGS распространяется только в виде aar файлов, первым делом необходимо удалить все что относится к MRGS из вашего AndroidManifest.xml файла
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.android.vending.BILLING"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<activity
android:name="ru.mail.mrgservice.MRGSGoogleBillingActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity
android:name="ru.mail.mrgservice.MRGSCafebazaarBillingActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity
android:name="ru.mail.mrgservice.MRGSSendFeedbackActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"/>
<activity
android:name="ru.mail.mrgservice.MRGSGCMActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"/>
<activity
android:name="ru.mail.mrgservice.MRGSMyComSupportUtilActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity android:name="ru.mail.mrgservice.gc.GCActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"/>
<activity android:name="ru.mail.mrgservicetest.PermissionRationaleActivity"/>
<activity android:name="ru.mail.mrgservicetest.ShowSettingActivity"/>
<activity android:name="ru.mail.mrgservice.advertising.MRGSAdvertisingActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/TranslucentTheme"
/>
<!--android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"-->
<activity android:name="ru.mail.mrgservice.advertising.MRGSAdvertisingSliderActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:theme="@style/NotTranslucentTheme"
/>
<!-- MyTraget activity -->
<activity android:name="com.my.target.common.MyTargetActivity" />
<!-- Firebase push notification -->
<service
android:name="ru.mail.mrgservice.MRGSFirebaseInstanceIdService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
</service>
<service
android:name="ru.mail.mrgservice.MRGSFCMIntentService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<!-- END: Firebase push notification -->
<!-- tracking users -->
<receiver
android:name="ru.mail.mrgservice.MRGSBroadcastReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER"/>
</intent-filter>
</receiver>
<service android:name="com.google.android.gms.analytics.CampaignTrackingService"/>
<service android:name="com.my.tracker.campaign.CampaignService"/>
<!-- Локальные пуши -->
<receiver android:name="ru.mail.mrgservice.MRGSLocalPushBroadcastReceiver"/>
<receiver android:name="ru.mail.mrgservice.MRGSNotificationDeleteReceiver"/>
<!-- Samsung billing !-->
<activity
android:name="ru.mail.mrgservice.MRGSSamsungBillingActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<!-- Amazon In-App Purchases !-->
<receiver android:name = "com.amazon.device.iap.ResponseReceiver" >
<intent-filter>
<action android:name = "com.amazon.inapp.purchasing.NOTIFY"/>
</intent-filter>
</receiver>
MyTracker🔗
метод MRGService.instance().getMyTracker() удален, используйте
Работа с нотификациями🔗
Для подписки на события от серверных push-нотификаций необходимо заменить вызов
MRGService.instance().initPushEx(notifyDelegate); или MRGService.instance().initPush(notifyDelegate);
на
Аналитика🔗
- Класс MRGSGoogleAnalytics удален.
- Класс MRGSChartboost удален.
- Класс MRGSFlurry удален.
- Класс MRGSSendFeedbackActivity удален.
- Метод sendGASocEvent из класса MRGService удален.
-
Метод sendGATimings из класса MRGService удален.
-
Добавлен класс MRGSAnalytics. Для добавления кастомных событий в сторонние Sdk используйте этот класс
-
Из класса MRGService убран метод sendAFEvent для отправки события в AppsFlyer, используйте вместо него
Обратите внимание, что аргументы метода sendEvent также изменились. Раньше метод принимал два String параметра - name, value. Теперь метод принимает String name, а value имеет тип java.util.Map. Пример использования
MRGSMap params = new MRGSMap();
params.put("param1", button.getText().toString());
MRGSAnalytics.getInstance().getAppsFlyer().sendEvent("press_button", params);
Также вы можете вызывать метод
И тогда событие будет подключено во все сторонние аналитические Sdk (на данный момент только AppsFlyer, в ближайшее время будет Firebase)
Банк (Billing)🔗
Метод isBillingAvailable у класса MRGSBilling теперь не статический. Для его вызова необходимо вызвать
Метод getBillingName у класса MRGSBilling теперь не статический. Для его вызова необходимо вызывать
Метод sendPaymentInfo убран. Теперь необходимо использовать метод MRGSMetrics.addPurchase. Обратите внимание, что метод addPurchase принимает 3 параметра! Подробное описание этих параметров приведено в документации Установка библиотеки MRGS для Android
Пилигрим🔗
Из класса MRGService убраны методы createMRGSAdvertising и getMRGSAdvertising. Они перенесены в класс MRGSAdvertisingFactory
GameCenter🔗
Удалите библиотеку MRGServicePlayCenter.aar и добавьте MRGSGameCenter.aar. Из класса MRGService убран метод getGameCenter, теперь необходимо обращаться к классу MRGSGameCenter через метод getInstance
3.6.5 → 3.7🔗
В этой версии произошли изменения в клиентской части, связанные с получением PUSH-уведомлений.
- Удалить библиотеку gcm.jar и вместо нее подключить Google Play Services, если они еще не были подключены (исходники лежат в архиве MRGS);
- Обновить android-support-v4.jar (также находится в архиве);
- Переименовать ресивер
ru.mail.mrgservice.MRGSGCMBroadcastReceiverвcom.google.android.gms.gcm.GcmReceiverи добавить атрибутandroid:exported="true" - У сервиса ru.mail.mrgservice.MRGSGCMIntentService добавить атрибут
android:exported="false", а также добавить intent-filter:
- Добавить сервис:
<service
android:name="ru.mail.mrgservice.MRGSInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
- Убедится, что в теге
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
стоит версия 7571000. В идеале, если Google Play Services подключен вместе с исходным кодом и, соответственно, ресурсами, то можно вместо ручного изменения номера версии просто оставить @integer/google_play_services_version (как в примере выше). 7. Раздел Permissions остается без изменений
В итоге AndroidManifest.xml должен выглядеть следующим образом:
...
<!-- push notification -->
<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category android:name="ru.mail.mrgservicetest"/>
</intent-filter>
</receiver>
<service
android:name="ru.mail.mrgservice.MRGSGCMIntentService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE"/>
</intent-filter>
</service>
<service
android:name="ru.mail.mrgservice.MRGSInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID"/>
</intent-filter>
</service>
<!-- END: push notification -->
...
Для проверки валидности AndroidManifest.xml используйте утилиту mrgsmanifest, которая идет в архиве с MRGService.
Дата создания: 2022-06-28