Add Instabug

This commit is contained in:
Phillip Thelen 2018-07-24 18:14:55 +02:00
parent 5beeb9c821
commit d4a2cf3e3d
7 changed files with 40 additions and 5 deletions

View file

@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.habitrpg.android.habitica"
android:versionCode="1978"
android:versionCode="1979"
android:versionName="1.5"
android:screenOrientation="portrait"
android:installLocation="auto" >
@ -14,12 +14,13 @@
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" tools:node="remove" />
<application
android:name=".HabiticaApplication"
android:allowBackup="true"

View file

@ -90,6 +90,7 @@ dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.1.16'
//Analytics
implementation 'com.amplitude:android-sdk:2.18.1'
implementation 'com.instabug.library:instabug:8.0.3'
// Fresco Image Management Library
implementation('com.facebook.fresco:fresco:1.9.0') {
exclude module: 'bolts-android'

View file

@ -28,6 +28,13 @@ import com.habitrpg.android.habitica.proxy.CrashlyticsProxy
import com.habitrpg.android.habitica.ui.activities.IntroActivity
import com.habitrpg.android.habitica.ui.activities.LoginActivity
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
import com.instabug.bug.BugReporting
import com.instabug.bug.PromptOption
import com.instabug.library.Instabug
import com.instabug.library.invocation.InstabugInvocationEvent
import com.instabug.library.model.NetworkLog
import com.instabug.library.ui.onboarding.WelcomeMessage
import com.instabug.library.visualusersteps.State
import com.squareup.leakcanary.LeakCanary
import com.squareup.leakcanary.RefWatcher
import io.reactivex.functions.Consumer
@ -79,6 +86,7 @@ abstract class HabiticaBaseApplication : Application() {
setupDagger()
refWatcher = LeakCanary.install(this)
setupFacebookSdk()
setupInstabug()
createBillingAndCheckout()
HabiticaIconsHelper.init(this)
@ -103,6 +111,16 @@ abstract class HabiticaBaseApplication : Application() {
checkIfNewVersion()
}
private fun setupInstabug() {
Instabug.Builder(this, getString(R.string.instabug_key))
.setInvocationEvents(InstabugInvocationEvent.SHAKE)
.setReproStepsState(State.ENABLED_WITH_NO_SCREENSHOTS)
.build()
Instabug.setWelcomeMessageState(WelcomeMessage.State.DISABLED)
Instabug.setUserAttribute("", lazyApiHelper.hostConfig.user)
BugReporting.setPromptOptionsEnabled(PromptOption.BUG, PromptOption.FEEDBACK)
}
protected open fun setupRealm() {
Realm.init(this)
val builder = RealmConfiguration.Builder()

View file

@ -1,5 +1,6 @@
package com.habitrpg.android.habitica.data
import com.habitrpg.android.habitica.api.HostConfig
import com.habitrpg.android.habitica.models.*
import com.habitrpg.android.habitica.models.auth.UserAuthResponse
import com.habitrpg.android.habitica.models.inventory.Equipment
@ -24,6 +25,8 @@ import retrofit2.HttpException
interface ApiClient {
val hostConfig: HostConfig
val status: Flowable<Status>
val content: Flowable<ContentResult>

View file

@ -64,7 +64,7 @@ import javax.net.ssl.SSLException
class ApiClientImpl//private OnHabitsAPIResult mResultListener;
//private HostConfig mConfig;
(private val gsonConverter: GsonConverterFactory, private val hostConfig: HostConfig, private val crashlyticsProxy: CrashlyticsProxy, private val popupNotificationsManager: PopupNotificationsManager, private val context: Context) : Consumer<Throwable>, ApiClient {
(private val gsonConverter: GsonConverterFactory, override val hostConfig: HostConfig, private val crashlyticsProxy: CrashlyticsProxy, private val popupNotificationsManager: PopupNotificationsManager, private val context: Context) : Consumer<Throwable>, ApiClient {
private val retrofitAdapter: Retrofit
// I think we don't need the ApiClientImpl anymore we could just use ApiService

View file

@ -15,6 +15,10 @@ import com.habitrpg.android.habitica.events.ShowConnectionProblemEvent
import io.reactivex.disposables.CompositeDisposable
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import com.instabug.library.InstabugTrackingDelegate
import android.view.MotionEvent
abstract class BaseActivity : AppCompatActivity() {
@ -41,6 +45,11 @@ abstract class BaseActivity : AppCompatActivity() {
return alwaysFinishActivitiesInt == 1
}
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
InstabugTrackingDelegate.notifyActivityGotTouchEvent(ev, this)
return super.dispatchTouchEvent(ev)
}
override fun isDestroyed(): Boolean {
return destroyed
}

View file

@ -10,6 +10,9 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.habitrpg.android.habitica.R
import com.instabug.bug.BugReporting
import com.instabug.bug.invocation.InvocationMode
import com.instabug.bug.invocation.InvocationOption
import kotlinx.android.synthetic.main.fragment_about.*
class AboutFragment : Fragment() {
@ -55,8 +58,8 @@ class AboutFragment : Fragment() {
sourceCodeLink.setOnClickListener { openBrowserLink(androidSourceCodeLink) }
twitter.setOnClickListener { openBrowserLink(twitterLink) }
sourceCodeButton.setOnClickListener { openBrowserLink(androidSourceCodeLink) }
reportBug.setOnClickListener { sendEmail("[Android] Bugreport") }
sendFeedback.setOnClickListener { sendEmail("[Android] Feedback") }
reportBug.setOnClickListener { BugReporting.invoke(InvocationMode.NEW_BUG, InvocationOption.COMMENT_FIELD_REQUIRED) }
sendFeedback.setOnClickListener { BugReporting.invoke(InvocationMode.NEW_FEEDBACK, InvocationOption.COMMENT_FIELD_REQUIRED)}
googlePlayStoreButton.setOnClickListener { openGooglePlay() }
}