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

View file

@ -90,6 +90,7 @@ dependencies {
implementation 'io.reactivex.rxjava2:rxjava:2.1.16' implementation 'io.reactivex.rxjava2:rxjava:2.1.16'
//Analytics //Analytics
implementation 'com.amplitude:android-sdk:2.18.1' implementation 'com.amplitude:android-sdk:2.18.1'
implementation 'com.instabug.library:instabug:8.0.3'
// Fresco Image Management Library // Fresco Image Management Library
implementation('com.facebook.fresco:fresco:1.9.0') { implementation('com.facebook.fresco:fresco:1.9.0') {
exclude module: 'bolts-android' 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.IntroActivity
import com.habitrpg.android.habitica.ui.activities.LoginActivity import com.habitrpg.android.habitica.ui.activities.LoginActivity
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper 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.LeakCanary
import com.squareup.leakcanary.RefWatcher import com.squareup.leakcanary.RefWatcher
import io.reactivex.functions.Consumer import io.reactivex.functions.Consumer
@ -79,6 +86,7 @@ abstract class HabiticaBaseApplication : Application() {
setupDagger() setupDagger()
refWatcher = LeakCanary.install(this) refWatcher = LeakCanary.install(this)
setupFacebookSdk() setupFacebookSdk()
setupInstabug()
createBillingAndCheckout() createBillingAndCheckout()
HabiticaIconsHelper.init(this) HabiticaIconsHelper.init(this)
@ -103,6 +111,16 @@ abstract class HabiticaBaseApplication : Application() {
checkIfNewVersion() 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() { protected open fun setupRealm() {
Realm.init(this) Realm.init(this)
val builder = RealmConfiguration.Builder() val builder = RealmConfiguration.Builder()

View file

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

View file

@ -64,7 +64,7 @@ import javax.net.ssl.SSLException
class ApiClientImpl//private OnHabitsAPIResult mResultListener; class ApiClientImpl//private OnHabitsAPIResult mResultListener;
//private HostConfig mConfig; //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 private val retrofitAdapter: Retrofit
// I think we don't need the ApiClientImpl anymore we could just use ApiService // 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 io.reactivex.disposables.CompositeDisposable
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import com.instabug.library.InstabugTrackingDelegate
import android.view.MotionEvent
abstract class BaseActivity : AppCompatActivity() { abstract class BaseActivity : AppCompatActivity() {
@ -41,6 +45,11 @@ abstract class BaseActivity : AppCompatActivity() {
return alwaysFinishActivitiesInt == 1 return alwaysFinishActivitiesInt == 1
} }
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
InstabugTrackingDelegate.notifyActivityGotTouchEvent(ev, this)
return super.dispatchTouchEvent(ev)
}
override fun isDestroyed(): Boolean { override fun isDestroyed(): Boolean {
return destroyed return destroyed
} }

View file

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