Giter VIP home page Giter VIP logo

crisp-sdk-android's Introduction

Crisp

Crisp is a multichannel customer support software that centralizes more than 10 different channels into one place. Among those, chat support is a prominent channel companies choose to offer real-time customer support.

With Crisp native mobile chat SDK for Android, companies can add a seamless support chat experience to their native mobile app.

The chat widget also comes with help articles, AI chatbot builder and many other features built to help companies improve their customer support experience.

Crisp Chat SDK for Android

Crisp screenshot

Maven Central Twitter

How does Crisp Chat SDK for Android work?

Crisp Chat works for both logged in and logged out users as well as users juggling between multiple devices. It’s worth reading the detailed instructions about session continuity.

You can open the chat widget from a button in your mobile app, programmatically when someone does a custom action, or from a persistent button that is available in your mobile app.

When your customers open Crisp Widget, they are presented with a chat widget or a help widget.

From there, your customer can search for help articles or start a conversation. A conversation goes to your inbox inside your Crisp Workspace, and replies in both directions happen in real time.

What are Crisp Chat SDK features?

Our chat sdk for android comes with a handful set of features that prevents your mobile customers from getting an inconsistent experience between web and mobile.

Chat color customization that fits with your brand identity

Consistency is vital when creating a powerful brand experience, especially when you switch from one device to another. Using Crisp Chat SDK for Android, you make sure the brand identity that is set is consistent all over your platforms.

AI Chatbot that fits any brand experience

Crisp Chat SDK doesn’t only come with a live chat software, it embeds an AI chatbot too. From the web version, companies can craft advanced scenarios that will be triggered upon custom scenarios.

To make sure your chatbot is powerful enough, you can enrich AI models with data sources you own: websites, technical docs, help articles, and much more…

Help article that lands at the right time

Using Crisp widget, you can display help articles programmatically, within your mobile app. That makes it very easy for your users to get contextualized support at the moment they need it the most.

Whether it is through a click on a button, following a custom event or after displaying a specific page, you can make sure your customer is always able to access the right knowledge.

Engage your customers through a modern chat experience

Willing to offer a mobile customer support experience that is delightful? Crisp chat sdk for mobile apps is the software development kit you need for your android app.

Below are some examples of native message types you can leverage to create an exceptional customer support experience through your mobile app.

Get to know who you’re chatting with, automatically

Using Crisp chat SDK, you can send customers’ data straight to Crisp. It makes your customer support team much more knowledgeable about who they are facing and how they should engage the conversation.

Trigger marketing automation campaigns from an action in your mobile app

Crisp SDK for mobile app is not just a chat sdk, it’s a whole customer communication sdk that helps you build an amazing customers’ experience.

Using events, you can push key actions made by your users from the mobile app and trigger emails or chat campaigns to follow-up and engage at key steps of their life cycles.

And a lot more!

Willing to see what Crisp web chat widget can offer to help to improve customer support? Click here to access a detailed and comprehensive list of features for Crisp chat software.

How to add a Chat SDK to a mobile app?

1. Get your Website ID

Go to your Crisp Dashboard, and copy your Website ID:

Copy your Website ID

2. Add Crisp dependency

Add the Crisp SDK in your dependencies:

dependencies {
    implementation 'im.crisp:crisp-sdk:2.0.0beta1'
}

3. Setup multidex

Configure your app for multidex:

android {
    defaultConfig {
        multiDexEnabled true
    }
}
dependencies {
    // If you're using AndroidX
    implementation 'androidx.multidex:multidex:2.0.1'
    // If you're not using AndroidX
    implementation 'com.android.support:multidex:1.0.3'
}

4. Initiate

Initialize the library:

// Replace it with your WEBSITE_ID
// Retrieve it using https://app.crisp.chat/website/[YOUR_WEBSITE_ID]/
Crisp.configure(getApplicationContext(), "7598bf86-9ebb-46bc-8c61-be8929bbf93d");

5. Include Crisp in your activity

You can for instance start Crisp after a click on a button:

Intent crispIntent = new Intent(this, ChatActivity.class);
startActivity(crispIntent);

👉 For more details, please go to the Crisp Developer Hub to access the documentation on the Android SDK or go to our Wiki to see Available APIs.

Examples of companies using Crisp Chat Android SDK

Credits

Crisp Android SDK is owned and maintained by Crisp IM SAS.
You can chat with us on crisp or follow us on Twitter at Crisp_im.

License

Crisp Android SDK is under Copyright license, see LICENSE for more details.

crisp-sdk-android's People

Contributors

baptistejamin avatar doc1faux avatar eliottvincent avatar valeriansaliou 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

Watchers

 avatar  avatar  avatar  avatar

crisp-sdk-android's Issues

SessionID

Hey, can you provide method to get sessionID, please?

crash while start ChatActivity

my Gradle version is 6.7.1 but while trying to start ChatActivity it crashes as shown bellow :
note :when I delete ChatActivity.class and replace it with one of my project activity every things is correct, but after changing to ChatActivity.class it runs crash.

WARN : even your sample code on git doest open up chatActivity and it crashes with the same error.

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.nar.bimito, PID: 12533
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nar.bimito/im.crisp.client.ChatActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
at im.crisp.client.b.e.b.e.a(Unknown Source:11)
at im.crisp.client.b.e.b.e.onCreateView(Unknown Source:116)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2963)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:518)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3138)
at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:3065)
at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:2988)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:546)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:282)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:2189)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:2100)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:2002)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3138)
at androidx.fragment.app.FragmentManager.dispatchActivityCreated(FragmentManager.java:3072)
at androidx.fragment.app.FragmentController.dispatchActivityCreated(FragmentController.java:251)
at androidx.fragment.app.FragmentActivity.onStart(FragmentActivity.java:501)
at androidx.appcompat.app.AppCompatActivity.onStart(AppCompatActivity.java:246)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1334)
at android.app.Activity.performStart(Activity.java:7029)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2741)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
at android.app.ActivityThread.-wrap11(Unknown Source:0) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
at android.os.Handler.dispatchMessage(Handler.java:106) 
at android.os.Looper.loop(Looper.java:164) 
at android.app.ActivityThread.main(ActivityThread.java:6494) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

Migrate to support library or Android X fragments.

Hello Guys Native Fragments has been deprecated we need this CrispFragment to Extend from a Support library fragment or an androidX fragment to be able to add it in Modern applications that uses architecture components etc.

CrispFragment line 279

I faced crashed on CrispFragment according to my crashlytics report. Can your team give a solution.

Title:
CrispFragment line 279
im.crisp.sdk.ui.CrispFragment.handleIntentToLink

Log:
Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=fb-messenger://user/240822773292890/?intent_trigger=mme&nav=discover pkg=com.facebook.orca launchParam=MultiScreenLaunchParams { mDisplayId=0 mBaseDisplayId=0 mFlags=0 } }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1844)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1649)
at android.app.Activity.startActivityForResult(Activity.java:5061)
at android.app.Activity.startActivityFromFragment(Activity.java:5046)
at android.app.Activity$HostCallbacks.onStartActivityFromFragment(Activity.java:7563)
at android.app.Fragment.startActivity(Fragment.java:1130)
at android.app.Fragment.startActivity(Fragment.java:1109)
at im.crisp.sdk.ui.CrispFragment.handleIntentToLink(SourceFile:279)
at im.crisp.sdk.ui.CrispFragment$1.shouldOverrideUrlLoading(SourceFile:111)
at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(PG:16)
at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
at android.os.MessageQueue.next(MessageQueue.java:323)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:6816)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)

I use implementation 'im.crisp:crisp-sdk:0.1.10'
This crash is not frequent but most of the crash is from Samsung device
67% Galaxy A7(2017)
33% Galaxy J5(2016)

Unable to set tokenID

Hi,
there isn't method for setting tokenID.
For IOS there is a following method, but I can't find anything similar within Android SDK:
CrispSDK.setTokenID(tokenID: "A_CUSTOM_ID")
How can I set tokenID, using Crisp SDK for Android?
Best regards

enum constant im.crisp.client.b.b.b$c$a.history is missing

I see couple of crashes like this in our crashlitics system.
From additional data it looks like it happend when ChatActivity was opening.

java.lang.EnumConstantNotPresentException: enum constant im.crisp.client.b.b.b$c$a.history is missing
    at im.crisp.client.b.b.b$c.<init>(SourceFile)
    at im.crisp.client.b.d.e.j.a(SourceFile)
    at im.crisp.client.b.d.e.j.deserialize(SourceFile)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.Gson.fromJson(Gson.java:927)
    at com.google.gson.Gson.fromJson(Gson.java:994)
    at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162)
    at im.crisp.client.b.d.e.a.a(SourceFile)
    at im.crisp.client.b.d.e.a.deserialize(SourceFile)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
    at com.google.gson.Gson.fromJson(Gson.java:927)
    at com.google.gson.Gson.fromJson(Gson.java:892)
    at com.google.gson.Gson.fromJson(Gson.java:841)
    at com.google.gson.Gson.fromJson(Gson.java:813)
    at im.crisp.client.b.d.c.a.a(SourceFile)
    at im.crisp.client.b.d.a.lambda$xIiNzj3dlDFJqMUOsb6V4QvPZBs(SourceFile:0)
    at im.crisp.client.b.d.a.lambda$J7IYerjC8mO-OSeWdtq1JI98djk(SourceFile:0)
    at im.crisp.client.b.d.-$$Lambda$a$J7IYerjC8mO-OSeWdtq1JI98djk.call(lambda)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Socket.onevent(Socket.java:338)
    at io.socket.client.Socket.onpacket(Socket.java:289)
    at io.socket.client.Socket.access$100(Socket.java:24)
    at io.socket.client.Socket$2$2.call(Socket.java:120)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Manager.ondecoded(Manager.java:427)
    at io.socket.client.Manager.access$1600(Manager.java:30)
    at io.socket.client.Manager$7.call(Manager.java:403)
    at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
    at io.socket.client.Manager.ondata(Manager.java:419)
    at io.socket.client.Manager.access$1000(Manager.java:30)
    at io.socket.client.Manager$2.call(Manager.java:370)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
    at io.socket.engineio.client.Socket$5.call(Socket.java:335)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
    at io.socket.engineio.client.Transport.write(Transport.java:0)
    at io.socket.engineio.client.Transport.onData(Transport.java:118)
    at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
    at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:818)

com.google.gson.JsonParseException: java.lang.EnumConstantNotPresentException: enum constant im.crisp.client.b.b.b$c$a.history is missing
    at im.crisp.client.b.d.e.j.a(SourceFile)
    at im.crisp.client.b.d.e.j.deserialize(SourceFile)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.Gson.fromJson(Gson.java:927)
    at com.google.gson.Gson.fromJson(Gson.java:994)
    at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162)
    at im.crisp.client.b.d.e.a.a(SourceFile)
    at im.crisp.client.b.d.e.a.deserialize(SourceFile)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
    at com.google.gson.Gson.fromJson(Gson.java:927)
    at com.google.gson.Gson.fromJson(Gson.java:892)
    at com.google.gson.Gson.fromJson(Gson.java:841)
    at com.google.gson.Gson.fromJson(Gson.java:813)
    at im.crisp.client.b.d.c.a.a(SourceFile)
    at im.crisp.client.b.d.a.lambda$xIiNzj3dlDFJqMUOsb6V4QvPZBs(SourceFile:0)
    at im.crisp.client.b.d.a.lambda$J7IYerjC8mO-OSeWdtq1JI98djk(SourceFile:0)
    at im.crisp.client.b.d.-$$Lambda$a$J7IYerjC8mO-OSeWdtq1JI98djk.call(lambda)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Socket.onevent(Socket.java:338)
    at io.socket.client.Socket.onpacket(Socket.java:289)
    at io.socket.client.Socket.access$100(Socket.java:24)
    at io.socket.client.Socket$2$2.call(Socket.java:120)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Manager.ondecoded(Manager.java:427)
    at io.socket.client.Manager.access$1600(Manager.java:30)
    at io.socket.client.Manager$7.call(Manager.java:403)
    at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
    at io.socket.client.Manager.ondata(Manager.java:419)
    at io.socket.client.Manager.access$1000(Manager.java:30)
    at io.socket.client.Manager$2.call(Manager.java:370)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
    at io.socket.engineio.client.Socket$5.call(Socket.java:335)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
    at io.socket.engineio.client.Transport.write(Transport.java:0)
    at io.socket.engineio.client.Transport.onData(Transport.java:118)
    at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
    at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:818)

com.google.gson.JsonParseException: com.google.gson.JsonParseException: java.lang.EnumConstantNotPresentException: enum constant im.crisp.client.b.b.b$c$a.history is missing
    at im.crisp.client.b.d.e.a.a(SourceFile)
    at im.crisp.client.b.d.e.a.deserialize(SourceFile)
    at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82)
    at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222)
    at com.google.gson.Gson.fromJson(Gson.java:927)
    at com.google.gson.Gson.fromJson(Gson.java:892)
    at com.google.gson.Gson.fromJson(Gson.java:841)
    at com.google.gson.Gson.fromJson(Gson.java:813)
    at im.crisp.client.b.d.c.a.a(SourceFile)
    at im.crisp.client.b.d.a.lambda$xIiNzj3dlDFJqMUOsb6V4QvPZBs(SourceFile:0)
    at im.crisp.client.b.d.a.lambda$J7IYerjC8mO-OSeWdtq1JI98djk(SourceFile:0)
    at im.crisp.client.b.d.-$$Lambda$a$J7IYerjC8mO-OSeWdtq1JI98djk.call(lambda)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Socket.onevent(Socket.java:338)
    at io.socket.client.Socket.onpacket(Socket.java:289)
    at io.socket.client.Socket.access$100(Socket.java:24)
    at io.socket.client.Socket$2$2.call(Socket.java:120)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Manager.ondecoded(Manager.java:427)
    at io.socket.client.Manager.access$1600(Manager.java:30)
    at io.socket.client.Manager$7.call(Manager.java:403)
    at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
    at io.socket.client.Manager.ondata(Manager.java:419)
    at io.socket.client.Manager.access$1000(Manager.java:30)
    at io.socket.client.Manager$2.call(Manager.java:370)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
    at io.socket.engineio.client.Socket$5.call(Socket.java:335)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
    at io.socket.engineio.client.Transport.write(Transport.java:0)
    at io.socket.engineio.client.Transport.onData(Transport.java:118)
    at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
    at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:818)

Chat is empty :(

When i was chating to my self for test is has been working fine , but when i refreshed the app nothing showed in chat (app) and when i was trying to chat again , messages sent correctly but no message showed in app

Crash while closing ChatActivity

I see couple of crashes like this in our crashlitics system.
From additional data it looks like it happend when ChatActivity was closing.

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
    at im.crisp.client.b.d.d.b.i
    at im.crisp.client.b.d.d.b.b
    at im.crisp.client.b.e.b.a.onStop
    at androidx.fragment.app.Fragment.performStop(Fragment.java:2797)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:940)
    at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
    at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1303)
    at androidx.fragment.app.FragmentManagerImpl.dispatchStateChange(FragmentManagerImpl.java:2659)
    at androidx.fragment.app.FragmentManagerImpl.dispatchStop(FragmentManagerImpl.java:2634)
    at androidx.fragment.app.FragmentController.dispatchStop(FragmentController.java:290)
    at androidx.fragment.app.FragmentActivity.onStop(FragmentActivity.java:564)
    at androidx.appcompat.app.AppCompatActivity.onStop(AppCompatActivity.java:216)
    at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1277)
    at android.app.Activity.performStop(Activity.java:6185)
    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3670)
    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3729)
    at android.app.ActivityThread.access$1400(ActivityThread.java:152)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1358)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5259)
    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:902)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

java.lang.RuntimeException: Unable to stop activity {com.ventrata.app/im.crisp.client.ChatActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
    at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3675)
    at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3729)
    at android.app.ActivityThread.access$1400(ActivityThread.java:152)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1358)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:135)
    at android.app.ActivityThread.main(ActivityThread.java:5259)
    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:902)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:697)

java.util.ConcurrentModificationException

I'm sometimes getting java.util.ConcurrentModificationException when opening chat activity using 1.0.3 android sdk.

I'm using the same code as here –> #43 (comment)

It's happening only sometimes. Can you please check your collection manipulation?

E/UncaughtException(10094): Restarting app
E/UncaughtException(10094): java.util.ConcurrentModificationException
E/UncaughtException(10094): 	at java.util.ArrayList$Itr.next(ArrayList.java:831)
E/UncaughtException(10094): 	at im.crisp.client.b.a.a.l(SourceFile)
E/UncaughtException(10094): 	at im.crisp.client.b.e.a.e.i.b(SourceFile)
E/UncaughtException(10094): 	at im.crisp.client.b.e.a.e.i.a(SourceFile)
E/UncaughtException(10094): 	at im.crisp.client.b.e.b.g$a.j(SourceFile)
E/UncaughtException(10094): 	at im.crisp.client.b.e.b.g$a.lambda$lk1FiT7iDBX4RDrwY9_3h-tuGnw(SourceFile)
E/UncaughtException(10094): 	at im.crisp.client.b.e.b.-$$Lambda$g$a$lk1FiT7iDBX4RDrwY9_3h-tuGnw.run(lambda)
E/UncaughtException(10094): 	at android.os.Handler.handleCallback(Handler.java:751)
E/UncaughtException(10094): 	at android.os.Handler.dispatchMessage(Handler.java:95)
E/UncaughtException(10094): 	at android.os.Looper.loop(Looper.java:154)
E/UncaughtException(10094): 	at android.app.ActivityThread.main(ActivityThread.java:6077)
E/UncaughtException(10094): 	at java.lang.reflect.Method.invoke(Native Method)
E/UncaughtException(10094): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
E/UncaughtException(10094): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)

Custom layout

Crisp is good, but when is it possible to set custom layout for it through API?

Error in AppCompat fragments

It's impossible to use CrispFragment inside AppCompat fragments. Returning to a fragment with CrispFragment inside I have "Duplicate ID, tag null, or parent id with another fragment" error.
Few workarounds exist and all of them require CrispFragment inheritance from android.support.v4.app.Fragment. For example, https://stackoverflow.com/a/19815266/4589148

Do you plan to implement CrispFragment for AppCompat?

Android notifications : persistent vibrator

Hi

It is not possible to manage notifications correctly on android, the vibrator is always present.

Example: Each time a new message is received, the phone vibrates (even if no notification banners) and notifications are disabled.

More dangerous: If I lose the network for 2 hours and I receive 400 messages on Crisp during this time, when I regain network, my phone will vibrate 400 times for 20 minutes.

Right now my team had to uninstall Crisp from the android phones. No worries on iOS though.

Thanks.

Android 15, 16

Dose it make problem to use library on androids 15 and 16?
Sounds the library is not compatible.

Get number of unread messages

Is there a way to get the number of unread messages or show a notification when an agent replies whiles the app is in the background

Exit button is wayyy too small

Our QA team flagged an issue i think is valid, the close button to exit chat is way too small and hard to click. Attached is a screenshot and video.

Image from iOS

Image.from.iOS.1.mp4

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.gson.JsonPrimitive.getAsString()' on a null object reference

I'm encountering crashes when I use token id -> see logs: logs.txt

When I start our app 1st time, set token id and start chat everything works. But when I close and open chat I get a crash. And then every time I try to open a chat I get the same crash. That is until I reset session and use a different token ID. (but the crash shows again after a while and I have to use a new id again...)

There's nothing I can do on my side, can you help?

Support for React Native

When do you plan to release a React Native module that will bridge the iOS and Android SDKs. I have created a custom bridge but am struggling to get the Android bridge to work correctly. Happy to contribute my custom bridge if it will speed up the process.

Loading Error: "RecyclerView: No attached; skipping layout"

Hi, I'm getting this error in my Logcat when open "ChatActivity.class":
RecyclerView: No adapter attached; skipping layout
This causes not being loaded chatbox. I upgraded my RecyclerView to:
"androidx.recyclerview:recyclerview:1.2.0" but it didn't work.
Also, I tried to find probable conflicts with other dependencies but I wasn't successful in solving this problem.
Screenshot_1620469473

[Bug] java.lang.IllegalStateException: no_session

at im.crisp.client.b.b.b.(Unknown Source:102)
at im.crisp.client.b.b.b.a(Unknown Source:9)
at im.crisp.client.b.b.b.b(Unknown Source:1)
at im.crisp.client.b.e.b.b.h(Unknown Source:15)
at im.crisp.client.b.e.b.b.a(Unknown Source:3)
at im.crisp.client.b.e.b.b.lambda$ruuIttC9-hyYHOklD9IrCtkkfGA(Unknown Source:0)
at im.crisp.client.b.e.b.-$$Lambda$b$ruuIttC9-hyYHOklD9IrCtkkfGA.onEditorAction(Unknown Source:2)
at android.widget.TextView.onEditorAction(TextView.java:7082)
at com.android.internal.widget.EditableInputConnection.performEditorAction(EditableInputConnection.java:138)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:371)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:94)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:233)
at android.app.ActivityThread.main(ActivityThread.java:8010)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)

action:

  • start ChatActivity
  • input some msg, and click send btn
  • and that crash

sdk_version = 1.0.4

handleIntentToLink() is crashing app when other app is not found

I found this issue on Crashlytics and it's happens when there is a link to Facebook Messenger. A simple catch for ActivityNotFoundException can fix this problem. I will submit a PR for it.

Here is the full error log:

Fatal Exception: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=fb-messenger://user/1234567890/?intent_trigger=mme&nav=discover pkg=com.facebook.orca }
       at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2071)
       at android.app.Instrumentation.execStartActivity(Instrumentation.java:1857)
       at android.app.Activity.startActivityForResult(Activity.java:5950)
       at android.app.Activity.startActivityFromFragment(Activity.java:5925)
       at android.app.Activity$HostCallbacks.onStartActivityFromFragment(Activity.java:8853)
       at android.app.Fragment.startActivity(Fragment.java:1101)
       at android.app.Fragment.startActivity(Fragment.java:1080)
       at im.crisp.sdk.ui.CrispFragment.handleIntentToLink(CrispFragment.java:3)
       at im.crisp.sdk.ui.a.shouldOverrideUrlLoading(a.java:3)
       at Ir.a(Ir.java:1)
       at org.chromium.android_webview.AwContentsClientBridge.shouldOverrideUrlLoading(AwContentsClientBridge.java:15)
       at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
       at android.os.MessageQueue.next(MessageQueue.java:336)
       at android.os.Looper.loop(Looper.java:197)
       at android.app.ActivityThread.main(ActivityThread.java:7811)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1076)

Clear Chat

Hi, is there any method to clear chat? In case user logout then login with another account.

Have trouble about the different glide version.

I seen in your package module you are using glide version 2.7.0, but currently in my app i using glide newest version 4.0.0.

the problem is i always got the error when i load giftmoticon

E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.xxx.xxx, PID: 28874
java.lang.NoSuchMethodError: No virtual method load(Ljava/lang/String;)Lcom/bumptech/glide/DrawableTypeRequest; in class Lcom/bumptech/glide/RequestManager; or its super classes (declaration of 'com.bumptech.glide.RequestManager' appears in /data/app/com.xxx.xxx-2/split_lib_dependencies_apk.apk:classes75.dex)
at im.crisp.sdk.ui.internals.adapters.CrispMessagesAdapter.a(SourceFile:298)
at im.crisp.sdk.ui.internals.adapters.CrispMessagesAdapter.onBindViewHolder(SourceFile:120)`

i think it because the both our app using different glide version.
Can u solve our problem? thanks...

Inifite loop

Every second and later time I try to open the activity containing the CrispFragment, there is an infinite loop - the first load works perfectly, showing all messages and so on.
Tried with the example and the problem occurred as well.

Random Crash on CrispFragment

Version: 'im.crisp:crisp-sdk:0.1.14'

Stacktrace:
Caused by android.view.InflateException: Binary XML file line #8: Error inflating class android.webkit.WebView
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at im.crisp.sdk.ui.CrispFragment.onCreateView(SourceFile:1)
at android.app.Fragment.performCreateView(Fragment.java:2069)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:875)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1050)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1152)
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2142)
at android.app.Activity.onCreateView(Activity.java:5538)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:337)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.donaumorgen.utel.front.crisp.CrispActivity.onCreate(CrispActivity.kt:12)
at android.app.Activity.performCreate(Activity.java:6211)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
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:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

Caused by android.content.res.Resources$NotFoundException: String resource ID #0x2040003
at android.content.res.Resources.getText(Resources.java:330)
at android.content.res.Resources.getString(Resources.java:428)
at com.android.org.chromium.content.browser.ContentViewCore.setContainerView(ContentViewCore.java:684)
at com.android.org.chromium.content.browser.ContentViewCore.initialize(ContentViewCore.java:608)
at com.android.org.chromium.android_webview.AwContents.createAndInitializeContentViewCore(AwContents.java:674)
at com.android.org.chromium.android_webview.AwContents.setNewAwContents(AwContents.java:823)
at com.android.org.chromium.android_webview.AwContents.(AwContents.java:662)
at com.android.org.chromium.android_webview.AwContents.(AwContents.java:597)
at com.android.webview.chromium.WebViewChromium.initForReal(WebViewChromium.java:319)
at com.android.webview.chromium.WebViewChromium.access$100(WebViewChromium.java:104)
at com.android.webview.chromium.WebViewChromium$1.run(WebViewChromium.java:271)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.drainQueue(WebViewChromium.java:131)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue$1.run(WebViewChromium.java:118)
at com.android.org.chromium.base.ThreadUtils.runOnUiThread(ThreadUtils.java:144)
at com.android.webview.chromium.WebViewChromium$WebViewChromiumRunQueue.addTask(WebViewChromium.java:115)
at com.android.webview.chromium.WebViewChromium.init(WebViewChromium.java:268)
at android.webkit.WebView.(WebView.java:591)
at android.webkit.WebView.(WebView.java:526)
at android.webkit.WebView.(WebView.java:509)
at android.webkit.WebView.(WebView.java:496)
at java.lang.reflect.Constructor.newInstance(Constructor.java)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:55)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:682)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:741)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at im.crisp.sdk.ui.CrispFragment.onCreateView(SourceFile:1)
at android.app.Fragment.performCreateView(Fragment.java:2069)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:875)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1050)
at android.app.FragmentManagerImpl.addFragment(FragmentManager.java:1152)
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2142)
at android.app.Activity.onCreateView(Activity.java:5538)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:337)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:733)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at androidx.appcompat.app.AppCompatDelegateImpl.setContentView(AppCompatDelegateImpl.java:555)
at androidx.appcompat.app.AppCompatActivity.setContentView(AppCompatActivity.java:161)
at com.donaumorgen.utel.front.crisp.CrispActivity.onCreate(CrispActivity.kt:12)
at android.app.Activity.performCreate(Activity.java:6211)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2601)
at android.app.ActivityThread.access$800(ActivityThread.java:178)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5637)
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:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

Getting STRING_TOO_LARGE error

Hi, when I add Crisp dependency, with very next build I get an error "STRING_TOO_LARGE".
Here is a video. You can see that it starts with successful build.
Right after adding Crisp dependency and repeating build, I get an error.

Android app is crashed when opening Crisp conversation

I'm getting a java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.gson.JsonPrimitive.getAsString()' on a null object reference
at im.crisp.client.b.d.e.k.a(Unknown Source:14) . Full log below .

2021-05-06 09:44:53.491 7607-7735/com.mediastep.gosellseller E/AndroidRuntime: FATAL EXCEPTION: EventThread Process: com.mediastep.gosellseller, PID: 7607 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.gson.JsonPrimitive.getAsString()' on a null object reference at im.crisp.client.b.d.e.k.a(Unknown Source:14) at im.crisp.client.b.d.e.k.deserialize(Unknown Source:0) at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) at com.google.gson.Gson.fromJson(Gson.java:932) at com.google.gson.Gson.fromJson(Gson.java:1003) at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:162) at im.crisp.client.b.d.e.a.a(Unknown Source:148) at im.crisp.client.b.d.e.a.deserialize(Unknown Source:0) at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:69) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:41) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:82) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:131) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:222) at com.google.gson.Gson.fromJson(Gson.java:932)

Stuck on Loading after reset session

Hello!! we are working with version: im.crisp:crisp-sdk:0.1.15: when we reset session and then open CrispFragment agai it gets stuck on Loading, after that we close the activity and then open it again and then begins to work properly.

NullPointerException: Attempt to read from field 'im.crisp.client.b.b.j im.crisp.client.b.d.c.d.m.i' on a null object reference

I see couple of crashes like this in our crashlitics system.
From additional data it looks like it happend when ChatActivity was opening.
Can you please look at it?

java.lang.NullPointerException: Attempt to read from field 'im.crisp.client.b.b.j im.crisp.client.b.d.c.d.m.i' on a null object reference
    at im.crisp.client.b.e.b.a$a.lambda$0s9hPCTr8UiMW3PNT6-rVRehJ_Q
    at im.crisp.client.b.e.b.a$a.lambda$3cHIYFhRVmvYulFGyLlSp0h9cbI
    at im.crisp.client.b.e.b.a$a.lambda$iCMs7V3HY8a5NNeD0MV9L2oKhY0
    at im.crisp.client.b.e.b.a$a.lambda$pu_ugLYzkxUP6Ny9yKOIO_uq19g
    at im.crisp.client.b.d.b.a
    at im.crisp.client.b.d.b.a
    at im.crisp.client.b.d.b.a
    at im.crisp.client.b.d.a.lambda$-tfNWcIcwjgUM5i9nuoFt0ur6WQ
    at im.crisp.client.b.d.a.lambda$-tfNWcIcwjgUM5i9nuoFt0ur6WQ
    at im.crisp.client.b.d.a.lambda$6Bwjd2IhWjRj7CNLjlrfFJILTrs
    at im.crisp.client.b.d.a.lambda$Iky-fLZDGIML-ujCxPsb1F48U-E
    at im.crisp.client.b.d.a.lambda$xIiNzj3dlDFJqMUOsb6V4QvPZBs
    at im.crisp.client.b.d.a.lambda$J7IYerjC8mO-OSeWdtq1JI98djk
    at im.crisp.client.b.d.-$$Lambda$a$J7IYerjC8mO-OSeWdtq1JI98djk.call(lambda)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Socket.onevent(Socket.java:338)
    at io.socket.client.Socket.onpacket(Socket.java:289)
    at io.socket.client.Socket.access$100(Socket.java:24)
    at io.socket.client.Socket$2$2.call(Socket.java:120)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.client.Manager.ondecoded(Manager.java:427)
    at io.socket.client.Manager.access$1600(Manager.java:30)
    at io.socket.client.Manager$7.call(Manager.java:403)
    at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
    at io.socket.client.Manager.ondata(Manager.java:419)
    at io.socket.client.Manager.access$1000(Manager.java:30)
    at io.socket.client.Manager$2.call(Manager.java:370)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
    at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
    at io.socket.engineio.client.Socket$5.call(Socket.java:335)
    at io.socket.emitter.Emitter.emit(Emitter.java:117)
    at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
    at io.socket.engineio.client.Transport.write(Transport.java:0)
    at io.socket.engineio.client.Transport.onData(Transport.java:118)
    at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
    at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
    at io.socket.thread.EventThread$2.run(EventThread.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
    at java.lang.Thread.run(Thread.java:818)

Bintray shutdown

The binary that was hosted on bintray is no longer available as bintray is shutting down.
Could you provide us an alternative link to the SDK? @baptistejamin

Thanks in advance

NullPointerExeception in Application initiate.How to solve this?

Fatal Exception: java.lang.RuntimeException: Unable to create application com.example.android.SampleApplication: java.lang.NullPointerException
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6320)
at android.app.ActivityThread.access$1800(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1860)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by java.lang.NullPointerException
at com.anupcowkur.reservoir.Reservoir.get(Reservoir.java:178)
at im.crisp.sdk.stores.ContextStore.restore(SourceFile:54)
at im.crisp.sdk.stores.ContextStore.(SourceFile:33)
at im.crisp.sdk.SharedCrisp.(SourceFile:39)
at im.crisp.sdk.SharedCrisp.initialize(SourceFile:49)
at im.crisp.sdk.Crisp$Builder.initialize(SourceFile:73)
at com.example.android.SampleApplication.onCreate(SampleApplication.java:71)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1036)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6317)
at android.app.ActivityThread.access$1800(ActivityThread.java:221)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1860)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7225)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120).

Conflict with Glide Library

Im using Glide 4.0.0 on my app while Crisp 0.0.17 using 3.x version of glide. And it crashed when i open a smiley emoticon on chat menu. When i check the gradle, Crisp override the glide module using latest version (4.0.0) when app compiled. How to avoid this conflict?

Android RELEASE build not working

I get this error every time I try to open chat when I create a release build of our app.
This happens only on release build.

E/AndroidRuntime(14492): FATAL EXCEPTION: main
E/AndroidRuntime(14492): Process: com.ventrata.intercom.plugin.demo, PID: 14492
E/AndroidRuntime(14492): java.lang.AssertionError: java.lang.NoSuchFieldException: DEFAULT
E/AndroidRuntime(14492): 	at c.a.c.y.n.n$k0.<init>()
E/AndroidRuntime(14492): 	at c.a.c.y.n.n$w.a()
E/AndroidRuntime(14492): 	at c.a.c.f.a()
E/AndroidRuntime(14492): 	at c.a.c.y.n.i.a()
E/AndroidRuntime(14492): 	at c.a.c.y.n.i.a()
E/AndroidRuntime(14492): 	at c.a.c.y.n.i.a()
E/AndroidRuntime(14492): 	at c.a.c.f.a()
E/AndroidRuntime(14492): 	at c.a.c.y.n.i.a()
E/AndroidRuntime(14492): 	at c.a.c.y.n.i.a()
E/AndroidRuntime(14492): 	at c.a.c.y.n.i.a()
E/AndroidRuntime(14492): 	at c.a.c.f.a()
E/AndroidRuntime(14492): 	at i.x.a.a.a()
E/AndroidRuntime(14492): 	at i.s.a()
E/AndroidRuntime(14492): 	at i.s.b()
E/AndroidRuntime(14492): 	at i.i.a()
E/AndroidRuntime(14492): 	at i.i.a()
E/AndroidRuntime(14492): 	at i.t.a()
E/AndroidRuntime(14492): 	at i.s.a()
E/AndroidRuntime(14492): 	at i.s$a.invoke()
E/AndroidRuntime(14492): 	at java.lang.reflect.Proxy.invoke(Proxy.java:813)
E/AndroidRuntime(14492): 	at $Proxy0.a(Unknown Source)
E/AndroidRuntime(14492): 	at im.crisp.client.j.d.b0.d.a.b()
E/AndroidRuntime(14492): 	at im.crisp.client.j.d.b0.d.a.a()
E/AndroidRuntime(14492): 	at im.crisp.client.j.d.b0.d.a$a.a()
E/AndroidRuntime(14492): 	at i.g$b$a$a.run()
E/AndroidRuntime(14492): 	at android.os.Handler.handleCallback(Handler.java:751)
E/AndroidRuntime(14492): 	at android.os.Handler.dispatchMessage(Handler.java:95)
E/AndroidRuntime(14492): 	at android.os.Looper.loop(Looper.java:154)
E/AndroidRuntime(14492): 	at android.app.ActivityThread.main(ActivityThread.java:6121)
E/AndroidRuntime(14492): 	at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime(14492): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
E/AndroidRuntime(14492): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
E/AndroidRuntime(14492): Caused by: java.lang.NoSuchFieldException: DEFAULT
E/AndroidRuntime(14492): 	at java.lang.Class.getField(Class.java:1549)
E/AndroidRuntime(14492): 	... 32 more

notification show

Does this SDK have the ability to display the notification on the user's handset?
If yes, how do I enable it?

Asking to set email on chat page

I have set user email address through app using following method
Crisp.User.setEmail(EMAIL_ID")
, Still on live chat page , it is showing message as "please set your email to continue".

Stuck on loading

Hello, I tried to setup Crisp (v0.1.14) as documented, but the first time it loads the webview everything goes smooth while all the subsequent times it get stuck on loading:

Logcat reports just this warning:

I/chromium: [INFO:CONSOLE(1)] "Uncaught ReferenceError: initialize is not defined", source: (1)

Let me know if you need any additional logs or info to solve the issue.
Thanks

error when reopen fragment

this error happened when reopen fragment

/Error: android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class fragment
Caused by: java.lang.IllegalArgumentException: Binary XML file line #16: Duplicate id 0xffffffff, tag crisp_fragment, or parent id 0x7f080121 with another fragment for im.crisp.sdk.ui.CrispFragment
at android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2319)
at android.app.FragmentController.onCreateView(FragmentController.java:99)
at android.app.Activity.onCreateView(Activity.java:6093)
at android.support.v4.app.BaseFragmentActivityApi14.onCreateView(BaseFragmentActivityApi14.java:41)
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:67)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$PrivateWrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:303)
at android.view.LayoutInflater$FactoryMerger.onCreateView(LayoutInflater.java:190)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:784)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:734)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:865)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:828)
at android.view.LayoutInflater.inflate(LayoutInflater.java:525)
at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60)
at android.view.LayoutInflater.inflate(LayoutInflater.java:427)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:116)
at android.databinding.DataBindingUtil.inflate(DataBindingUtil.java:88)
at com.payava.clientcore.base.Base3Fragment.onCreateView(Base3Fragment.java:122)
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:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6776)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)

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.