[🏁 #8] Play Store referrer (#4361)

* add new module for referrer api

* add dependency

* rm boiler

* return the result

* end connection when finished

* add js types
This commit is contained in:
Hailey
2024-06-04 13:20:39 -07:00
committed by GitHub
parent 8f9898e74c
commit 81cd1e0f2a
8 changed files with 134 additions and 0 deletions
@@ -0,0 +1,2 @@
<manifest>
</manifest>
@@ -0,0 +1,47 @@
package expo.modules.googleplayreferrer
import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener
import expo.modules.kotlin.modules.Module
import expo.modules.kotlin.modules.ModuleDefinition
import expo.modules.kotlin.Promise
class ExpoGooglePlayReferrerModule : Module() {
override fun definition() = ModuleDefinition {
Name("ExpoGooglePlayReferrer")
AsyncFunction("getReferrerInfoAsync") { promise: Promise ->
val referrerClient = InstallReferrerClient.newBuilder(appContext.reactContext).build()
referrerClient.startConnection(object : InstallReferrerStateListener {
override fun onInstallReferrerSetupFinished(responseCode: Int) {
if (responseCode == InstallReferrerClient.InstallReferrerResponse.OK) {
val response = referrerClient.installReferrer
promise.resolve(
mapOf(
"installReferrer" to response.installReferrer,
"clickTimestamp" to response.referrerClickTimestampSeconds,
"installTimestamp" to response.installBeginTimestampSeconds
)
)
} else {
promise.reject(
"ERR_GOOGLE_PLAY_REFERRER_UNKNOWN",
"Failed to get referrer info",
Exception("Failed to get referrer info")
)
}
referrerClient.endConnection()
}
override fun onInstallReferrerServiceDisconnected() {
promise.reject(
"ERR_GOOGLE_PLAY_REFERRER_DISCONNECTED",
"Failed to get referrer info",
Exception("Failed to get referrer info")
)
referrerClient.endConnection()
}
})
}
}
}