GithubHelp home page GithubHelp logo

clevertap-android-sdk's Introduction

CleverTap Android SDKs

Build Status build - pr raised against develop build - master Download

👋 Introduction

(Back to top)

The CleverTap Android SDK for Mobile Customer Engagement and Analytics solutions

CleverTap brings together real-time user insights, an advanced segmentation engine, and easy-to-use marketing tools in one mobile marketing platform — giving your team the power to create amazing experiences that deepen customer relationships. Our intelligent mobile marketing platform provides the insights you need to keep users engaged and drive long-term retention and growth.

For more information check out our website and documentation.

To get started, sign up here

🎉 Installation

(Back to top)

We publish the SDK to mavenCentral as an AAR file. Just declare it as dependency in your build.gradle file.

    dependencies {      
         implementation "com.clevertap.android:clevertap-android-sdk:6.2.1"
    }

Alternatively, you can download and add the AAR file included in this repo in your Module libs directory and tell gradle to install it like this:

   dependencies {      
       implementation (name: "clevertap-android-sdk-6.2.1", ext: 'aar')
   }

📖 Dependencies

(Back to top)

Add the Firebase Messaging library and Android Support Library v4 as dependencies to your Module build.gradle file.

     dependencies {      
         implementation "com.clevertap.android:clevertap-android-sdk:6.2.1"
         implementation "androidx.core:core:1.9.0"
         implementation "com.google.firebase:firebase-messaging:23.0.6"
         implementation "com.google.android.gms:play-services-ads:22.3.0" // Required only if you enable Google ADID collection in the SDK (turned off by default).
     }

Also be sure to include the google-services.json classpath in your Project level build.gradle file:

    // Top-level build file where you can add configuration options common to all sub-projects/modules.         
        
    buildscript {       
         repositories {      
             google()
             mavenCentral()       

             // if you are including the aar file manually in your Module libs directory add this:
             flatDir {
                dirs 'libs'
            }
        
         }       
         dependencies {      
             classpath "com.android.tools.build:gradle:8.2.2"
             classpath "com.google.gms:google-services:4.4.0"
        
             // NOTE: Do not place your application dependencies here; they belong       
             // in the individual module build.gradle files      
         }       
    }

Add your FCM generated google-services.json file to your project and add the following to the end of your build.gradle:

apply plugin: 'com.google.gms.google-services'

Interstitial InApp Notification templates support Audio and Video with the help of ExoPlayer. To enable Audio/Video in your Interstitial InApp Notifications, add the following dependencies in your build.gradle file :

    implementation "com.google.android.exoplayer:exoplayer:2.19.1"
    implementation "com.google.android.exoplayer:exoplayer-hls:2.19.1"
    implementation "com.google.android.exoplayer:exoplayer-ui:2.19.1"

Once you've updated your module build.gradle file, make sure you have specified mavenCentral() and google() as a repositories in your project build.gradle and then sync your project in File -> Sync Project with Gradle Files.

🎉 Integration

(Back to top)

Add Your CleverTap Account Credentials

Add the following inside the <application></application> tags of your AndroidManifest.xml:

<meta-data  
     android:name="CLEVERTAP_ACCOUNT_ID"  
     android:value="Your CleverTap Account ID"/>  
<meta-data  
     android:name="CLEVERTAP_TOKEN"  
     android:value="Your CleverTap Account Token"/>

Replace "Your CleverTap Account ID" and "Your CleverTap Account Token" with actual values from your CleverTap Dashboard -> Settings -> Integration -> Account ID, SDK's.

Setup the Lifecycle Callback - IMPORTANT

Add the android:name property to the <application> tag in your AndroidManifest.xml:

    <application
        android:label="@string/app_name"
        android:icon="@drawable/ic_launcher"
        android:name="com.clevertap.android.sdk.Application">

Note: If you've already got a custom Application class, call ActivityLifecycleCallback.register(this); before super.onCreate() in your custom Application class.

Note: The above step is extremely important and enables CleverTap to track notification opens, display in-app notifications, track deep links, and other important user behavior.

🚀 Initialization

(Back to top)

By default the library creates a shared default instance based on the Account ID and Account Token included in your AndroidManifest.xml. To access this default shared singleton instance in your code call -

CleverTapAPI.getDefaultInstance(context)
CleverTapAPI clevertap = CleverTapAPI.getDefaultInstance(getApplicationContext());

Creating multiple instances of the SDK

Starting with version 3.2.0 of the SDK, you can create additional CleverTap instances to send data to multiple CleverTap accounts from your app. To create an additional instance:

  • Create a CleverTapInstanceConfig object. This object can be created and configured as follows:
    CleverTapInstanceConfig clevertapAdditionalInstanceConfig =  CleverTapInstanceConfig.createInstance(context, "ADDITIONAL_CLEVERTAP_ACCOUNT_ID", "ADDITIONAL_CLEVERTAP_ACCOUNT_TOKEN");
    clevertapAdditionalInstanceConfig.setDebugLevel(CleverTapAPI.LogLevel.DEBUG); // default is CleverTapAPI.LogLevel.INFO
    clevertapAdditionalInstanceConfig.setAnalyticsOnly(true); // disables the user engagement features of the instance, default is false
    clevertapAdditionalInstanceConfig.useGoogleAdId(true); // enables the collection of the Google ADID by the instance, default is false
  • Then to create and subsequently access the additional CleverTap instance, call CleverTapAPI.instanceWithConfig with the CleverTapInstanceConfig object you created.
CleverTapAPI clevertapAdditionalInstance = CleverTapAPI.instanceWithConfig(clevertapAdditionalInstanceConfig);

Note: All configuration to the CleverTapInstanceConfig object must be done prior to calling CleverTapAPI.instanceWithConfig. Subsequent changes to the CleverTapInstanceConfig object will have no effect on the additional CleverTap instance created.

𝌡 Example Usage

(Back to top)

See the usage examples here. Also, see the example project, included with this repo.

See our full documentation here for more information on Events and Profile Tracking, Push Notifications, In-App messages, Install Referrer tracking and app personalization.

📍 CleverTap Geofence SDK

(Back to top)

CleverTap Android Geofence SDK provides Geofencing capabilities to CleverTap Android SDK by using the Play Services Location library. To find the integration steps for CleverTap Geofence SDK, click here

📲 CleverTap Xiaomi Push SDK

(Back to top)

CleverTap Xiaomi Push SDK provides an out of the box service to use the Xiaomi Push SDK. Find the integration steps for the CleverTap Xiaomi Push SDK here

📲 CleverTap Huawei Push SDK

(Back to top)

CleverTap Huawei Push SDK provides an out of the box service to use the Huawei Messaging Service. Find the integration steps for the CleverTap Huawei Push SDK here

📲 CleverTap Push Templates SDK

(Back to top)

CleverTap Push Templates SDK helps you engage with your users using fancy push notification templates built specifically to work with CleverTap. Find the integration steps for the CleverTap Push Templates SDK here

📲 CleverTap RenderMax SDK

(Back to top)

RenderMax SDK delivers and renders notifications on the user's device even if the FCM delivery fails or the device is optimized for battery consumption. Find the integration steps for the CleverTap RenderMax SDK here

📄 License

(Back to top) CleverTap Android SDK is MIT licensed, as found in the LICENSE file.

clevertap-android-sdk's People

Contributors

anush-shand avatar ctlalit avatar darshanclevertap avatar hborisoff avatar judepereira avatar okmanideep avatar piyush-kukadiya avatar pwilkniss avatar root-ansh avatar root-ansh-ct avatar shivamsharma2710 avatar sriharshachilakapati avatar vasct avatar william-ct avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

clevertap-android-sdk's Issues

Use new install referrer api (the current one will stop working in March 2020)

The documentation for referral tracking refers to a broadcast receiver to track install referrers.

This mechanism will stop working in March 2020. We received this mail from Google Play:

Hello Google Play Developer,

We recently announced that we’ll be deprecating the install_referrer intent broadcast mechanism. Because one or more of your apps uses this intent to track referrals, we wanted to ensure you make the switch before March 1, 2020. After this date, new versions of the Play Store app will no longer broadcast the install_referrer intent after app installs.

Action required

Migrate to the Play Install Referrer API to track your app installs for the following apps and/or games.

The Play Install Referrer API offers better performance, uses a secure communication channel between your app and the Play Store, and offers a more robust solution against spoof and attribution fraud.
We know this change may require some additional work on your part and appreciate your understanding.

Could you please update the sdk to use the new install referrer apis, and update the documentation?

Thanks!

java.lang.VerifyError: Verifier rejected class com.clevertap.android.sdk.InAppFCManager

Suddenly started getting this error on v3.3.3

java.lang.VerifyError: Verifier rejected class com.clevertap.android.sdk.InAppFCManager: int[] com.clevertap.android.sdk.InAppFCManager.getInAppCountsFromPersistentStore(java.lang.String) failed to verify: int[] com.clevertap.android.sdk.InAppFCManager.getInAppCountsFromPersistentStore(java.lang.String): [0x3B] register v2 has type Conflict but expected Integer (declaration of 'com.clevertap.android.sdk.InAppFCManager' appears in /data/app/com.myapp.staging-w9oMEq_bIf4_tZ0J65nkLg==/base.apk)
at com.clevertap.android.sdk.CleverTapAPI.(CleverTapAPI.java:182)
at com.clevertap.android.sdk.CleverTapAPI.instanceWithConfig(CleverTapAPI.java:456)
at com.clevertap.android.sdk.CleverTapAPI.getDefaultInstance(CleverTapAPI.java:435)
at com.myapp.app.MyApp.initCleverTap(MyApp.kt:94)
at com.myapp.app.MyApp.onCreate(MyApp.kt:74)

This is what I am doing in my Application class onCreate()

private fun initCleverTap() {
        cleverTap = CleverTapAPI.getDefaultInstance(applicationContext)
        cleverTap?.enableDeviceNetworkInfoReporting(true)
        CleverTapAPI.setDebugLevel(CleverTapAPI.LogLevel.DEBUG)
    }

Android Studio 3.3 RC2

Notification not shown

I'm using a custom handler to recieve message and use CleverTapAPI.createNotification(getApplicationContext(), extras); to show the notification, but for some reason, notification is not shown.

Can someone help me with this?

java.lang.NoClassDefFoundError: com.clevertap.android.sdk.InAppFCManager

 Caused by: java.lang.VerifyError: Verifier rejected class com.clevertap.android.sdk.InAppFCManager: int[] com.clevertap.android.sdk.InAppFCManager.getInAppCountsFromPersistentStore(java.lang.String) failed to verify: int[] com.clevertap.android.sdk.InAppFCManager.getInAppCountsFromPersistentStore(java.lang.String): [0x3B] register v2 has type Conflict but expected Integer (declaration of 'com.clevertap.android.sdk.InAppFCManager' appears in /data/app/com.mobileapp-00OtLCfNL-xx17An9H2N7A==/base.apk!classes2.dex)

Deeplink invocation with query params as Bundle

Hello,

Currently the deep-links are directly invoked using fireUrlThroughIntent(). Is it possible to forward the query params of the deep link url as Bundle?

Add?

private fun getIntentExtras(url: String): Bundle? {
    return try {
        val uri = Uri.parse(url)
        val queryKeys: Set<String> = uri.queryParameterNames
        Bundle().apply {
            queryKeys.forEach {
                putString(it, uri.getQueryParameter(it))
            }
        }
    } catch (e: NullPointerException || e: UnsupportedOperationException) {
        LogUtils.logException(e)
        null
    } 
}

ConcurrentModificationException in clevertap sdk

Crash in clevertap sdk:

Clevertap version: 3.4.2

Fatal Exception: java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode + 1441(HashMap.java:1441)
at java.util.HashMap$KeyIterator.next + 1465(HashMap.java:1465)
at com.clevertap.android.sdk.CleverTapAPI.createNotification + 5132(CleverTapAPI.java:5132)
at com.clevertap.android.sdk.CleverTapAPI.createNotification + 5105(CleverTapAPI.java:5105)

R8 warnings for clevertap 3.5.1

While building obfuscated build, faced these warnings:

R8 WARNING:
Missing class: com.google.android.gms.iid.InstanceIDListenerService |  
Missing class: com.google.android.exoplayer2.Player$EventListener |  
Missing class: com.google.android.gms.gcm.GcmListenerService |  
Missing class: com.google.firebase.iid.FirebaseInstanceIdService |  

If I remove clevertap dependency from gradle, these warnings disappear.
Android studio version: 3.5

compileSdkVersion 29
buildToolsVersion '29.0.2'

implementation 'com.google.firebase:firebase-analytics:17.1.0'
implementation 'com.google.firebase:firebase-messaging:20.0.0'
implementation 'com.google.firebase:firebase-database:19.0.0'
implementation 'com.google.firebase:firebase-core:17.1.0'

implementation 'com.clevertap.android:clevertap-android-sdk:3.5.1'

Please remove the warnings.

Android in-app message dismiss on click outside

I want In-app messages shown on android devices to be non-dismissable when touched outside dialog window. How to achieve this?
Changing the theme in manifest's activity com.clevertap.android.sdk.InAppNotificationActivity does not seem to have any change.

Not an issue, more of a request

Hi Guys,

We are an app development shop based out of Los Angeles, CA. I met with one of your representatives here in LA named Kara Drake and she was telling me about your services. To get to the point, we build hybrid apps using adobe air. We already have a few white label apps in the app store using other dashboards but we want to integrate CleverTap into them instead. After searching the internet, we could not find an AS3 SDK for your service. But I did come across your Java SDK. Is there any way that sdk could be open sourced so that we can create an AS3 version? We tried using the REST API independently, but there is no extensive documentation for that and we need to figure out how to specify that our api is coming from ios or android.

Is there anyway you guys could help us with that? Thank you in advanced!

Rey Columna
Founder, Appsfordable.com

Activities are leaking in CleverTapAPI instance

In our app we have configured some activities to exclude from showing in-app notifications which includes following com.taglr.features.home.SplashActivity using Android manifest meta-data tag.

<meta-data
  android:name="CLEVERTAP_INAPP_EXCLUDE"
  android:value="SplashActivity, LoginActivity, SignUpActivity" />

We recently encountered that CleverTapAPI has an HashMap which stores it's instance which is causing a memory leak. Following is detail information about leak:

In com.taglr.debug:2.0.0-rc:41.
* com.taglr.features.home.SplashActivity has leaked:
* static CleverTapAPI.!(instances)!
* ↳ HashMap.!(table)!
* ↳ array HashMap$HashMapEntry[].!([2])!
* ↳ HashMap$HashMapEntry.!(value)!
* ↳ CleverTapAPI.!(context)!
* ↳ SplashActivity

* Reference Key: 2a07eff9-f56a-41fd-8235-fcb566245baa
* Device: Xiaomi Xiaomi Redmi 5 rosy
* Android Version: 7.1.2 API: 25 LeakCanary: 1.6.3 31007b4
* Durations: watch=65961ms, gc=172ms, heap dump=3213ms, analysis=23217ms

* Details:
* Class com.clevertap.android.sdk.CleverTapAPI
|   static debugLevel = 0
|   static instances = java.util.HashMap@322614024 (0x133ab308)
|   static activityCount = 5
|   static $classOverhead = byte[738]@321257473 (0x13260001)
|   static haveVideoPlayerSupport = false
|   static sslContext = null
|   static sdkVersion = "!SDK-VERSION-STRING!:com.clevertap.android:clevertap-android-sdk:3.4.3.0"
|   static currentlyDisplayingInApp = null
|   static initialAppEnteredForegroundTime = 1425778
|   static NOTIFICATION_TAG = "wzrk_pn"
|   static pendingNotifications = java.util.ArrayList@314983616 (0x12c644c0)
|   static defaultConfig = com.clevertap.android.sdk.CleverTapInstanceConfig@322760816 (0x133cf070)
|   static currentActivity = java.lang.ref.WeakReference@317823848 (0x12f19b68)
|   static sslSocketFactory = null
|   static pendingValidationResultsLock = java.lang.Boolean@1881374968 (0x702380f8)
|   static appForeground = true
|   static CHARGED_EVENT = "Charged"
* Instance of java.util.HashMap
|   static EMPTY_TABLE = java.util.HashMap$HashMapEntry[0]@1886745280 (0x707572c0)
|   static DEFAULT_INITIAL_CAPACITY = 4
|   static serialVersionUID = 362498820763181265
|   static MAXIMUM_CAPACITY = 1073741824
|   static $classOverhead = byte[416]@1881681793 (0x70282f81)
|   static DEFAULT_LOAD_FACTOR = 0.75
|   entrySet = null
|   loadFactor = 0.75
|   modCount = 1
|   size = 1
|   table = java.util.HashMap$HashMapEntry[4]@316096320 (0x12d73f40)
|   threshold = 3
|   keySet = java.util.HashMap$KeySet@314829984 (0x12c3eca0)
|   values = null
|   shadow$_klass_ = java.util.HashMap
|   shadow$_monitor_ = 0
* Array of java.util.HashMap$HashMapEntry[]
|   [0] = null
|   [1] = null
|   [2] = java.util.HashMap$HashMapEntry@316557440 (0x12de4880)
|   [3] = null
* Instance of java.util.HashMap$HashMapEntry
|   static $classOverhead = byte[144]@1881954945 (0x702c5a81)
|   hash = 1830329926
|   key = "TEST-98R-448-RR5Z"
|   next = null
|   value = com.clevertap.android.sdk.CleverTapAPI@322681920 (0x133bbc40)
|   shadow$_klass_ = java.util.HashMap$HashMapEntry
|   shadow$_monitor_ = 0
* Instance of com.clevertap.android.sdk.CleverTapAPI
|   static debugLevel = 0
|   static instances = java.util.HashMap@322614024 (0x133ab308)
|   static activityCount = 5
|   static $classOverhead = byte[738]@321257473 (0x13260001)
|   static haveVideoPlayerSupport = false
|   static sslContext = null
|   static sdkVersion = "!SDK-VERSION-STRING!:com.clevertap.android:clevertap-android-sdk:3.4.3.0"
|   static currentlyDisplayingInApp = null
|   static initialAppEnteredForegroundTime = 1425778
|   static NOTIFICATION_TAG = "wzrk_pn"
|   static pendingNotifications = java.util.ArrayList@314983616 (0x12c644c0)
|   static defaultConfig = com.clevertap.android.sdk.CleverTapInstanceConfig@322760816 (0x133cf070)
|   static currentActivity = java.lang.ref.WeakReference@317823848 (0x12f19b68)
|   static sslSocketFactory = null
|   static pendingValidationResultsLock = java.lang.Boolean@1881374968 (0x702380f8)
|   static appForeground = true
|   static CHARGED_EVENT = "Charged"
|   EXECUTOR_THREAD_ID = 3878
|   NOTIFICATION_THREAD_ID = 3921
|   appLastSeen = 1556204010271
|   appLaunchPushed = true
|   appLaunchPushedLock = java.lang.Object@314898000 (0x12c4f650)
|   campaign = null
|   commsRunnable = com.clevertap.android.sdk.CleverTapAPI$11@318027328 (0x12f4b640)
|   config = com.clevertap.android.sdk.CleverTapInstanceConfig@322760864 (0x133cf0a0)

|   context = com.taglr.features.home.SplashActivity@316733280 (0x12e0f760)
|   ctInboxController = null
|   currentRequestTimestamp = 1556203942
|   currentScreenName = ""
|   currentSessionId = 1556203939
|   currentUserOptedOut = false
|   data = com.clevertap.android.sdk.DataHandler@319849840 (0x13108570)
|   dbAdapter = com.clevertap.android.sdk.DBAdapter@315109584 (0x12c830d0)
|   deviceInfo = com.clevertap.android.sdk.DeviceInfo@322614704 (0x133ab5b0)
|   enableNetworkInfoReporting = false
|   enabledPushTypes = java.util.ArrayList@315111216 (0x12c83730)
|   es = java.util.concurrent.ThreadPoolExecutor@317259704 (0x12e8ffb8)
|   event = com.clevertap.android.sdk.EventHandler@319849968 (0x131085f0)
|   eventLock = java.lang.Boolean@1881374968 (0x702380f8)
|   firstSession = true
|   handlerUsingMainLooper = android.os.Handler@319252032 (0x13076640)
|   havePushedDeviceToken = true
|   inAppFCManager = com.clevertap.android.sdk.InAppFCManager@319611488 (0x130ce260)
|   inAppNotificationListener = null
|   inappActivityExclude = java.util.HashSet@316768800 (0x12e18220)
|   inboxControllerLock = java.lang.Object@314898032 (0x12c4f670)
|   inboxListener = null
|   installReferrerMap = java.util.HashMap@322614144 (0x133ab380)
|   isBgPing = false
|   lastLocationPingTime = 0
|   lastSessionLength = 0
|   lastVisitTime = -1
|   localDataStore = com.clevertap.android.sdk.LocalDataStore@322614424 (0x133ab498)
|   locationFromUser = null
|   mResponseFailureCount = 0
|   medium = null
|   notificationIdTagMap = java.util.HashMap@322614064 (0x133ab330)
|   notificationMapLock = java.lang.Object@314898024 (0x12c4f668)
|   notificationViewedIdTagMap = java.util.HashMap@322614104 (0x133ab358)
|   ns = java.util.concurrent.ThreadPoolExecutor@322773200 (0x133d20d0)
|   offline = false
|   optOutFlagLock = java.lang.Object@314898008 (0x12c4f658)
|   pendingInappRunnable = null
|   pendingValidationResults = java.util.ArrayList@320929624 (0x1320ff58)
|   processingUserLoginIdentifier = null
|   processingUserLoginLock = java.lang.Boolean@1881374968 (0x702380f8)
|   profile = com.clevertap.android.sdk.ProfileHandler@319849856 (0x13108580)
|   session = com.clevertap.android.sdk.SessionHandler@319849824 (0x13108560)
|   source = null
|   syncListener = null
|   tokenLock = java.lang.Object@314898016 (0x12c4f660)
|   tokenRefreshListener = null
|   validator = com.clevertap.android.sdk.Validator@314898080 (0x12c4f6a0)
|   wzrkParams = null
|   shadow$_klass_ = com.clevertap.android.sdk.CleverTapAPI
|   shadow$_monitor_ = 0
* Instance of com.taglr.features.home.SplashActivity
|   static serialVersionUID = 6028044270419968919
|   static $classOverhead = byte[4376]@321826817 (0x132eb001)
|   static $change = null
|   isLoadingComplete = true
|   isLoggedIn = false
|   mBaseContainer = null
|   mSurfaceView = null
|   mediaPlayer = null
|   surfaceHolder = android.view.SurfaceView$4@316264160 (0x12d9cee0)
|   mFirebaseAnalytics = com.google.firebase.analytics.FirebaseAnalytics@316702160 (0x12e07dd0)
|   mProfileBottomSheetDialog = null
|   mProgressDialog = null
|   mSnackbar = null
|   shouldShowRefresh = false
|   enter = 17432576
|   exit = 17432577
|   mFragmentManager = androidx.fragment.app.FragmentManagerImpl@320124736 (0x1314b740)
|   mLauncherLock = java.util.concurrent.atomic.AtomicBoolean@317294000 (0x12e985b0)
|   mLock = java.lang.Object@314897864 (0x12c4f5c8)
|   mNetworkMessage = androidx.appcompat.widget.AppCompatTextView@319802368 (0x130fcc00)
|   mNetworkStatusLayout = androidx.constraintlayout.widget.ConstraintLayout@316972032 (0x12e49c00)
|   mRefreshButton = androidx.appcompat.widget.AppCompatTextView@320984064 (0x1321d400)
|   mTransitionHandler = android.os.Handler@318105312 (0x12f5e6e0)
|   mUnbinder = com.taglr.features.home.SplashActivity_ViewBinding@316578304 (0x12de9a00)
|   model = com.taglr.features.home.SplashViewModel@315407936 (0x12ccbe40)

|   networkStatusEnterAnimation = android.view.animation.TranslateAnimation@315972192 (0x12d55a60)
|   networkStatusExitAnimation = android.view.animation.TranslateAnimation@315972032 (0x12d559c0)
|   mDelegate = androidx.appcompat.app.AppCompatDelegateImpl@322527872 (0x13396280)
|   mResources = null
|   mThemeId = 2131886399
|   mCreated = true
|   mFragments = androidx.fragment.app.FragmentController@317294096 (0x12e98610)
|   mNextCandidateRequestIndex = 0
|   mPendingFragmentActivityResults = androidx.collection.SparseArrayCompat@316557344 (0x12de4820)
|   mRequestedPermissionsFromFragment = false
|   mResumed = false
|   mStartedActivityFromFragment = false
|   mStartedIntentSenderFromFragment = false
|   mStopped = true
|   mLifecycleRegistry = androidx.lifecycle.LifecycleRegistry@318104672 (0x12f5e460)
|   mOnBackPressedCallbacks = java.util.concurrent.CopyOnWriteArrayList@317294240 (0x12e986a0)
|   mViewModelStore = androidx.lifecycle.ViewModelStore@317293296 (0x12e982f0)
|   mExtraDataMap = androidx.collection.SimpleArrayMap@320596024 (0x131be838)
|   mActionBar = null
|   mActionModeTypeStarting = 0
|   mActivityInfo = android.content.pm.ActivityInfo@315122160 (0x12c861f0)
|   mActivityTransitionState = android.app.ActivityTransitionState@319911856 (0x131177b0)
|   mApplication = com.taglr.Taglr@314853952 (0x12c44a40)
|   mCalled = true
|   mChangeCanvasToTranslucent = false
|   mChangingConfigurations = false
|   mCheckForDragging = false
|   mComponent = android.content.ComponentName@315089392 (0x12c7e1f0)
|   mConfigChangeFlags = 0
|   mCurrentConfig = android.content.res.Configuration@319200864 (0x13069e60)
|   mDecor = null
|   mDefaultKeyMode = 0
|   mDefaultKeySsb = null
|   mDestroyed = true
|   mDoReportFullyDrawn = false
|   mDragging = false
|   mEatKeyUpEvent = false
|   mEmbeddedID = null
|   mEnableDefaultActionBarUp = false
|   mEnterTransitionListener = android.app.SharedElementCallback$1@1886755632 (0x70759b30)
|   mExitTransitionListener = android.app.SharedElementCallback$1@1886755632 (0x70759b30)
|   mFinished = true
|   mFragments = android.app.FragmentController@317294272 (0x12e986c0)
|   mHandler = android.os.Handler@318104576 (0x12f5e400)
|   mHasCurrentPermissionsRequest = false
|   mIdent = 265151152
|   mInstanceTracker = android.os.StrictMode$InstanceTracker@317294256 (0x12e986b0)
|   mInstrumentation = android.app.Instrumentation@314875760 (0x12c49f70)
|   mIntent = android.content.Intent@315005752 (0x12c69b38)
|   mInterceptor = null
|   mIsInPictureInPictureMode = false
|   mLastDraging = false
|   mLastNonConfigurationInstances = null
|   mMainThread = android.app.ActivityThread@315879776 (0x12d3f160)
|   mManagedCursors = java.util.ArrayList@320595976 (0x131be808)
|   mManagedDialogs = null
|   mMenuInflater = null
|   mParent = null
|   mReferrer = null
|   mResultCode = 0
|   mResultData = null
|   mResumed = false
|   mSearchEvent = null
|   mSearchManager = null
|   mStartedActivity = false
|   mStopped = true
|   mTaskDescription = android.app.ActivityManager$TaskDescription@318104608 (0x12f5e420)
|   mTemporaryPause = false
|   mTitle = "Taglr"
|   mTitleColor = 0
|   mTitleReady = true
|   mToken = android.os.BinderProxy@315069568 (0x12c79480)
|   mTouchDownX = 0
|   mTouchDownY = 0
|   mTranslucentCallback = null
|   mUiThread = java.lang.Thread@1977706960 (0x75e169d0)
|   mVisibleBehind = false
|   mVisibleFromClient = true
|   mVisibleFromServer = true
|   mVoiceInteractor = null
|   mWindow = com.android.internal.policy.PhoneWindow@322287088 (0x1335b5f0)
|   mWindowAdded = true
|   mWindowManager = android.view.WindowManagerImpl@320597344 (0x131bed60)
|   mInflater = com.android.internal.policy.PhoneLayoutInflater@321726880 (0x132d29a0)
|   mOverrideConfiguration = null
|   mResources = android.content.res.MiuiResources@319911632 (0x131176d0)
|   mTheme = android.content.res.Resources$Theme@317293664 (0x12e98460)
|   mThemeResource = 2131886399

|   mBase = android.app.ContextImpl@320124624 (0x1314b6d0)
|   shadow$_klass_ = com.taglr.features.home.SplashActivity
|   shadow$_monitor_ = 1073745822
* Excluded Refs:
| Field: android.os.Message.obj
| Field: android.os.Message.next
| Field: android.os.Message.target
| Field: android.view.inputmethod.InputMethodManager.mNextServedView
| Field: android.view.inputmethod.InputMethodManager.mServedView
| Field: android.view.inputmethod.InputMethodManager.mServedInputConnection
| Field: android.view.inputmethod.InputMethodManager.mCurRootView
| Field: android.accounts.AccountManager$AmsTask$Response.this$1
| Field: android.os.UserManager.mContext
| Field: com.android.internal.policy.BackdropFrameRenderer.mDecorView
| Field: android.view.Choreographer$FrameDisplayEventReceiver.mMessageQueue (always)
| Thread:FinalizerWatchdogDaemon (always)
| Thread:main (always)
| Thread:LeakCanary-Heap-Dump (always)
| Class:java.lang.ref.WeakReference (always)
| Class:java.lang.ref.SoftReference (always)
| Class:java.lang.ref.PhantomReference (always)
| Class:java.lang.ref.Finalizer (always)
| Class:java.lang.ref.FinalizerReference (always)

I would like to know, what I can do to ignore such memory leaks, thanks.

Migrate to androidx

This sdk is still using the android support library, which is deprecated. Androidx has been out for quite a while now (over a year?). We'd like to remove jetifier from our app build process, but won't be able to until the sdks we use are on androidx.

Enable JavaScript - In-app message

Hi guys,

I tried to use an In-app message with custom HTML + youtube video link, and get an error about "enable JavaScript..." (screenshot attached). Is there any option to enable js in that webview? Or any idea what should I do? Thanks!

enable_js_clevertap_inapp

Didn't find class "com.clevertap.android.sdk.FcmTokenListenerService" crash on Coolpad devices

Crash log

  • Fatal Exception: java.lang.RuntimeException: Unable to instantiate service com.clevertap.android.sdk.FcmTokenListenerService: java.lang.ClassNotFoundException: Didn't find class "com.clevertap.android.sdk.FcmTokenListenerService" on path: DexPathList[[zip file "/data/app/app.babychakra.babychakra-1/base.apk"],nativeLibraryDirectories=[/data/app/app.babychakra.babychakra-1/lib/arm64, /vendor/lib64, /system/lib64]]
    at android.app.ActivityThread.handleCreateService + 3081(ActivityThread.java:3081)
    at android.app.ActivityThread.-wrap4(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage + 1594(ActivityThread.java:1594)
    at android.os.Handler.dispatchMessage + 111(Handler.java:111)
    at android.os.Looper.loop + 207(Looper.java:207)
    at android.app.ActivityThread.main + 5847(ActivityThread.java:5847)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 865(ZygoteInit.java:865)
    at com.android.internal.os.ZygoteInit.main + 755(ZygoteInit.java:755)

Devices:- CoolPad
Os version:- 6.0
100% on Background
CleverTap SDK:- v3.6.1

Native Display Message

Can you provide any simple project on Native Display feature. We have checked doc but we are unable to understand how to create user interface face for all type banner(Simple Banner, Carousel Banner, Banner with icon and coustom)

Null pointer Exception on resuming app from recent app tray in full screen video. v3.3.4

java.lang.RuntimeException: Unable to resume activity {com.clevertap.android.sdk.InAppNotificationActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.FrameLayout.setVisibility(int)' on a null object reference
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3121)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3152)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.FrameLayout.setVisibility(int)' on a null object reference
at com.clevertap.android.sdk.CTInAppNativeInterstitialFragment.prepareMedia(CTInAppNativeInterstitialFragment.java:208)
at com.clevertap.android.sdk.CTInAppNativeInterstitialFragment.onResume(CTInAppNativeInterstitialFragment.java:310)
at android.app.Fragment.performResume(Fragment.java:2263)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1008)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1130)
at android.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:1965)
at android.app.FragmentController.dispatchResume(FragmentController.java:174)
at android.app.Activity.performResume(Activity.java:6356)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3110)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3152) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1398) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5443) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 

NullPointerException in clevertap sdk

Facing this crash in production:
Clevertap version: 3.4.2

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mygate.user/com.clevertap.android.sdk.InAppNotificationActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void d.d.a.a.Gb.e(java.lang.String, java.lang.String)' on a null object reference
at android.app.ActivityThread.performLaunchActivity + 2758(ActivityThread.java:2758)
at android.app.ActivityThread.handleLaunchActivity + 2819(ActivityThread.java:2819)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage + 1558(ActivityThread.java:1558)
at android.os.Handler.dispatchMessage + 102(Handler.java:102)
at android.os.Looper.loop + 163(Looper.java:163)
at android.app.ActivityThread.main + 6396(ActivityThread.java:6396)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 904(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main + 794(ZygoteInit.java:794)

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'void d.d.a.a.Gb.e(java.lang.String, java.lang.String)' on a null object reference
at com.clevertap.android.sdk.InAppNotificationActivity.getListener + 39(InAppNotificationActivity.java:39)
at com.clevertap.android.sdk.InAppNotificationActivity.didShow + 261(InAppNotificationActivity.java:261)
at com.clevertap.android.sdk.InAppNotificationActivity.inAppNotificationDidShow + 291(InAppNotificationActivity.java:291)
at com.clevertap.android.sdk.CTInAppBaseFragment.didShow + 81(CTInAppBaseFragment.java:81)
at com.clevertap.android.sdk.CTInAppBaseFragment.onViewCreated + 67(CTInAppBaseFragment.java:67)
at com.clevertap.android.sdk.CTInAppBaseFullHtmlFragment.onViewCreated + 32(CTInAppBaseFullHtmlFragment.java:32)
at android.app.FragmentManagerImpl.moveToState + 1010(FragmentManagerImpl.java:1010)
at android.app.FragmentManagerImpl.moveToState + 1171(FragmentManagerImpl.java:1171)
at android.app.FragmentManagerImpl.moveToState + 1153(FragmentManagerImpl.java:1153)
at android.app.FragmentManagerImpl.dispatchActivityCreated + 2041(FragmentManagerImpl.java:2041)
at android.app.FragmentController.dispatchActivityCreated + 176(FragmentController.java:176)
at android.app.Activity.performCreateCommon + 6864(Activity.java:6864)
at android.app.Activity.performCreate + 6877(Activity.java:6877)
at android.app.Instrumentation.callActivityOnCreate + 1119(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity + 2711(ActivityThread.java:2711)
at android.app.ActivityThread.handleLaunchActivity + 2819(ActivityThread.java:2819)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage + 1558(ActivityThread.java:1558)
at android.os.Handler.dispatchMessage + 102(Handler.java:102)
at android.os.Looper.loop + 163(Looper.java:163)
at android.app.ActivityThread.main + 6396(ActivityThread.java:6396)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 904(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main + 794(ZygoteInit.java:794)

FirebaseInstanceIdService is Deprecated

This class is deprecated and updating firebase library will cause an unresolved class error in AndroidManifest file here:
<service android:name="com.clevertap.android.sdk.FcmTokenListenerService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> </intent-filter> </service>

FcmTokenListenerService is Overriding FirebaseInstanceIdService's onToeknRefresh() method

Null pointer issue

Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'void com.clevertap.android.sdk.CleverTapAPI.b(java.lang.String, java.util.Map)'

Hi i am getting this issue . but nowhere from my side i am sending the Null a

3.5.1: empty in-app notification opens, even if we haven't sent one

We recently upgraded from 3.3.3 to 3.5.1

Whenever we open the app, we now see this empty in-app notification
image

And the CleverTap logs for the same

2019-06-12 10:30:55.361 5130-5130/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: In-app notifications will not be shown on []
2019-06-12 10:30:55.426 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Queued event: {"evtName":"App Launched","evtData":{"Build":"1710013340","Version":"13.3.4","OS Version":"9","SDK Version":30501,"Make":"Google","Model":"Android SDK built for x86","Carrier":"Android","useIP":true,"OS":"Android","wdt":2.57,"hgt":4.27,"dpi":420,"cc":"us","wifi":true,"BluetoothVersion":"none","Radio":"4G"},"s":1560315631,"pg":2,"type":"event","ep":1560315655,"f":false,"lsl":-416127,"pai":"com.application.zomato.internal.debug","dsync":true}
2019-06-12 10:30:55.432 5130-5196/com.application.zomato.internal.debug I/CleverTap:TEST-696-K9W-445Z: FCM token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2019-06-12 10:30:55.454 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Queued event: {"data":{"action":"register","id":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","type":"fcm"},"s":1560315631,"pg":2,"type":"data","ep":1560315655,"f":false,"lsl":-416127,"dsync":false}
2019-06-12 10:30:56.472 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Send queue contains 2 items: [{"g":"__g931b6cfbc3164b728de86d53c7045f49","type":"meta","af":{"Build":"1710013340","Version":"13.3.4","OS Version":"9","SDK Version":30501,"Make":"Google","Model":"Android SDK built for x86","Carrier":"Android","useIP":true,"OS":"Android","wdt":2.57,"hgt":4.27,"dpi":420,"cc":"us","wifi":true,"BluetoothVersion":"none","Radio":"4G"},"id":"TEST-696-K9W-445Z","tk":"TEST-0c3-6c6","l_ts":1560315635,"f_ts":1559814255,"ddnd":false,"rtl":[],"arp":{"d_ts":1560230384,"dh":94793630,"hgt":4,"v":1,"wdt":2,"j_n":30061,"i_n":30061,"id":"696-K9W-445Z","j_s":"{ }"},"imp":0,"tlc":[]}, {"evtName":"App Launched","evtData":{"Build":"1710013340","Version":"13.3.4","OS Version":"9","SDK Version":30501,"Make":"Google","Model":"Android SDK built for x86","Carrier":"Android","useIP":true,"OS":"Android","wdt":2.57,"hgt":4.27,"dpi":420,"cc":"us","wifi":true,"BluetoothVersion":"none","Radio":"4G"},"s":1560315631,"pg":2,"type":"event","ep":1560315655,"f":false,"lsl":-416127,"pai":"com.application.zomato.internal.debug","dsync":true},{"data":{"action":"register","id":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx","type":"fcm"},"s":1560315631,"pg":2,"type":"data","ep":1560315655,"f":false,"lsl":-416127,"dsync":false}]
2019-06-12 10:30:56.472 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Sending queue to: https://wzrkt.com/a1?os=Android&t=30501&z=TEST-696-K9W-445Z&ts=1560315656
2019-06-12 10:30:56.712 5130-5342/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Preparing In-App for display: {"type":"interstitial-image","bg":"#ffffff","tablet":false,"close":true,"message":{"text":"Message","color":"#434761","replacements":"","og":""},"title":{"text":"Title","color":"#434761","replacements":"","og":""},"buttons":[{"actions":{"close":true,"android":"","ios":""}}],"media":{},"is_native":true,"wzrk_id":"1544421300_20190612","wzrk_pivot":"wzrk_default","ti":1544421300,"efc":1}
2019-06-12 10:30:56.715 5130-5130/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Notification ready: {"type":"interstitial-image","bg":"#ffffff","tablet":false,"close":true,"message":{"text":"Message","color":"#434761","replacements":"","og":""},"title":{"text":"Title","color":"#434761","replacements":"","og":""},"buttons":[{"actions":{"close":true,"android":"","ios":""}}],"media":{},"is_native":true,"wzrk_id":"1544421300_20190612","wzrk_pivot":"wzrk_default","ti":1544421300,"efc":1}
2019-06-12 10:30:56.716 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Queue sent successfully
2019-06-12 10:30:56.726 5130-5130/com.application.zomato.internal.debug D/CleverTap: Displaying In-App: {"type":"interstitial-image","bg":"#ffffff","tablet":false,"close":true,"message":{"text":"Message","color":"#434761","replacements":"","og":""},"title":{"text":"Title","color":"#434761","replacements":"","og":""},"buttons":[{"actions":{"close":true,"android":"","ios":""}}],"media":{},"is_native":true,"wzrk_id":"1544421300_20190612","wzrk_pivot":"wzrk_default","ti":1544421300,"efc":1}
2019-06-12 10:30:56.767 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Queued event: {"evtName":"Notification Viewed","evtData":{"wzrk_id":"1544421300_20190612","wzrk_pivot":"wzrk_default"},"s":1560315631,"pg":2,"type":"event","ep":1560315656,"f":false,"lsl":-416127,"dsync":false}
2019-06-12 10:30:57.783 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Send queue contains 1 items: [{"g":"__g931b6cfbc3164b728de86d53c7045f49","type":"meta","af":{"Build":"1710013340","Version":"13.3.4","OS Version":"9","SDK Version":30501,"Make":"Google","Model":"Android SDK built for x86","Carrier":"Android","useIP":true,"OS":"Android","wdt":2.57,"hgt":4.27,"dpi":420,"cc":"us","wifi":true,"BluetoothVersion":"none","Radio":"4G"},"id":"TEST-696-K9W-445Z","tk":"TEST-0c3-6c6","l_ts":1560315656,"f_ts":1559814255,"ddnd":false,"rtl":[],"arp":{"d_ts":1560230384,"dh":94793630,"hgt":4,"v":1,"wdt":2,"j_n":30061,"i_n":30061,"id":"696-K9W-445Z","j_s":"{ }"},"imp":1,"tlc":[["1544421300",1,1]]}, {"evtName":"Notification Viewed","evtData":{"wzrk_id":"1544421300_20190612","wzrk_pivot":"wzrk_default"},"s":1560315631,"pg":2,"type":"event","ep":1560315656,"f":false,"lsl":-416127,"dsync":false}]
2019-06-12 10:30:57.783 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Sending queue to: https://wzrkt.com/a1?os=Android&t=30501&z=TEST-696-K9W-445Z&ts=1560315657
2019-06-12 10:30:57.973 5130-5196/com.application.zomato.internal.debug D/CleverTap:TEST-696-K9W-445Z: Queue sent successfully

(Obfuscated the FCM id, rest as is)

How to active the discard event again

Hi , i want to re-enable the an event , which is discarded before some time due to some reason . but now i want to see this event data for some analysis .please tell me how can i re-enable the event . Please Help .

Release Build failed with proguard-android-optimize.txt

gradle :

shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

proguard rules:

#-dontoptimize
#-dontpreverify
-optimizationpasses 10

Build failed log:

14:59:33 Shrinking...
14:59:33 Printing usage to [/var/lib/jenkins/workspace/Android-Live/app/build/outputs/mapping/Live/release/usage.txt]...
14:59:39 Removing unused program classes and class elements...
14:59:39 Original number of program classes: 28846
14:59:39 Final number of program classes: 28703
14:59:39 Optimizing (pass 1/10)...
15:01:30
15:01:30 Unexpected error while evaluating instruction:
15:01:30 Class = [com/clevertap/android/sdk/GcmTokenListenerService]
15:01:30 Method = [onTokenRefresh()V]
15:01:30 Instruction = [6] invokestatic #27
15:01:30 Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [com/clevertap/android/sdk/GcmTokenListenerService] (with 1 known super classes) and [com/clevertap/android/sdk/FcmTokenListenerService] (with 1 known super classes))
15:01:30 Unexpected error while performing partial evaluation:
15:01:30 Class = [com/clevertap/android/sdk/GcmTokenListenerService]
15:01:30 Method = [onTokenRefresh()V]
15:01:30 Exception = [java.lang.IllegalArgumentException] (Can't find common super class of [com/clevertap/android/sdk/GcmTokenListenerService] (with 1 known super classes) and [com/clevertap/android/sdk/FcmTokenListenerService] (with 1 known super classes))
15:01:30
15:01:30 > Task :app:transformClassesAndResourcesWithProguardForLiveRelease FAILED
15:01:30
15:01:30 FAILURE: Build failed with an exception.
15:01:30
15:01:30 * What went wrong:
15:01:30 Execution failed for task ':app:transformClassesAndResourcesWithProguardForLiveRelease'.
15:01:30 > java.io.IOException: java.lang.RuntimeException: java.lang.IllegalArgumentException: Can't find common super class of [com/clevertap/android/sdk/GcmTokenListenerService] (with 1 known super classes) and [com/clevertap/android/sdk/FcmTokenListenerService] (with 1 known super classes)
15:01:30
15:01:30 * Try:
15:01:30 Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

App Inbox not working in Android Fragment

Hello,

I'm trying to implement App Inbox from CleverTap in our Android app but it's not working.

I created the campaign through the CleverTap Dashboard with some tags/tabs, however inside the app when clicking on my custom view, the app inbox shows but no info is displayed. It only says "No Message(s) to show".

This is the code:

class MyFragment: CTInboxListener {
private var cleverTapDefaultInstance: CleverTapAPI? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
cleverTapDefaultInstance = CleverTapAPI.getDefaultInstance(context)
cleverTapDefaultInstance?.ctNotificationInboxListener = this
cleverTapDefaultInstance?.initializeInbox()
}

/**
* Shows the CleverTap App Inbox activity with a custom predefined style
*/
private fun displayCleverTapWithCustomStyle() {
val context = context
if (context != null) {
val tabs: ArrayList = ArrayList()
tabs.add(ApplicationConstants.WHATS_NEW_TAB)
tabs.add(ApplicationConstants.PROMOTIONS_TAB)
val styleConfig = CTInboxStyleConfig()
styleConfig.tabs = tabs
// We perform and operation to remove any transparency in the color.
styleConfig.tabBackgroundColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.topaz) and 0x00ffffff)
styleConfig.selectedTabIndicatorColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.white) and 0x00ffffff)
styleConfig.selectedTabColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.colorPrimary) and 0x00ffffff)
styleConfig.unselectedTabColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.black) and 0x00ffffff)
styleConfig.backButtonColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.white) and 0x00ffffff)
styleConfig.navBarTitleColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.white) and 0x00ffffff)
styleConfig.navBarTitle = getString(R.string.week_news)
styleConfig.navBarColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.topaz) and 0x00ffffff)
styleConfig.inboxBackgroundColor = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.white) and 0x00ffffff)
cleverTapDefaultInstance?.showAppInbox(styleConfig)
}
}

override fun inboxDidInitialize() {
Log.d("CLEVER TAP", "inbox did initialize")
}

override fun inboxMessagesDidUpdate() {
    Log.d("CLEVER TAP", "inbox did update")
    handleNotificationCounter()
}

}

And I also saw this during debug:
Please upgrade com.android.support:design library to v28.0.0 to enable Tabs for App Inbox, dropping Tabs
2019-12-06 16:17:22.896 27040-27040/com.muy.app.staging D/CleverTap: Displaying Notification Inbox

So using tabs would not work if I'm using AndroidX? My clever tap sdk version is 3.6.1
Any help would be appreciated.

java.lang.AbstractMethodError

Hi,

I try to use videos (mp4) in In-app messages and App inbox but when I try to send a test In-app message or open the built-in App inbox screen with cleverTapDefaultInstance.showAppInbox(styleConfig) I get the following error:

E/AndroidRuntime: FATAL EXCEPTION: ExoPlayerImplInternal:Handler
    java.lang.AbstractMethodError: abstract method "void com.google.android.exoplayer2.source.BaseMediaSource.prepareSourceInternal(com.google.android.exoplayer2.upstream.TransferListener)"
        at com.google.android.exoplayer2.source.BaseMediaSource.prepareSource(BaseMediaSource.java:140)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.prepareInternal(ExoPlayerImplInternal.java:444)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:311)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:148)
        at android.os.HandlerThread.run(HandlerThread.java:61)

I use the following versions:

implementation 'com.clevertap.android:clevertap-android-sdk:3.5.1'
implementation 'com.google.android.exoplayer:exoplayer-core:2.10.1'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.10.1'

Have you ever faced this issue?

NoSuchMethodError in CTSimpleMessageViewHolder.configureWithMessage()

Hey guys,

I get the following error when I try to open appInbox:

java.lang.NoSuchMethodError: No virtual method placeholder(I)Lcom/bumptech/glide/request/RequestOptions; in class Lcom/bumptech/glide/request/RequestOptions; or its super classes (declaration of 'com.bumptech.glide.request.RequestOptions'
        at com.clevertap.android.sdk.CTSimpleMessageViewHolder.configureWithMessage(CTSimpleMessageViewHolder.java:218)
        at com.clevertap.android.sdk.CTInboxMessageAdapter.onBindViewHolder(CTInboxMessageAdapter.java:49)
        at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6890)
        at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6932)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5852)
        at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6119)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5958)
        at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5954)
        at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2226)
        at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
        at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
        at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
        at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3990)
        at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3402)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1465)
        at android.widget.LinearLayout.measureVertical(LinearLayout.java:748)
        at android.widget.LinearLayout.onMeasure(LinearLayout.java:630)
        at android.view.View.measure(View.java:18794)
        at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951)
        at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
        at com.android.internal.policy.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2643)
    	at android.view

It happens when I try to send a message with a photo.

Currently, I just try to implement app-inbox, so I use a simple configuration like this:

        ArrayList<String> tabs = new ArrayList<>();
        tabs.add("Promotions");
        tabs.add("Offers");

        CTInboxStyleConfig styleConfig = new CTInboxStyleConfig();
        styleConfig.setTabs(tabs);
        styleConfig.setTabBackgroundColor("#ffffff");
        styleConfig.setSelectedTabIndicatorColor("#0000FF");
        styleConfig.setSelectedTabColor("#10ddba");
        styleConfig.setUnselectedTabColor("#ffffff");
        styleConfig.setBackButtonColor("#1a1a1a");
        styleConfig.setNavBarTitleColor("#1a1a1a");
        styleConfig.setNavBarTitle("MY INBOX");
        styleConfig.setNavBarColor("#ffffff");
        styleConfig.setInboxBackgroundColor("#ffffff");

        cleverTapDefaultInstance.showAppInbox(styleConfig);

Also here are my gradle dependencies:

implementation 'androidx.appcompat:appcompat:1.1.0-alpha01'
implementation 'com.google.android.material:material:1.1.0-alpha02'
implementation 'com.github.bumptech.glide:glide:4.9.0'

Do you have any idea what's wrong?

Issue with video push notifications.

Hi,

I was using the latest clevertap SDK in my android project.
implementation 'com.clevertap.android:clevertap-android-sdk:3.3.1'

My App is getting crashed when I send the video push notifications.
Exception: Error inflating class com.google.android.exoplayer2.ui.PlayerView

Attaching the exception logcat:

Caused by android.view.InflateException: Binary XML file line #59: Binary XML file line #59: Error inflating class com.google.android.exoplayer2.ui.PlayerView
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.clevertap.android.sdk.CTInAppNativeInterstitialFragment.onCreateView(CTInAppNativeInterstitialFragment.java:4)
at android.app.Fragment.performCreateView(Fragment.java:2220)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:973)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1148)
at android.app.BackStackRecord.run(BackStackRecord.java:793)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1535)
at android.app.FragmentController.execPendingActions(FragmentController.java:325)
at android.app.Activity.performStart(Activity.java:6339)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2397)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2494)
at android.app.ActivityThread.access$900(ActivityThread.java:153)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1347)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Request: Priority field at push data package

Please add ability to set priority flag to push notification. it allows more agile control how notification will appears on Android. Also there is should exists corresponding code to parse that field and add priority to Notification.

WBR, Vitaliy

LibraryLoader.java

Caused by java.lang.UnsatisfiedLinkError: dlopen failed: "/system/app/Chrome/Chrome.apk!/lib/armeabi-v7a/libmonochrome.so" is 32-bit instead of 64-bit
       at java.lang.Runtime.loadLibrary0(Runtime.java:989)
       at java.lang.System.loadLibrary(System.java:1562)
       at org.chromium.base.library_loader.LibraryLoader.loadAlreadyLocked(LibraryLoader.java:89)
       at org.chromium.base.library_loader.LibraryLoader.loadNowOverrideApplicationContext(LibraryLoader.java:35)
       at com.android.webview.chromium.WebViewChromiumFactoryProvider.I(WebViewChromiumFactoryProvider.java:61)
       at com.android.webview.chromium.WebViewChromiumFactoryProvider.(WebViewChromiumFactoryProvider.java:31)
       at java.lang.reflect.Constructor.newInstance0(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
       at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:198)
       at android.webkit.WebView.getFactory(WebView.java:2347)
       at android.webkit.WebView.ensureProviderCreated(WebView.java:2342)
       at android.webkit.WebView.setOverScrollMode(WebView.java:2401)
       at android.view.View.(View.java:4029)
       at android.view.View.(View.java:4154)
       at android.view.ViewGroup.(ViewGroup.java:579)
       at android.widget.AbsoluteLayout.(AbsoluteLayout.java:55)
       at android.webkit.WebView.(WebView.java:627)
       at android.webkit.WebView.(WebView.java:572)
       at android.webkit.WebView.(WebView.java:555)
       at com.gojek.life.component.widget.LifeWebView.(LifeWebView.kt:11)
       at com.gojek.life.component.widget.LifeWebView.(LifeWebView.kt:10)
       at com.gojek.life.component.widget.LifeWebView.(LifeWebView.kt)
       at java.lang.reflect.Constructor.newInstance0(Constructor.java)
       at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
       at android.view.LayoutInflater.createView(LayoutInflater.java:652)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:812)
       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:752)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:883)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
       at android.view.LayoutInflater.rInflate(LayoutInflater.java:886)
       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:846)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:522)
       at android.view.LayoutInflater.inflate(LayoutInflater.java:430)
       at com.gojek.golife.presentation.feature.base.fragment.LifeBaseViewFragment.onCreateView(LifeBaseViewFragment.kt:10)
       at android.support.v4.app.Fragment.performCreateView(Fragment.java:2261)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1419)
       at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1750)
       at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1819)
       at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:797)
       at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2590)
       at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2377)
       at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2332)
       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2239)
       at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
       at android.os.Handler.handleCallback(Handler.java:754)
       at android.os.Handler.dispatchMessage(Handler.java:95)
       at android.os.Looper.loop(Looper.java:163)
       at android.app.ActivityThread.main(ActivityThread.java:6228)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)

got this issue from fabric.

happens on XIAOMI REDMI 4X and REDMI NOTE 4.
usage SDK Version : 3.1.7

Large PNGs in SDK

While analyzing the Increased size of APK I found these 3 Pngs which are on top by size.

  • ct_audio.png
  • ct_image.png
  • ct_video_1.png

I would like to know what is the purpose of these images they are just icons of approximately 1080x608. Why are they not in WebP or vector drawable. If they are used for notification icons then why are they so big. Using SDK v3.6.1. PFA

Screenshot 2019-11-26 at 3 25 00 PM

Crash On Background

Device Info:
Name: ONEPLUS A6000
Brand: OnePlus
Android API: 28

Clevertap Version: 3.1.8

StackTrace:
com.clevertap.android.sdk.InAppFCManager
at com.clevertap.android.sdk.InAppFCManager.destroySession(Unknown Source:0)
at com.clevertap.android.sdk.SessionManager.destroySession(SessionManager.java:84)
at com.clevertap.android.sdk.CleverTapAPI.forceDestroySession(CleverTapAPI.java:862)
at com.clevertap.android.sdk.CleverTapAPI.checkTimeoutSession(CleverTapAPI.java:855)
at com.clevertap.android.sdk.CleverTapAPI.access$700(CleverTapAPI.java:48)
at com.clevertap.android.sdk.CleverTapAPI$5.run(CleverTapAPI.java:673)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6863)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

Caused By: at com.clevertap.android.sdk.InAppFCManager.attachToHeader(Unknown Source:0)
at com.clevertap.android.sdk.CommsManager.insertHeader(CommsManager.java:361)
at com.clevertap.android.sdk.CommsManager.sendQueue(CommsManager.java:187)
at com.clevertap.android.sdk.CommsManager.flushDBQueue(CommsManager.java:103)
at com.clevertap.android.sdk.CommsManager.flushQueueSync(CommsManager.java:77)
at com.clevertap.android.sdk.CommsManager$1.run(CommsManager.java:56)
at com.clevertap.android.sdk.CleverTapAPI$1.run(CleverTapAPI.java:244)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:458)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)

App background Crash on Samsung devices with OS version 5, CleverTap Segment SDK

Device Info
Device: Samsung
Android OS : 5
Type background
Clevertap SDK : com.clevertap.android:clevertap-android-sdk:3.6.1
Segment integration : com.clevertap.android:clevertap-segment-android:+

Stacktrace :
Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=0; index=42375
at java.lang.reflect.ArtField.getNameNative(ArtField.java)
at java.lang.reflect.ArtField.getName + 91(ArtField.java:91)
at java.lang.reflect.Field.getName + 122(Field.java:122)
at com.clevertap.android.sdk.ab_testing.uieditor.ResourceIds.readClassIds + 85(ResourceIds.java:85)
at com.clevertap.android.sdk.ab_testing.uieditor.ResourceIds.read + 34(ResourceIds.java:34)
at com.clevertap.android.sdk.ab_testing.uieditor.ResourceIds. + 21(ResourceIds.java:21)
at com.clevertap.android.sdk.ab_testing.uieditor.UIEditor. + 165(UIEditor.java:165)
at com.clevertap.android.sdk.ab_testing.CTABTestController. + 197(CTABTestController.java:197)
at com.clevertap.android.sdk.CleverTapAPI.initABTesting + 7212(CleverTapAPI.java:7212)
at com.clevertap.android.sdk.CleverTapAPI. + 155(CleverTapAPI.java:155)
at com.clevertap.android.sdk.CleverTapAPI.instanceWithConfig + 509(CleverTapAPI.java:509)
at com.clevertap.android.sdk.CleverTapAPI.getDefaultInstance + 460(CleverTapAPI.java:460)
at com.clevertap.android.sdk.CleverTapAPI.getDefaultInstance + 475(CleverTapAPI.java:475)
at com.segment.analytics.android.integrations.clevertap.CleverTapIntegration$1.create + 77(CleverTapIntegration.java:77)
at com.segment.analytics.Analytics.performInitializeIntegrations + 1405(Analytics.java:1405)
at com.segment.analytics.Analytics$2$1.run + 277(Analytics.java:277)
at android.os.Handler.handleCallback + 739(Handler.java:739)
at android.os.Handler.dispatchMessage + 95(Handler.java:95)
at android.os.Looper.loop + 145(Looper.java:145)
at android.app.ActivityThread.main + 6946(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke + 372(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1404(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main + 1199(ZygoteInit.java:1199)

Getting this kind of exception? Please help asap

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{package name/com.clevertap.android.sdk.InAppNotificationActivity}: android.util.AndroidRuntimeException: java.lang.RuntimeException: Invalid reflection
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3190)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300)
at android.app.ActivityThread.access$1000(ActivityThread.java:211)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:116)
Caused by android.util.AndroidRuntimeException: java.lang.RuntimeException: Invalid reflection
at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:130)
at android.webkit.WebView.getFactory(WebView.java:2207)
at android.webkit.WebView.ensureProviderCreated(WebView.java:2202)
at android.webkit.WebView.setOverScrollMode(WebView.java:2261)
at android.view.View.(View.java)
at android.view.View.(View.java)
at android.view.ViewGroup.(ViewGroup.java)
at android.widget.AbsoluteLayout.(AbsoluteLayout.java)
at android.webkit.WebView.(WebView.java)
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at com.clevertap.android.sdk.InAppNotificationActivity$InAppWebView.(InAppNotificationActivity.java)
at com.clevertap.android.sdk.InAppNotificationActivity.onCreate(InAppNotificationActivity.java:93)
at android.app.Activity.performCreate(Activity.java:6575)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3143)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300)
at android.app.ActivityThread.access$1000(ActivityThread.java:211)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:116)
Caused by java.lang.RuntimeException: Invalid reflection
at com.android.webview.chromium.WebViewDelegateFactory$Api21CompatibilityDelegate.(WebViewDelegateFactory.java)
at com.android.webview.chromium.WebViewDelegateFactory.createApi21CompatibilityDelegate(WebViewDelegateFactory.java:97)
at com.android.webview.chromium.WebViewChromiumFactoryProvider.(WebViewChromiumFactoryProvider.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java)
at java.lang.Class.newInstance(Class.java:1690)
at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:124)
at android.webkit.WebView.getFactory(WebView.java:2207)
at android.webkit.WebView.ensureProviderCreated(WebView.java:2202)
at android.webkit.WebView.setOverScrollMode(WebView.java:2261)
at android.view.View.(View.java)
at android.view.View.(View.java)
at android.view.ViewGroup.(ViewGroup.java)
at android.widget.AbsoluteLayout.(AbsoluteLayout.java)
at android.webkit.WebView.(WebView.java)
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at com.clevertap.android.sdk.InAppNotificationActivity$InAppWebView.(InAppNotificationActivity.java)
at com.clevertap.android.sdk.InAppNotificationActivity.onCreate(InAppNotificationActivity.java:93)
at android.app.Activity.performCreate(Activity.java:6575)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3143)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300)
at android.app.ActivityThread.access$1000(ActivityThread.java:211)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:116)
Caused by java.lang.NoSuchMethodException: callDrawGLFunction [long]
at java.lang.Class.getMethod(Class.java:671)
at com.android.webview.chromium.WebViewDelegateFactory$Api21CompatibilityDelegate.(WebViewDelegateFactory.java)
at com.android.webview.chromium.WebViewDelegateFactory.createApi21CompatibilityDelegate(WebViewDelegateFactory.java:97)
at com.android.webview.chromium.WebViewChromiumFactoryProvider.(WebViewChromiumFactoryProvider.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java)
at java.lang.Class.newInstance(Class.java:1690)
at android.webkit.WebViewFactory.getProvider(WebViewFactory.java:124)
at android.webkit.WebView.getFactory(WebView.java:2207)
at android.webkit.WebView.ensureProviderCreated(WebView.java:2202)
at android.webkit.WebView.setOverScrollMode(WebView.java:2261)
at android.view.View.(View.java)
at android.view.View.(View.java)
at android.view.ViewGroup.(ViewGroup.java)
at android.widget.AbsoluteLayout.(AbsoluteLayout.java)
at android.webkit.WebView.(WebView.java)
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at android.webkit.WebView.(WebView.java)
at de.robv.android.xposed.XposedBridge.invokeOriginalMethodNative(XposedBridge.java)
at de.robv.android.xposed.XposedBridge.handleHookedMethod(XposedBridge.java:687)
at android.webkit.WebView.()
at com.clevertap.android.sdk.InAppNotificationActivity$InAppWebView.(InAppNotificationActivity.java)
at com.clevertap.android.sdk.InAppNotificationActivity.onCreate(InAppNotificationActivity.java:93)
at android.app.Activity.performCreate(Activity.java:6575)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1134)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3143)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3300)
at android.app.ActivityThread.access$1000(ActivityThread.java:211)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1705)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:116)

Crash using new installreferrer api

We're getting this crash when using CleverTap 3.6.3 which uses the new install referrer api.

Note that we are explicitly using installreferrer version 1.0, not 1.1, because Google didn't properly release version 1.1:

https://issuetracker.google.com/issues/145557612

Google released a 1.1 build which had a crash (in the above issue), then they re-released a new build with the same version 1.1 with a fix.

We cannot use this version 1.1 because the fact that there have been two different builds with different code, but the same version 1.1 means we can't have repeatable builds. We're waiting for a fix in a new version number of install referrer.

java.lang.NoSuchMethodError: No virtual method getGooglePlayInstantParam()Z in class Lcom/android/installreferrer/api/ReferrerDetails; or its super classes (declaration of 'com.android.installreferrer.api.ReferrerDetails' appears in /data/app/lifeisbetteron.com.test-E3ShMD11ilZ7-WvFFFkUig==/base.apk)
       at com.clevertap.android.sdk.CleverTapAPI$43.onInstallReferrerSetupFinished(CleverTapAPI.java:6379)
       at com.android.installreferrer.api.InstallReferrerClientImpl$InstallReferrerServiceConnection.onServiceConnected(InstallReferrerClientImpl.java:222)
       at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1948)
       at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1980)
       at android.os.Handler.handleCallback(Handler.java:883)
       at android.os.Handler.dispatchMessage(Handler.java:100)
       at android.os.Looper.loop(Looper.java:214)
       at android.app.ActivityThread.main(ActivityThread.java:7356)
       at java.lang.reflect.Method.invoke(Native Method)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)

not found attribute 'appComponentFactory' on sdk 26

Hello can you help me
the problem is

No resource identifier found for attribute 'appComponentFactory' in package 'android'

my sdk using 26

compileSdkVersion 26
buildToolsVersion "26.0.2"
targetSdkVersion 28

compile 'com.clevertap.android:clevertap-android-sdk:3.6.3'
compile 'com.android.installreferrer:installreferrer:1.1.1'

how to fixed this? if not update the SDK
thank you

Crash in CTInAppBaseFragment - CleverTap SDK 3.5.1

Got one crash in one of the latest production version of the WAY app in Android.
SDK Version: 3.5.1

Crash Details:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.app.Activity.getBaseContext()' on a null object reference at com.clevertap.android.sdk.CTInAppBaseFragment.b(CTInAppBaseFragment.java:13) at com.clevertap.android.sdk.CTInAppBasePartialNativeFragment$GestureListener$1.onAnimationEnd(CTInAppBasePartialNativeFragment.java:5) at android.view.animation.Animation$3.run(Animation.java:387) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:6986) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:494) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1445)

Though crash seems very rare,
by looking at the code in CTInAppBaseFragment, I would suggest adding a null check on getActivity() wherever used.

Null Pointer Exception on DeviceInfo.java on sdk version 3.5.1

The Logs for the crash is as:

Caused by java.lang.NullPointerExceptionAttempt to invoke virtual method 'void c.g.a.a.ac.e(java.lang.String, java.lang.String)' on a null object reference Raw Text
--
  | com.clevertap.android.sdk.DeviceInfo.initDeviceID + 98 (DeviceInfo.java:98)
  | com.clevertap.android.sdk.DeviceInfo.<init> + 54 (DeviceInfo.java:54)
  | com.clevertap.android.sdk.CleverTapAPI.<init> + 241 (CleverTapAPI.java:241)
  | com.clevertap.android.sdk.CleverTapAPI.instanceWithConfig + 565 (CleverTapAPI.java:565)
  | com.clevertap.android.sdk.CleverTapAPI.instanceWithConfig + 542 (CleverTapAPI.java:542)
  | com.clevertap.android.sdk.CTInAppBasePartialFragment.generateListener + 25 (CTInAppBasePartialFragment.java:25)
  | com.clevertap.android.sdk.CTInAppBaseFragment.onAttach + 63 (CTInAppBaseFragment.java:63)
  | android.app.Fragment.onAttach + 1484 (Fragment.java:1484)
  | androidx.appcompat.app.AppCompatActivity.onCreate + 85 (AppCompatActivity.java:85)
  | com.railyatri.in.mobile.BaseParentActivity.onCreate + 77 (BaseParentActivity.java:77)

StrictMode - Disk Read Violation

There are a lot of StrictMode violations (mainly DB read/write on main thread) in the Clevertap SDK. Here's one example from the init call itself.

StrictMode policy violation; ~duration=879 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65599 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1438)
at android.app.SharedPreferencesImpl.awaitLoadedLocked(SharedPreferencesImpl.java:233)
at android.app.SharedPreferencesImpl.getString(SharedPreferencesImpl.java:254)
at com.clevertap.android.sdk.StorageHelper.getString(StorageHelper.java:31)
at com.clevertap.android.sdk.LocalDataStore.getStringFromPrefs(LocalDataStore.java:776)
at com.clevertap.android.sdk.LocalDataStore.getEventDetail(LocalDataStore.java:711)
at com.clevertap.android.sdk.CleverTapAPI.setLastVisitTime(CleverTapAPI.java:3598)
at com.clevertap.android.sdk.CleverTapAPI.(CleverTapAPI.java:147)
at com.clevertap.android.sdk.CleverTapAPI.instanceWithConfig(CleverTapAPI.java:509)
at com.clevertap.android.sdk.CleverTapAPI.getDefaultInstance(CleverTapAPI.java:460)
at com.clevertap.android.sdk.CleverTapAPI.getDefaultInstance(CleverTapAPI.java:475)

java.lang.VerifyError

After updating SDK to version 3.6.4 i get this error while run time @
cleverTapAPI = CleverTapAPI.getDefaultInstance(getApplicationContext());

2020-03-02 12:02:44.942 28921-28921/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: co.mchannel.peachmode.alpha, PID: 28921
java.lang.VerifyError: Verifier rejected class com.clevertap.android.sdk.InAppFCManager: int[] com.clevertap.android.sdk.InAppFCManager.getInAppCountsFromPersistentStore(java.lang.String) failed to verify: int[] com.clevertap.android.sdk.InAppFCManager.getInAppCountsFromPersistentStore(java.lang.String): [0x3B] register v2 has type Conflict but expected Integer (declaration of 'com.clevertap.android.sdk.InAppFCManager' appears in /data/app/co.mchannel.peachmode.alpha-1/base.apk:classes4.dex)
at com.clevertap.android.sdk.CleverTapAPI.(CleverTapAPI.java:141)
at com.clevertap.android.sdk.CleverTapAPI.instanceWithConfig(CleverTapAPI.java:528)
at com.clevertap.android.sdk.CleverTapAPI.getDefaultInstance(CleverTapAPI.java:479)
at com.clevertap.android.sdk.CleverTapAPI.getDefaultInstance(CleverTapAPI.java:494)
at co.mchannel.peachmode.PeachmodeApplication.onCreate(PeachmodeApplication.java:146)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1032)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5876)
at android.app.ActivityThread.-wrap3(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1699)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

CLEVERTAP_NOTIFICATION_ICON not working

My app dont show the notification small icon. I even tried with the sample icon in your documentation and it stills does not work. I'm using a custom FirebaseMessagingServer but calling CleverTapAPI.createNotification to manage notifications from cleverTap. The service on my Manifest:

    <service
        android:name=".external.service.MyFirebaseMessagingService"
        android:stopWithTask="false">
        <intent-filter>
            <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>

        <meta-data
            android:name="CLEVERTAP_NOTIFICATION_ICON"
            android:value="icon_turbi_white_notification"/>

    </service>

Am i misssing somenthing?

CleverTap Display Units reliability

Is there a more reliable way on getting display units from CleverTap? When you push an Event that corresponds to a Native Display, there are times that the listener set in setDisplayUnitListener is not triggered at all.

PendingIntent for Action Button Click is failing because the device has another app with the same intent filter

My Android Manifest

<service
    android:name=".notification.NotificationCTAService"
    android:exported="false">
    <intent-filter>
        <action android:name="com.clevertap.PUSH_EVENT" />
    </intent-filter>
</service>

When an action button of a clevertap notification in my app is clicked. It does nothing.

Error Log from the System:

W/ActivityManager: Permission Denial: Accessing service ComponentInfo{com.sonyliv/com.clevertap.android.sdk.CTNotificationIntentService} from pid=-1, uid=10154 that is not exported from uid 10149
1

Since all the apps which use clevertap have the same intent filter registered for com.clevertap.PUSH_EVENT, and their services are not exported. The Action Button Click does nothing.

If the service of another app is exported, then the service of the other app is triggered etc.

NPE : inboxMessages is null inside CTInboxListViewFragment

Hello Team,
We are getting this crashes multiple times, can you help regarding this?

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference at com.clevertap.android.sdk.CTInboxListViewFragment.onCreateView + 115(CTInboxListViewFragment.java:115) at android.support.v4.app.Fragment.performCreateView + 2439(Fragment.java:2439) at android.support.v4.app.FragmentManagerImpl.moveToState + 1460(FragmentManagerImpl.java:1460) at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState + 1784(FragmentManagerImpl.java:1784) at android.support.v4.app.FragmentManagerImpl.moveToState + 1852(FragmentManagerImpl.java:1852) at android.support.v4.app.FragmentManagerImpl.dispatchStateChange + 3269(FragmentManagerImpl.java:3269) at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated + 3229(FragmentManagerImpl.java:3229) at android.support.v4.app.FragmentController.dispatchActivityCreated + 201(FragmentController.java:201) at android.support.v4.app.FragmentActivity.onStart + 620(FragmentActivity.java:620) at android.app.Instrumentation.callActivityOnStart + 1433(Instrumentation.java:1433) at android.app.Activity.performStart + 7825(Activity.java:7825) at android.app.ActivityThread.handleStartActivity + 3295(ActivityThread.java:3295) at android.app.servertransaction.TransactionExecutor.performLifecycleSequence + 221(TransactionExecutor.java:221) at android.app.servertransaction.TransactionExecutor.cycleToPath + 201(TransactionExecutor.java:201) at android.app.servertransaction.TransactionExecutor.executeLifecycleState + 173(TransactionExecutor.java:173) at android.app.servertransaction.TransactionExecutor.execute + 97(TransactionExecutor.java:97) at android.app.ActivityThread$H.handleMessage + 2017(ActivityThread.java:2017) at android.os.Handler.dispatchMessage + 107(Handler.java:107) at android.os.Looper.loop + 214(Looper.java:214) at android.app.ActivityThread.main + 7397(ActivityThread.java:7397) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run + 492(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main + 935(ZygoteInit.java:935)

InBox " Notification " Click Listener

Hello,
I was trying to do some event on " InBox" Like Click Listener on one Promotion Notification.
but it's not there.
is there any solution for this?

App crashing due to java.net.SocketTimeoutException

E/CleverTap: An exception occurred while trying to send the queue
                                                          java.net.SocketTimeoutException: timeout
                                                              at com.android.okhttp.okio.Okio$3.newTimeoutException(Okio.java:207)
                                                              at com.android.okhttp.okio.AsyncTimeout.exit(AsyncTimeout.java:250)
                                                              at com.android.okhttp.okio.AsyncTimeout$2.read(AsyncTimeout.java:217)
                                                              at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:306)
                                                              at com.android.okhttp.okio.RealBufferedSource.indexOf(RealBufferedSource.java:300)
                                                              at com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:196)
                                                              at com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:191)
                                                              at com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80)
                                                              at com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:919)
                                                              at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:803)
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:460)
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:405)
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:518)
                                                              at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
                                                              at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25)
                                                              at com.clevertap.android.sdk.CommsManager.sendQueue(CommsManager.java:190)
                                                              at com.clevertap.android.sdk.CommsManager.flushDBQueue(CommsManager.java:104)
                                                              at com.clevertap.android.sdk.CommsManager.flushQueueSync(CommsManager.java:78)
                                                              at com.clevertap.android.sdk.CommsManager$1.run(CommsManager.java:57)
                                                              at com.clevertap.android.sdk.CleverTapAPI$1.run(CleverTapAPI.java:208)
                                                              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                              at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                              at java.lang.Thread.run(Thread.java:818)
01-02 16:20:12.086 508-750/in.startv.hotstar E/Analytics: Error while uploading payloads
                                                          java.net.ConnectException: failed to connect to api.segment.io/34.214.37.134 (port 443) after 15000ms: isConnected failed: EHOSTUNREACH (No route to host)
                                                              at libcore.io.IoBridge.isConnected(IoBridge.java:257)
                                                              at libcore.io.IoBridge.connectErrno(IoBridge.java:193)
                                                              at libcore.io.IoBridge.connect(IoBridge.java:127)
                                                              at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:188)
                                                              at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:457)
                                                              at java.net.Socket.connect(Socket.java:927)
                                                              at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117)
                                                              at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160)
                                                              at com.android.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:79)
                                                              at com.android.okhttp.Connection.connect(Connection.java:167)
                                                              at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:209)
                                                              at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
                                                              at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:353)
                                                              at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:342)
                                                              at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:260)
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:454)
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245)
                                                              at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218)
                                                              at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:25)
                                                              at com.segment.analytics.Client.createPostConnection(Client.java:50)
                                                              at com.segment.analytics.Client.upload(Client.java:93)
                                                              at com.segment.analytics.SegmentIntegration.performFlush(SegmentIntegration.java:341)
                                                              at com.segment.analytics.SegmentIntegration$3.run(SegmentIntegration.java:319)
                                                              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
                                                              at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                              at java.lang.Thread.run(Thread.java:818)
                                                              at com.segment.analytics.internal.Utils$AnalyticsThread.run(Utils.java:544)
                                                           Caused by: android.system.ErrnoException: isConnected failed: EHOSTUNREACH (No route to host)
                                                              at libcore.io.IoBridge.isConnected(IoBridge.java:246)
                                                              at libcore.io.IoBridge.connectErrno(IoBridge.java:193) 
                                                              at libcore.io.IoBridge.connect(IoBridge.java:127) 
                                                              at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:188) 
                                                              at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:457) 
                                                              at java.net.Socket.connect(Socket.java:927) 
                                                              at com.android.okhttp.internal.Platform.connectSocket(Platform.java:117) 
                                                              at com.android.okhttp.internal.http.SocketConnector.connectRawSocket(SocketConnector.java:160) 
                                                              at com.android.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:79) 
                                                              at com.android.okhttp.Connection.connect(Connection.java:167) 
                                                              at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:209) 
                                                              at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128) 
                                                              at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:353) 
                                                              at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:342) 
                                                              at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:260) 
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:454) 
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) 
                                                              at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:245) 
                                                              at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getOutputStream(DelegatingHttpsURLConnection.java:218) 
                                                              at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:25) 
                                                              at com.segment.analytics.Client.createPostConnection(Client.java:50) 
                                                              at com.segment.analytics.Client.upload(Client.java:93) 
                                                              at com.segment.analytics.SegmentIntegration.performFlush(SegmentIntegration.java:341) 
                                                              at com.segment.analytics.SegmentIntegration$3.run(SegmentIntegration.java:319) 
                                                              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423) 
                                                              at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                                                              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                              at java.lang.Thread.run(Thread.java:818) 
                                                              at com.segment.analytics.internal.Utils$AnalyticsThread.run(Utils.java:544) 

What is the license of this SDK?

When I search the clevertap-android-sdk at maven repository, I noticed that it comes with the sources. What license is used in this sources? Is it permissible to edit the sources?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.