All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.
- Using new sdk loader link
/sdk.js
instead ofhttps://yandex.ru/games/sdk/v2
for new moderation guidelines.
- Fixed saving JSON fields via
PlayerPrefs
cloud save utility. YandexGamesSdk.IsRunningOnYandex
now works when used within european Yandex Games reskin Playhop.- Added error callback when trying to save invalid JSON via
PlayerAccount.SetCloudSaveData()
.
- Added
CatalogProduct.priceCurrencyImage
for passing an IAP moderation.
- Moved PlayerPrefs utility to its own
Agava.YandexGames.Utility
namespace to prevent unintentional naming clashes.
- Silent failure when invoking
YandexGamesSdk.Environment
property while SDK is not initialized.
YandexGamesSdk.IsRunningOnYandex
property to check whether you're using Build and Run or running the game on Yandex.
ReviewPopup.Open
andCanOpen
methods for requesting user to rate your game.
Shortcut.Suggest
now has a single callback with boolean indicating success.
Shortcuts
class renamed to singularShortcut
.yandexGames.sdk.features.LoadingAPI.ready
method is no longer called automatically to prevent game moderation rejection.GameReady
class contents are moved toYandexGamesSdk
class.
- Added
Shortcut
andGameReady
testing buttons to playtesting canvas.
- Added GameReady API that allows to manually call
ysdk.features.LoadingAPI.ready()
when the game has finished loading. - Added desktop shortcut placement API.
Agava.YandexGames.PlayerPrefs
utility script for migrating from PlayerPrefs-based saves toPlayerAccount.SetCloudSaveData
.
PlayerAccount.StartAuthorizationPolling()
method andAuthorizedInBackground
event to detect background user login after initialization.
- Billing methods no longer require authorization.
- Removed Device.Type since it does not detect an iPad as a tablet.
Proper device type detection is implemented in WebUtility package.
- Fixed an exploit where disabling internet connection causes rewarded video ads to immediately grant a reward without showing an ad.
- Profile pictures now will be fetched with
PlayerAccount.GetProfileData()
,Leaderboard.GetPlayerEntry
andGetEntries
methods.
Find profile picture URLs inPlayerAccountProfileDataResponse.profilePicture
and download it viaRemoteImage
class.
PlayerAccount.SetPlayerData
andGetPlayerData
are renamed toPlayerAccount.SetCloudSaveData
andGetCloudSaveData
.- Removed redundant authorization requirement for these methods:
PlayerAccount.HasPersonalProfileDataPermission()
,RequestPersonalProfileDataPermission()
,GetProfileData()
,GetPlayerData()
,SetPlayerData()
.
- The SDK now calls
ysdk.features.LoadingAPI.ready
method when initialization is complete.
Billing
class for In-App purchases.
StickyAd.Show()
andStickyAd.Hide
methods for controlling StickyAd visibility at run time.
- WebApplication and WebEventSystem are now split into a separate WebUtility package.
- YandexGamesSdk.Initialize() now has onSuccessCallback and returns a coroutine waiting for initialization to finish.
- YandexGamesSdk.WaitForInitialization() is gone. Yield on YandexGamesSdk.Initialize() coroutine instead.
- The SDK is no longer initializing itself because developers often forget to use WaitForInitialization() coroutine.
This was leading to errors that were difficult to reproduce and detect. Now you have to call YandexGamesSdk.Initialize() on your own.
- Interstitial misspelling.
- PlayerAccount.IsAuthorized was broken due to recent YandexGames API changes. This update solves it.
- YandexGamesSdk.Environment data structure that proxies
ysdk.environment
.
- Device.Type property that proxies
ysdk.deviceInfo.type
.
- PlayerAccount.GetPlayerData and SetPlayerData that implements Cloud Save functionality.
- Prevent crashes when Yandex SDK API throws an empty error (or error of an unexpected type).
- Added Agava prefix in front of all namespaces to comply with MSDN C# standard.
- WebBackgroundMute.Enable was replaced with WebApplication.InBackground property. Now you will have to manually set
AudioListener.pause = WebApplication.InBackground;
in an Update to achieve the same effect. Although now you can use it for anything rather than just muting the audio in the background.
- PlayerAccount.Authorized is now PlayerAccount.IsAuthorized. Needed that to achieve full naming consistency across internal and external API.
- Same goes for YandexGamesSdk.IsInitialized.
- Leaderboard.GetPlayerEntry successCallback silently stopping execution when it's supposed to return null.
- Leaderboard.GetPlayerEntry now returns null in successCallback instead of invoking errorCallback.
- WebBackgroundMute to mute audio when RunInBackground is enabled.
- Making it clear that GetProfileData still returns some data if permissions were not granted.
- Renamed RequestProfileDataPermission to RequestPersonalProfileDataPermission.
- Renamed HasProfileDataPermission to HasPersonalProfileDataPermission.
[16.1.1] https://github.com/forcepusher/com.agava.yandexgames/compare/16.1.0...16.1.1
[16.1.0] https://github.com/forcepusher/com.agava.yandexgames/compare/16.0.0...16.1.0
[16.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/15.1.1...16.0.0
[15.1.1] https://github.com/forcepusher/com.agava.yandexgames/compare/15.1.0...15.1.1
[15.1.0] https://github.com/forcepusher/com.agava.yandexgames/compare/15.0.0...15.1.0
[15.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/14.0.0...15.0.0
[14.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/13.3.0...14.0.0
[13.3.0] https://github.com/forcepusher/com.agava.yandexgames/compare/13.2.0...13.3.0
[13.2.0] https://github.com/forcepusher/com.agava.yandexgames/compare/13.1.0...13.2.0
[13.1.0] https://github.com/forcepusher/com.agava.yandexgames/compare/13.0.0...13.1.0
[13.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/12.0.1...13.0.0
[12.0.1] https://github.com/forcepusher/com.agava.yandexgames/compare/12.0.0...12.0.1
[12.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/11.2.1...12.0.0
[11.2.1] https://github.com/forcepusher/com.agava.yandexgames/compare/11.2.0...11.2.1
[11.2.0] https://github.com/forcepusher/com.agava.yandexgames/compare/11.1.0...11.2.0
[11.1.0] https://github.com/forcepusher/com.agava.yandexgames/compare/11.0.0...11.1.0
[11.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/10.0.0...11.0.0
[10.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/8.3.1...10.0.0
[8.3.1] https://github.com/forcepusher/com.agava.yandexgames/compare/8.3.0...8.3.1
[8.3.0] https://github.com/forcepusher/com.agava.yandexgames/compare/8.2.0...8.3.0
[8.2.0] https://github.com/forcepusher/com.agava.yandexgames/compare/8.1.0...8.2.0
[8.1.0] https://github.com/forcepusher/com.agava.yandexgames/compare/8.0.1...8.1.0
[8.0.1] https://github.com/forcepusher/com.agava.yandexgames/compare/8.0.0...8.0.1
[8.0.0] https://github.com/forcepusher/com.agava.yandexgames/compare/7.0.0...8.0.0