Changelog

12.7.1 (2020-11-02)

  • Migrated InstallReferrer API
  • Fix duplicate onContentDismiss callback

12.7.0 (2020-09-16)

12.6.1 (2020-07-09)

  • Refactoring of some code for Tapjoy’s ad unit lifecycle states

12.6.0 (2020-06-29)

  • This release contains features that help publishers comply with the California Consumer Privacy Act (CCPA). Each platform (iOS, Android, Unity, C++) has a new class “TJPrivacyPolicy” which allows you to manage all privacy flags (GDPR, user consent, below consent age, and US privacy). For implementation details see here.

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.

  • Added new TJPrivacyPolicy class to handle GDPR, US Privacy, Consent and Below Consent Age in one place. Deprecated old GDPR, User Consent and Below Consent Age API

12.4.2 (2020-02-07)

  • Removal of legacy functionality related to custom protocol for install attribution
  • Bug fixes

12.4.1 (2020-01-07)

  • Removal of legacy functionality related to custom protocol for install attribution
  • Video UI change.
  • Bug Fixes

12.4.0 (2019-12-04)

  • Support for a customer parameter in currency callbacks (Future product release)
  • Bug Fixes

12.3.4 (2019-10-09)

  • Updated IAB Open Measurement SDK

12.3.3 (2019-09-20)

  • Removed MOAT SDK

12.3.2 (2019-09-16)

  • The DISABLE_ANDROID_ID_AS_ANALYTICS_ID connect flag is now on by default
  • Bug fixes

12.3.1 (2019-06-06)

  • Additional video performance enhancements

12.3.0 (2019-05-28)

  • Video performance enhancements
  • Added onClick callback to TJPlacementListener. Note that this callback will not actually be called until there is back-end server support for it. We expect this to start around mid-June 2019.
public interface TJPlacementListener {
    public void onClick(TJPlacement placement);
}
  • Bug Fixes:
  • Unnecessary ACCESS_WIFI_STATE permission removed from .aar.

12.2.1 (2019-03-14)

  • Tapjoy is changing the way it uses persistent IDs, such as the Android ID. In general, Tapjoy is using these persistent IDs less. These changes will be transparent to most publishers and not require any code changes. Specifically:
    • For advertising, Tapjoy’s SDK will try to use the Advertising ID if available. Older versions of Tapjoy’s SDK would pass the Android ID if the advertising ID and mac address (if permitted) was unavailable. As of SDK 12.2.1, Tapjoy’s SDK no longer passes Android ID or mac address for advertising purposes, even if the Advertising ID is unavailable.
      • If a publisher wishes to send Android ID for advertising purposes when Advertising ID is not available, they may use the ALLOW_LEGACY_ID_FALLBACK connect flag to override default SDK behavior.
      • If a publisher wishes to send mac address for advertising purposes when Advertising ID is not available, they may use the same connect flag and must also include the ACCESS_WIFI_STATE permission in their manifest.
    • For analytics, Tapjoy’s SDK will still send Android ID unless the publisher specifically opts out using the DISABLE_ANDROID_ID_AS_ANALYTICS_ID connect flag.
    • For analytics, Tapjoy’s SDK no longer uses the mac address.
    • If a publisher is using Tapjoy Managed Currency, and is not setting a publisher user ID, there is a risk that those users who do not have an Advertising ID may lose their currency balance if the Android ID is no longer sent. For publishers using Tapjoy Managed Currency and who do not set a publisher user ID, we recommend that upon updating to 12.2.1, they use the ALLOW_LEGACY_ID_FALLBACK connect flag to ensure that some ID is sent so their users do not lose their currency balances. We also recommend that they begin setting a publisher user ID, so that they are no longer depending on Android ID to track user currency balances.
    • The DISABLE_PERSISTENT_IDS connect flag is deprecated, as the SDK’s default behavior is to not use persistent ID’s for advertising purposes.
  • Removed unused code, so SDK is about 10% smaller than previous version. (For more information, see FAQ entry on SDK size.)
  • The following Android activities are no longer necessary:
<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:

  • Fix for an infrequent "Fatal Exception: java.lang.RuntimeException: Package manager has died" crash
  • Fix for crash when SDK key is null
  • Fix for java.util.ConcurrentModificationException which was caused by insufficient thread-safe mechanism used in AppMonitor.getVisibleActivity() method

12.2.0 (2018-11-13)

This 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:

  • Fix for an infrequent Fatal Exception: java.lang.NullPointerException crash.

12.1.0 (2018-10-11)

  • 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.

12.0.0 (2018-06-26)

This release is compatible with Android 9 "Pie".

  • IAB Open Measurement SDK incorporated into Tapjoy SDK. Publishers do not need to take any additional actions or make any code changes.
  • Minimum supported Android version is now API Level 14/Android 4.0/Ice Cream Sandwich.
  • SDK support for programatic mediation is included in this SDK. Server and dashboard support for programmatic mediation will be released at a later date.
  • Fix for push notifications when targeting Android O devices

11.12.2 (2018-05-18)

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.

GDPR FAQ

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

11.12.1 (2018-04-30)

  • Internal changes and fixes only, no new features

11.12.0 (2018-03-29)

  • Tapjoy’s SDK will no longer trigger the following permissions:
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.