Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,9 @@ dependencies {
implementation ("com.android.support.constraint:constraint-layout:1.1.3")


//implementation("io.branch.sdk.android:library:5.18.1")
implementation("io.branch.sdk.android:library:5.20.3")
// This branch assumes CI will place aar here
implementation(files("libs/branch-sdk-debug.aar"))
//implementation(files("libs/branch-sdk-debug.aar"))


implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package io.branch.branchlinksimulator

import android.content.Context
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import io.branch.referral.Branch
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.junit.Test
import org.junit.runner.RunWith

val branchInitializationSignal = CompletableDeferred<Unit>()
private val applicationJob = SupervisorJob()
val applicationScope = CoroutineScope(Dispatchers.Main + applicationJob)
val exampleBranchKey = "key_live_hshD4wiPK2sSxfkZqkH30ggmyBfmGmD7"

@RunWith(AndroidJUnit4::class)
class BranchBackgroundInitTest {

private val appContext: Context = ApplicationProvider.getApplicationContext()
@Test
fun branchGetInstanceTest() {
suspend fun backgroundGetBranchAutoInstanceTest(context: Context, branchKey: String) {
withContext(Dispatchers.IO) {
Branch.getAutoInstance(context, branchKey)
}
branchInitializationSignal.complete(Unit)
}

applicationScope.launch {
backgroundGetBranchAutoInstanceTest(appContext, exampleBranchKey)
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,26 @@ package io.branch.branchlinksimulator

import android.app.Application
import android.content.Context
import android.util.Log
import io.branch.referral.Branch
import kotlinx.coroutines.CompletableDeferred
import java.util.UUID

import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class BranchLinkSimulatorApplication: Application() {
lateinit var currentConfig: ApiConfiguration
lateinit var roundTripStore: RoundTripStore
private set

private val applicationJob = SupervisorJob()
val applicationScope = CoroutineScope(Dispatchers.Main + applicationJob)
val branchInitializationSignal = CompletableDeferred<Unit>()

override fun onCreate() {
super.onCreate()

Expand All @@ -20,8 +32,6 @@ class BranchLinkSimulatorApplication: Application() {

roundTripStore = RoundTripStore(this)
Branch.enableLogging(roundTripStore)
// Branch object initialization
Branch.getAutoInstance(this, currentConfig.branchKey)

// Retrieve or create the bls_session_id
val sharedPreferences = getSharedPreferences("branch_session_prefs", Context.MODE_PRIVATE)
Expand All @@ -30,8 +40,26 @@ class BranchLinkSimulatorApplication: Application() {
sharedPreferences.edit().putString("bls_session_id", newId).apply()
newId
}
applicationScope.launch {
// Coroutine used to move creating the Branch singleton through Branch.getAutoInstance() to background thread
setupBranchInstance(this@BranchLinkSimulatorApplication, currentConfig.branchKey)
withContext(Dispatchers.Main) {
// Set the bls_session_id in Branch request metadata
Branch.getInstance().setRequestMetadata("bls_session_id", blsSessionId)
}
}
}

// Set the bls_session_id in Branch request metadata
Branch.getInstance().setRequestMetadata("bls_session_id", blsSessionId)
override fun onTerminate() {
super.onTerminate()
applicationJob.cancel()
}

suspend fun setupBranchInstance(context: Context, branchKey: String) {
withContext(Dispatchers.IO) {
// Branch object initialization
Branch.getAutoInstance(context, branchKey)
}
branchInitializationSignal.complete(Unit)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ class MainActivity : ComponentActivity() {
}

lifecycleScope.launch {
val app = application as BranchLinkSimulatorApplication
app.branchInitializationSignal.await()
val initErrorMessage = initializeBranch()
initErrorMessageState.value = initErrorMessage
}
Expand Down