FLAG_IMMUTABLE
for Android 12 and above. This resolves a potential push notification related crash on Android 12 devices and a Play Store warning.setGcmSender
API.play-services-ads
dependency to 18.0.0.play-services-ads
.play-services-ads
dependency to 17.1.0 (minimum supported version is 15.0.0). Version 17.1.0 includes the AD_ID
permission which should be removed for apps in the Google Play Families Program.android:exported
attribute to launch activity in EasyApp to support API 31.NB: If you are updating from a previous version of the Tapjoy SDK and have set privacy values using the old method don’t worry – the new SDK will still read the previously set values and you do not need to manually set them again. However, we would recommend eventually migrating your code to use this new method.
DISABLE_ANDROID_ID_AS_ANALYTICS_ID
connect flag is now on by defaultpublic interface TJPlacementListener {
public void onClick(TJPlacement placement);
}
ACCESS_WIFI_STATE
permission removed from .aar.<activity android:name="com.tapjoy.mraid.view.ActionHandler"android:configChanges="orientation|keyboardHidden|screenSize" />
<activity android:name="com.tapjoy.mraid.view.Browser"android:configChanges="orientation|keyboardHidden|screenSize" />
Bug Fixes:
AppMonitor.getVisibleActivity()
methodThis release adds a "user is below consent age" flag that helps publishers monetize their user base while remaining in compliance with COPPA. Note that it is the publisher’s responsibility to implement this function; it is not automatically implemented when the Tapjoy SDK is integrated into an application. Responsibility for overall compliance with COPPA and other applicable laws and regulations remains with the publisher.
In the US, the Children’s Online Privacy Protection Act (COPPA) imposes certain requirements on operators of online services that (a) have actual knowledge that the connected user is a child under 13 years of age, or (b) operate services (including apps) that are directed to children under 13.
Similarly, the GDPR imposes certain requirements in connection with data subjects who are below the applicable local minimum age for online consent (ranging from 13 to 16, as established by each member state).
For applications that are not directed towards children under 13 years of age, but still have a minority share of users known to be under the applicable minimum age, utilize this method to access Tapjoy’s monetization capability. This method will set ad_tracking_enabled to false for Tapjoy which only shows the user contextual ads. No ad tracking will be done on this user.
public static void belowConsentAge(boolean isBelowConsentAge);
Setting this to TRUE means the Tapjoy SDK will treat the user as if if the "Opt Out of Ads Personalization" switch in their settings is on. This means they will still see Tapjoy ads, but the ads will not be targeted based on user behavior, and the user’s ad behavior will not be tracked by Tapjoy.
Bug Fixes:
Fatal Exception: java.lang.NullPointerException
crash.SDK now supports Firebase Cloud Messaging (FCM). Apps using the older Google Cloud Messaging (GCM) system should update to FCM, as this will eventually become an Android requirement. Instructions for using FCM with Tapjoy are in the Android Getting Started Guide for Publishers.
Replaced several instances of SharedPreferences.commit with SharedPreferences.apply to address a rare crash issue.
Orientation issue fix where ad content that had only one orientation (portrait or landscape) could be forced out of that orientation when device was rotated after playback started.
UI of error pop-up updated.
This release is compatible with Android 9 "Pie".
This release contains features that help publishers comply with the General Data Protection Regulation (GDPR). Each platform (iOS, Android, Unity, AIR) has two new functions. Tapjoy is GDPR-compliant based on "legitimate interest," therefore the following functions are not mandatory. However, we offer these functions for those publishers who wish to pass consent information to Tapjoy. If the publisher implements these functions and the user does not consent, Tapjoy will serve non-interest based content to that user.
These functions can be called before the application calls the Tapjoy Connect function, and should be called before the application requests any content from Tapjoy:
A setUserConsent function that takes either "0″ (user does not consent), "1″ (user does consent) or a more detailed consent string. This more detailed string is the consent string is described in the Transparency and Consent Framework as supported by the IAB. An optional "subject to GDPR" flag that can be set to YES/TRUE (if the user is subject to GDPR rules) or NO/FALSE (if the user is not subject to GDPR rules). This function should only be called if the application has made its own determination as to whether GDPR is applicable to the user or not. If this function is not called, Tapjoy assumes the application has not made such a determination, and therefore Tapjoy makes its own determination of GDPR applicability.
If a user does not consent or withdraws existing consent, will the Tapjoy SDK still send advertising identifiers to Tapjoy? Yes. The functions listed above are designed for interest-based advertising, and they send the user consent status for interest-based advertising to Tapjoy. Therefore, the status of the consent does not disable Tapjoy SDK from sending advertising identifier (IDFA for iOS or GAID for Android) at SDK initialization or during ad requests.
Tapjoy’s legal basis for compliance is ‘legitimate interest’. However, the publisher’s legal basis for compliance, and consequently their requirement for advertiser identifier collection, could be different than Tapjoy’s.
It is left to application to determine if the Tapjoy SDK should be initialized or not, depending on the application’s compliance need. For example, if an application’s legitimate basis for collection of advertising identifier is consent, and user has not consented, then the Tapjoy SDK should not be initialized for such users.
If a user from a country that is not covered by GDPR does not consent or withdraws consent, would Tapjoy limit advertising to non-interest-based ads for such a user? The Tapjoy SDK provides flexibility to handle different types applications, including applications that have no in-app method for determining whether the user is subject to GDPR or not.
Therefore, when an Application does not make any determination (i.e. the subjectToGDPR function is not called), Tapjoy servers determine whether the user is subject to GDPR. Then, Tapjoy honors the user’s consent preferences only for ad requests that Tapjoy determines are coming from GDPR-covered users.
If the intent is to allow users from any country to withdraw consent as if they were governed by GDPR, this can be done by calling the subjectToGDPR method with TRUE for all non-consenting users. In this case, Tapjoy’s servers will honor the content of the subjectToGDPR method call, and will not make its own determination as to whether or not the user is covered by GDPR. The publisher may also contact support@tapjoy.com and request that Tapjoy honor the consent preferences of all users of their application, regardless of whether they are covered by GDPR or not.
Added:
public static void setUserConsent(String value);
Example:
Tapjoy.setUserConsent("1"); // user does consent
public static void subjectToGDPR(boolean gdprApplicable);
Example:
Tapjoy.subjectToGDPR(true); // This user is subject to GDP
ACCESS_FINE_LOCATION
ACCESS_COARSE_LOCATION
WRITE_EXTERNAL_STORAGE
Removed deprecated "Tapjoy Platform Mediation" functionality. This was a specialized form of mediation that Tapjoy has not supported for almost a year. If you are still using platform mediation, you should not update to this version of the SDK, and we recommend switching to industry-standard adapter mediation. Regular adapter mediation functionality (such as video and interstitial mediation provided by Mopub, ironSource, Fyber, Appodeal, and other mediators) is unaffected by this change.
Removed an incorrect error message when Tapjoy video content played from cache and there is no network connection.
Fixed an issue where after returning from Tapjoy content, the offerwall or application would be shown in the incorrect orientation.