Changelog

4.3.6

Enhancements

  • Added support for grouping notifications.

4.3.5

Bug Fixes

  • Resolved crash when initial launch of app is with an intent containing a non-hierarchical URI scheme.

4.3.4

Bug Fixes

  • Resolved issue which could result in some previously received notifications being treated as though they were copies of the more recently received notifications on Android 4-10 devices.

4.3.3

Bug Fixes

  • Resolved bug which could prevent Teak.Notification.schedule from correctly scheduling notifications while an app is being backgrounded.

4.3.2

Enhancements

  • No changes. Version bump to match wrapper SDKs.

4.3.1

Bug Fixes

  • Fixed player interactions with buttons on notifications on Android >= 11

  • Resolved issue that could result in an extra unattributed 'play' event when returning to the game from a push notification or link after two minutes of backgrounding

  • Resolved issue which could result in failing to track clicks in sessions starting from a notification or link with a non-hierarchical out of game link, such as mailto:example@example.com

4.3.0

New Features

  • Local notification personalization: Using Teak.Notification.Schedule you can now pass a dictionary of additional data which can be templated into the local notification.

  • Session time tracking: The Teak SDK now automatically tracks the duration of game sessions and reports this data to the Teak Dashboard and any configured data syncs.

  • Opt-Out Categories: You can now categorize push notifications and emails into different Opt-Out Categories, and provide players with an in-game communication preferences UI so that your players can manage what kinds of messaging they receive.

  • Push Opt-Out Tracking: The Teak SDK can now detects and reports when a player has opted out of push notifications through their device settings to the Teak Dashboard for upcoming reports.

  • Uninstall Tracking: The Teak SDK and Teak Dashboard can now detect and report when a player has uninstalled the game from their device for upcoming reports.

  • Notification Channels: Opt-Out Categories automatically map to Notification Channels, which provides players with a familiar UI in Settings to manage the kinds of messaging they receive.

  • Badging: From the Teak Dashboard you can enable an app icon badge when push notifications are delivered. Note that this will only apply to non-default Opt-Out Categories, or the default Opt-Out category on new installs made after integrating Teak SDK 4.3.0.

  • Image+Text Notification Layout: Teak now supports a new notification layout which places a square image to the right of the text content of the notification.

Upgrade Notes

  • Deprecated TeakNotification.scheduleNotification. Use Teak.Notification.schedule instead.

Enhancements

  • Improved notification display on Samsung devices running Android 12+.

Bug Fixes

  • Fixed Missing class com.unity3d.player.UnityPlayerActivity warning in non-Unity projects.

  • Resolved several potential race conditions that could prevent updated player contact information from being submitted to the Teak Dashboard

  • Resolved issue when setting a player’s email address back to original value after calling Teak.Instance.deleteEmail()

  • Resolved potential failure to initialize the Teak SDK when launching from a link or push notification that deep links to an unknown custom URL scheme

  • Resolved race condition that could result in an extra 'play' event when updating player contact information while the game is being backgrounded

  • Fixed bug that could result in an extra 'play' event when changing game assigned player id through a new call to Teak.Instance.identifyUser().

4.2.0

Breaking Changes

  • Teak$AdditionalDataEvent has been deprecated, and will be removed in the SDK 5 family. Please use Teak$UserDataEvent.

  • Google Play Billing v3 support has been removed

  • Now requires EventBus 3.3.1

  • SDK 5 Behaviors now enabled by default (io_teak_sdk5_behaviors)

New Features

  • Teak#handleDeepLinkPath has been added to allow you manually resolve a deep link path, e.g. /foo/bar?fizz=buzz

  • Teak#setChannelState has been added to let users opt in/out of Teak marketing channels

  • Teak$UserDataEvent has been added to provide user specific state, including opt-out status for Teak email and push campaigns and the 'additional data' for the user. This supercedes [Teak$AdditionalDataEvent], which has been deprecated.

  • Teak#canOpenNotificationSettings and Teak#openNotificationSettings to allow users to open the settings app directly to the notification settings for their app

  • Teak#canOpenSettingsAppToThisAppsSettings has been added

  • Teak#deleteEmail has been added

  • Google Play Billing v5 support has been added

  • Added pushRegistration to Teak$UserDataEvent

Bug Fixes

  • Fixed trace log output for identifyUser to include parameter names

4.1.15

Bug Fixes

  • Resolved crash when initial launch of app is with an intent containing a non-hierarchical URI scheme.

4.1.14

New Features

  • Added android.permission.POST_NOTIFICATIONS for Android 13.

4.1.13

Bug Fixes

  • Reverted change to use StandardCharsets.UTF_8 because that requires API 19.

4.1.12

Bug Fixes

  • Resolve bug which resulted in all previously received notifications being treated as though they were copies of the most recently received notification on Android 11 and 12 devices.

4.1.11

Bug Fixes

  • If client deep link resolution fails, server resolution can now properly resolve and attribute a launch properly.

4.1.9

Bug Fixes

  • Add Google Play Billing v4 to proguard.txt

  • If there’s a notification/link launch on 'first launch' use that instead of the install referrer

4.1.7

New Features

  • Added io_teak_no_auto_track_purchase to prevent automatic purchase collection

  • Added support for Google Play Billing v4

Bug Fixes

  • Fix Android 12 formatting of text-only notifications

  • Fix issue of opening browser when launched with the host for a teak shortlink, but no path

4.1.6

Bug Fixes

  • Fix for crash when an Amazon build did not contain Google Play Billing references.

4.1.4

Bug Fixes

  • Fixes null Iterator exception when a purchase is cancled in Google Play Billing

4.1.2

Bug Fixes

  • Fixes issue in Android 12 compatibility that prevented push notifications from displaying when the app was not running.

4.1.1

Bug Fixes

  • Mark GooglePlayBillingV3 and Amazon store classes Unobfuscatable.

4.1.0

Breaking Changes

  • If you target Android 12, you must add android:exported specifications to the receiver definition for io.teak.sdk.push.ADMPushProvider$MessageAlertReceiver

<receiver
  android:name="io.teak.sdk.push.ADMPushProvider$MessageAlertReceiver"
  android:permission="com.amazon.device.messaging.permission.SEND"
  android:exported="true">

New Features

  • Added support for targeting Android 12 (API level 31)

  • Added a flag to preview SDK 5 changes, io_teak_sdk5_behaviors

    • If io_teak_sdk5_behaviors is enabled, Teak will no longer automatically collect Facebook Access Token, instead you must pass the Facebook User Id to Teak#identifyUser

  • Added Teak$PostLaunchSummaryEvent which will contain launch information for both Teak attributed, and non-Teak attributed launches

Bug Fixes

  • When app is launched via an email link Teak$NotificationEvent event is now correctly posted.

4.0.2

Breaking Changes

  • If you target Android 12, you must add android:exported specifications to the receiver definition for io.teak.sdk.push.ADMPushProvider$MessageAlertReceiver

    • <receiver android:name="io.teak.sdk.push.ADMPushProvider$MessageAlertReceiver" android:permission="com.amazon.device.messaging.permission.SEND" android:exported="true">

New Features

  • Added support for targeting Android 12 (API level 31)

Bug Fixes

  • Fixed a bug where handling links would only report the creative name for links and not email links.

4.0.0

Breaking Changes

  • Deprecated method Teak.onNewIntent removed

  • Support for Adobe AIR removed

  • support-v4 is no longer supported, AndroidX is now required

  • If you use the Facebook SDK, version 4 is now the minimum supported version

  • Teak will no longer create a Firebase instance if one does not exist

    • io_teak_ignore_default_firebase_configuration removed

    • io_teak_gcm_sender_id removed

    • io_teak_firebase_app_id removed

    • io_teak_firebase_api_key removed

    • io_teak_firebase_project_id removed

  • Minimum target SDK is now API 30

  • com.android.installreferrer version used is now 2.2

New Features

  • Now using v2 Signatures for request signing (this is not a user-facing change).

  • Now supports out-of-memory fallbacks for all notifiation images.

  • Added teakScheduleId and teakCreativeId to NotificationEvent

  • Added teakScheduleId and teakCreativeId to RewardClaimEvent

  • Now automatically tracks purchases from Google Play Billing v3

Bug Fixes

  • Fixed a bug where links created on the Teak Dashboard could only link to the teakXXXXX:// scheme.

3.5.3

Bug Fixes

  • Fixed a bug where links created on the Teak Dashboard could only link to the teakXXXXX:// scheme.

3.5.0

Breaking Changes

  • Requires Firebase Messaging 21 minimum

Bug Fixes

  • Resets firstSendTime on UserProfile after send.

3.4.4

Bug Fixes

  • Fix deadlock when a UnitySendMessage call would cause another callback into Teak under certain circumstances

3.4.3

Bug Fixes

  • Fix singleton FCMPushProvider to allow operation before Teak initialization

3.4.2

New Features

  • Let users use their own FirebaseMessagingService

  • Added isTeakNotification

  • Added onMessageReceivedExternal

3.4.1

Bug Fixes

  • Fix mutex lock order to resolve potential deadlock

3.4.0

New Features

  • Supports Amazon Device Messaging 1.1.0

  • LaunchedFromLink event

3.3.2

Bug Fixes

  • Fixes deadlock in Session.isCurrentSession

3.3.0

Breaking Changes

  • If using Teak to create a separate Firebase instance, you must add io_teak_firebase_project_id and

New Features

  • Support Firebase Project Id for Firebase 20.1.6+

Bug Fixes

  • Push state chain limited to a length of 50

  • Fix public static void identifyUser(final String userIdentifier) overloaded method

  • No longer process deep links which are not Teak links

  • Reduce thread allocations, and add further measurement around thread and executor allocations

3.2.0

New Features

  • Supports Facebook SDK 6.x

  • Added io_teak_log_trace, enable to log out every Teak call with parameters

  • Added logout

  • Added teakChannelName to the dictionary reported by notification and reward claim events

Bug Fixes

  • Fixes compatibility with Firebase 20.1+

3.1.1

Bug Fixes

  • No longer will call deep links again, or resolve rewards again, when the user id is changed.

3.1.0

New Features

  • /teak_internal/app_settings deep link added. Opens Android settings to the settings for this app.

  • Foreground notification support.

Bug Fixes

  • Added additional proguard keep paterns.

3.0.1

New Features

  • Teak can now optionally ignore the default Firebase configuration, use <meta-data android:name="io_teak_ignore_default_firebase_configuration" android:value="true" />

3.0.0

Breaking Changes

  • minSdkVersion is now 16

  • targetSdkVersion must now be 28 or higher

New Features

  • Teak can now use androidx or the support-v4 libraries for its dependencies.

Bug Fixes

  • Can now use the 5.x series of the Facebook SDK.

2.3.0

New Features

  • The incoming path used to parse a deep link is sent along to the handler in the key __incoming_path

  • The full url used to parse a deep link is sent along to the handler in the key __incoming_url

  • identifyUser now takes email as a parameter

2.2.0

New Features

  • FOREGROUND_NOTIFICATION_INTENT is broadcast when a Push Notification is recieved while the app is in the foreground.

  • ms_since_first_event is now sent with batched requests.

  • Added deviceBoard and deviceProduct to device information.

  • Teak.setLogListener for getting callbacks when the Teak SDK would log an event.

Bug Fixes

  • Suppress some log spam when looking to see if NotificationManagerCompat.areNotificationsEnabled is supported.

  • Stopped some of the fine-grain checking for what IInAppBillingService supports, to prevent possible ANRs.

  • All threads and executors are now named, so that any ANR/crash report which includes thread names will clearly show what Teak is doing in that ANR/crash.

2.1.1

Bug Fixes

  • io_teak_enable_caching has been removed

  • app_version reported to Sentry should be a string, not int

  • Sentry reporting Job is now working properly

2.1.0

New Features

  • Support trackEvent for Adobe AIR

  • Added incrementEvent

  • Now tracking PackageInfo.versionName (instead of just PackageInfo.versionCode)

  • Added support for Google Play’s com.android.installreferrer.api.InstallReferrerClient

  • Added support for specifying the Android store, using io_teak_store_id. Will detect Amazon automatically; defaults to Google Play.

Bug Fixes

  • Properly handle deep links with '?' or '#' in a URL path element

2.0.1

Bug Fixes

  • ADMPushProvider$MessageAlertReceiver no longer obfuscated.

2.0.0

Breaking Changes

  • Direct GCM support removed, now using Firebase

  • Firebase Job Dispatcher is now used for a unified Teak worker

    • Removes io.teak.sdk.service.RavenService

    • Removes io.teak.sdk.service.DeviceStateService

    • Changes io.teak.sdk.service.JobService into a Firebase JobDispatcher

  • userHasDisabledNotificationsgetNotificationStatus

New Features

  • ShortcutBadger @ 50d422d1792b394a5a6cda10cc358ba58436fe29

  • io_teak_enable_caching now defaults to true

Bug Fixes

  • If an OutOfMemoryError is thrown during construction of a notification’s expanded view the expanded view will simply be omitted instead of not showing the entire notification.

1.0.2

Bug Fixes

  • ADMPushProvider$MessageAlertReceiver no longer obfuscated.

1.0.0

New Features

  • Notification asset downloads can be cached, if io_teak_enable_caching is enabled. It is disabled by default, but everyone is encouraged to try using it.

  • Long Distance notifications

Bug Fixes

  • Now defaults to Google Play Store if there is no installer package, instead of disabling tracking

  • Video notifications should no longer get sorted to the bottom after refresh on Android 8+

0.19.0

New Features

  • Notifications will now retry asset loading if an asset fails to load. Delay is 2, 4, and 8 seconds.

  • Android P support

  • android.os.Build.SERIAL will not be used under Android P

  • Updated Sentry exception reporting properties

  • Tracks historical changes in the state of push permissions

  • Per-user opt-out of tracking, configured via identifyUser

Bug Fixes

  • In the ZIP distribution of the Android SDK, the UUID for the ProGuard file sent to Sentry was not being included, this is fixed

  • Rarely a deadlock could occur when a GCM registration update came in during a Session state change, this is fixed

0.18.0

New Features

  • Ability to disable collection of IDFA, Push Key, and/or Facebook Access Token

    • <meta-data android:name="io_teak_enable_idfa" android:value="false" />

    • <meta-data android:name="io_teak_enable_facebook" android:value="false" />

    • <meta-data android:name="io_teak_enable_push_key" android:value="false" />

Bug Fixes

  • If Teak.onCreate fails, don’t crash with a null pointer

0.17.0

Breaking Changes

  • Requires io.teak.sdk.service.JobService for Android 8 job compatibility.

  • Unity requires no changes.

  • Adobe AIR requires adding <service android:name="io.teak.sdk.service.JobService" android:permission="android.permission.BIND_JOB_SERVICE" android:exported="true"/> to XML

  • Renamed some public static final fields (This should have no impact unless you were using these for some very strange reason)

    • TEAK_API_KEYTEAK_API_KEY_RESOURCE

    • TEAK_APP_IDTEAK_APP_ID_RESOURCE

    • TEAK_GCM_SENDER_IDTEAK_GCM_SENDER_ID_RESOURCE

New Features

  • Android 8 job compatibility

  • Reward Link Name is now the ‘creative name’ if the on reward callback was triggered from a deep link

0.16.0

Bug Fixes

  • Fix corner case where GCM reg would not get sent if it came in during identifyUser (for real this time)

  • Fixes integration checker when <activity-alias> is used

0.15.0

New Features

  • User Profile support

  • Request batchfing for trackEvent, user profile

Bug Fixes

  • Fix corner case where GCM reg would not get sent if it came in during identifyUser

0.14.0

New Features

  • Notification buttons in expanded view

  • Aspect ratio now preserved in small view notifications

Bug Fixes

  • Launch deep-link now takes precedence over install-attribution deep link on first launch of app

0.13.8

New Features

  • Added userHasDisabledNotifications

  • Added openSettingsAppToThisAppsSettings

  • Added setApplicationBadgeNumber

  • teakRewardId now included in the REWARD_CLAIM_ATTEMPT event

  • Enhanced Integration Checks

Bug Fixes

  • Schedule/Cancel notification returns id as a string

0.13.6

Bug Fixes

  • Purchase tracking works once again

  • Send common payload during reward claim

  • RetryableTask now immediately fails if ClassNotFoundException (if GCM isn’t linked)

0.13.5

Bug Fixes

  • Fix crash when changing user id due to locking Session A and unlocking Session B

  • Fix non-delivery of push notifications when app had been killed in the background

  • Try and catch initialization errors from TeakWrapper and report them

0.13.3

New Features

  • You can now load images in push notifications from your Android assets, example assets:///pixelgrid_2000x2000.png (note triple slash)

  • Using NONE for an image resource will now remove it from the layout

  • Notifications will no longer combine into a single notification (in as much as is possible to control) on Android 8+ only

0.13.2

Breaking Changes

  • If you are compiling with a target SDK of Android 26 or greater, Teak will now check requirements and throw an exception if the Android v4 support lib doesn’t support Android 26 features (required features for push functionality)

Bug Fixes

  • Support explicit intents for Android 26+

  • Support notification categories for Android 26+

  • ADM listener fixed

  • Deadlock due to very slow network conditions fixed

0.13.1

New Features

  • Unity/Air wrapper classes now included in core for testability and better continuous integration performance

Bug Fixes

  • Hotfix from 0.12.9 integrated

  • Internal system re-write

0.13.0

Breaking Changes

  • io.teak.sdk.TeakUnityPlayerNativeActivity renamed to io.teak.sdk.wrapper.unity.TeakUnityPlayerNativeActivity

  • io.teak.sdk.TeakUnityPlayerActivity renamed to io.teak.sdk.wrapper.unity.TeakUnityPlayerActivity

  • io.teak.sdk.Application renamed to io.teak.sdk.wrapper.Application

0.12.8

Breaking Changes

  • Use Teak.registerDeepLink instead of DeepLink.registerRoute

New Features

  • TeakNotification.cancelAll

  • TeakNotification calls now return a JSON string with status and data

Bug Fixes

  • Setting verbose logging will immediately take effect

  • Corner-case crash fix in Logs

  • Attach additional info to exception reporting, teakCreativeName

  • Fixed caught-exception in GCM if the OS kills the GCM service

0.12.7

New Features

  • Additional info in the notification & reward payload

Bug Fixes

  • Add specific catches for exceptions we should ignore, and not report

    • TEAK-SDK-F

    • TEAK-SDK-M

    • TEAK-SDK-X

    • TEAK-SDK-11

    • TEAK-SDK-Q

    • TEAK-SDK-Z

    • TEAK-SDK-N

    • TEAK-SDK-K

    • TEAK-SDK-W

    • TEAK-SDK-V

    • TEAK-SDK-T

    • TEAK-SDK-S

    • TEAK-SDK-J

    • TEAK-SDK-P

  • Fixed TEAK-SDK-9

  • Fixed issue with Android < 5 and custom notification icons

0.12.6

Bug Fixes

  • Fix parameter checking logic bug in trackEvent

  • Fix 'cold start' attribution bug

0.12.5

New Features

  • Add support for

    • io_teak_notification_accent_color

    • io_teak_small_notification_icon

    • io_teak_large_notification_icon

Bug Fixes

  • Back-stack loop bug fix

  • Catch SecurityException on very old Android which requires android.permission.VIBRATE

  • Raven service changed from error to warning to prevent developer anxiety

0.12.4

Bug Fixes

  • Additional listeners for GCM registration key updates, and improvements in handling GCM registrations.

0.12.3

Bug Fixes

  • Use layout_centerVertical on the app icon to support various background image heights

  • Prevent back-stack loops from out of app deep-links

0.12.2

New Features

  • Push notification remote syntax is now versioned (non-breaking), new features

  • [object Object]

  • Large/small image background

  • Support setting credentials in <meta-data> for Adobe Air.

Bug Fixes

  • Fix state machine bug where a RemoteConfiguration coming back when device was in background would assign the Configured Session state.

  • No longer calls ACTION_CLOSE_SYSTEM_DIALOGS when dismissing notifications

  • No longer DDoS ourselves with remote logging

0.12.1

Bug Fixes

  • Unity and Adobe AIR now use a unified way of assigning their SDK versions

0.12.0

New Features

  • Remote logging

  • Remote exception tracking