Skip to content

CCPA & VCDPA🔗

The California Consumer Privacy Act (CCPA) is the first comprehensive privacy law in the United States. It provides a variety of privacy rights to California consumers. Businesses regulated by the CCPA will have a number of obligations to those consumers, including disclosures, General Data Protection Regulation (GDPR)-like consumer data subject rights (DSRs), an 'opt-out' for certain data transfers, and an 'opt-in' requirement for minors.

MRGS makes it possible to determine whether the user falls under the CCPA, and also makes it possible to enable the mode of special work according to the CCPA rules in third-party SDKs, if they provide such an API.

VCDPA for Virginia

MRGS also automatically supports VCDPA, which is similar to the CCPA law, so all verification of a user's compliance with the law occurs for both California and Virginia, no additional actions are required for the project to support the law.

Supported States
State name State code
California CA
Colorado CO
Connecticut CT
Virginia VA

Integration🔗

Each studio's mobile product should have a "do not sell my personal information" button. The design of the button is at the discretion of the studio (project), but the button must contain exactly the above text - this is a legal requirement. The button can be located, for example, in the settings section, options, player profile, what other places? It shouldn't be hidden too deep. This button should only be visible to users identified as California.

Show button

Please note that the button for users from outside of California should not be disabled, it should not be visible at all. (Of course, each project decides for itself, but this is a recommendation from the lawyers of MyGames)

How the system itself will work:

  • MRGS at the start determines the user's position by Geo-IP. Whether it remains under the CCPA or not (whether it was decided in California or Virginia). If at least once decided in California or Virginia, then it will always return that the user falls under the CCPA, even if the next time the position does not indicate California.
  • The application at the right moment in time (when the developers decide) calls the shouldShowCCPAButton method to understand whether to show the button to enable/disable data sharing or not
  • If the user changed the setting (refused to share or allowed to share) the application calls the required method setUserChangedCCPAPreferences
  • To display the current state of the button (share not share), the application can find out the status of the current setting by calling the method getCurrentCCPAUserPreferences
  • When starting the application, mrgs checks the setting and if the "do not sell my personal information" parameter is set, calls the necessary methods in all third-party SDKs

Determine user location🔗

MRGS determines the user's position by Geo-IP and provides an API to get the status, whether the user is hit by the CCPA or not. Call the corresponding method to get the status:

// If true is returned, the user is subject to CCPA
bool showCCPAButton = MRGSGDPR.getInstance().shouldShowCCPAButton();
// If YES is returned, the user is CCPA
BOOL showCCPAButton = [[MRGSGDPR sharedInstance] shouldShowCCPAButton];
import games.my.mrgs.gdpr.MRGSGDPR;

final MRGSGDPR gdpr = MRGSGDPR.getInstance();
// Where this is an Activity object
// If true is returned, the user is subject to CCPA
boolean showCCPAButton = gdpr.shouldShowCCPAButton(this);

Mode of operation according to the rules of CCPA in third-party SDK🔗

With MRGS, you can enable CCPA compatibility mode in the respective SDKs:

  • AppsFlyer
  • Facebook
  • Firebase
  • IronSource
  • AdMob
  • AppLovin
  • Tappx
  • Tapjoy
  • UnityAds
  • Vungle
  • MyTarget
  • Chartboost
  • Flurry
  • Fyber, Sponsorpay
  • Mintegral
  • Ogury

To get the current work status, call the method

var pref = MRGSGDPR.getInstance().getCurrentCCPAUserPrefrences();
if (pref == MRGSGDPR.MRGSCCPAUserPreference.Share)
{
    // The user has agreed to share his data. CCPA mode disabled
}
else 
{
    // The user has forbidden to share his data. CCPA mode enabled
}
MRGSCCPAUserPreference pref = [[MRGSGDPR sharedInstance] getCurrentCCPAUserPrefrence];
if (pref == kMRGSCCPAUserPreferenceShare)
{
    // The user has agreed to share his data. CCPA mode disabled
}
else
{
    // The user has forbidden to share his data. CCPA mode enabled
}
import games.my.mrgs.gdpr.MRGSGDPR;

final MRGSGDPR gdpr = MRGSGDPR.getInstance();
// where this is an object of type Activity
int pref = gdpr.getCurrentCCPAUserPreference(this)
if (pref == USER_PREFERENCE_SHARE) {
    // The user has agreed to share his data. CCPA mode disabled
} else {
    // The user has forbidden to share his data. CCPA mode enabled
}

To change the operating mode, call the method

// Enable CCPA mode of operation (prohibit data sharing)
MRGSGDPR.getInstance().setUserChangedCCPAPrefrences(MRGSGDPR.MRGSCCPAUserPreference.NotSharing);
// Disable the CCPA mode (allow data sharing)
MRGSGDPR.getInstance().setUserChangedCCPAPrefrences(MRGSGDPR.MRGSCCPAUserPreference.Share);
// Enable CCPA mode of operation (prohibit data sharing)
[[MRGSGDPR sharedInstance] setUserChangedCCPAPrefrences:kMRGSCCPAUserPreferenceNotSharing];
// Disable the CCPA mode (allow data sharing)
[[MRGSGDPR sharedInstance] setUserChangedCCPAPrefrences:kMRGSCCPAUserPreferenceShare];
import games.my.mrgs.gdpr.MRGSGDPR;

final MRGSGDPR gdpr = MRGSGDPR.getInstance();
// where this is an object of type Activity
// Enable CCPA mode of operation (prohibit data sharing)
gdpr.setUserChangedCCPAPreferences(this, USER_PREFERENCE_NOT_SHARING);
// Disable the CCPA mode (allow data sharing)
gdpr.setUserChangedCCPAPreferences(this, USER_PREFERENCE_SHARE);

Checking the correctness of work🔗

To test the work, you need to connect using a VPN and simulate work from California.

Also, you need to check that after enabling / disabling CCPA (method setUserChangedCCPAPrefrences) there are no errors in the logs (you may have incompatible versions of libraries), that is, you need to check that there are no lines in the logs containing: MRGSGDPR: <ERROR>(iOS) or ShareDate failed cause (Android)


Last update: 2023-12-28
Created: 2020-08-31