How to disable Crashlytics Answers?

試著忘記壹切 提交于 2019-11-29 06:40:54

on my app we do it the old fashioned way:

if (!IS_DEBUG) {
   Fabric.with(this, new Crashlytics());
}

works fine.

Of course you can initialise with whichever custom parameters you need.

edit:

to get the debug boolean is just a matter of using gradle to your favour:

src/
   main/ // your app code
   debug/
       AppSettings.Java:
            public static final boolean IS_DEBUG = true;
   release/
       AppSettings.Java:
            public static final boolean IS_DEBUG = false;

edit:

I would advise against using BuildConfig.DEBUG, see this article: http://www.digipom.com/be-careful-with-buildconfig-debug/

jbxbergdev

For the time being, I solved the problem the old Java way:

Extend Answers using a sort-of singleton:

public class CustomAnswers extends Answers {

    private static CustomAnswers instance;

    private boolean mEnabled;

    private CustomAnswers(boolean enabled) {
        super();
        mEnabled = enabled;
    }

    public static synchronized void init(boolean enabled) {
        if (instance == null) {
            instance = new CustomAnswers(enabled);
        }
    }

    public static synchronized CustomAnswers get() {
        return instance;
    }

    @Override
    public void logSignUp(SignUpEvent event) {
        if (mEnabled) {
            super.logSignUp(event);
        }
    }

    // (...)
}

Initialize Crashlytics with Answers implementation:

boolean isDebug = DebugHelper.isDebugVersion(this);
CustomAnswers.init(!isDebug);
CrashlyticsCore crashlyticsCore =
        new CrashlyticsCore.Builder().disabled(isDebug).build();
Fabric.with(this, new Crashlytics.Builder()
        .core(crashlyticsCore).answers(CustomAnswers.get()).build());

Use Answers implementation for events:

CustomAnswers.get().logInvite(new InviteEvent());

This will disable events being logged.

Note that, as described in my first post, Answers.getInstance() will return null and not your CustomAnswers instance in that case.

Try this code

 CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());

or

Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!