* 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:
@@ -0,0 +1,47 @@
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
group = 'expo.modules.googleplayreferrer'
|
||||
version = '0.6.0'
|
||||
|
||||
def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
|
||||
apply from: expoModulesCorePlugin
|
||||
applyKotlinExpoModulesCorePlugin()
|
||||
useCoreDependencies()
|
||||
useExpoPublishing()
|
||||
|
||||
// If you want to use the managed Android SDK versions from expo-modules-core, set this to true.
|
||||
// The Android SDK versions will be bumped from time to time in SDK releases and may introduce breaking changes in your module code.
|
||||
// Most of the time, you may like to manage the Android SDK versions yourself.
|
||||
def useManagedAndroidSdkVersions = false
|
||||
if (useManagedAndroidSdkVersions) {
|
||||
useDefaultAndroidSdkVersions()
|
||||
} else {
|
||||
buildscript {
|
||||
// Simple helper that allows the root project to override versions declared by this library.
|
||||
ext.safeExtGet = { prop, fallback ->
|
||||
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
|
||||
}
|
||||
}
|
||||
project.android {
|
||||
compileSdkVersion safeExtGet("compileSdkVersion", 34)
|
||||
defaultConfig {
|
||||
minSdkVersion safeExtGet("minSdkVersion", 21)
|
||||
targetSdkVersion safeExtGet("targetSdkVersion", 34)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
namespace "expo.modules.googleplayreferrer"
|
||||
defaultConfig {
|
||||
versionCode 1
|
||||
versionName "0.6.0"
|
||||
}
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation("com.android.installreferrer:installreferrer:2.2")
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
<manifest>
|
||||
</manifest>
|
||||
+47
@@ -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()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"platforms": ["android"],
|
||||
"ios": {
|
||||
"modules": ["ExpoGooglePlayReferrerModule"]
|
||||
},
|
||||
"android": {
|
||||
"modules": ["expo.modules.googleplayreferrer.ExpoGooglePlayReferrerModule"]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
import {GooglePlayReferrerModule} from './src/ExpoGooglePlayReferrerModule'
|
||||
|
||||
export default GooglePlayReferrerModule
|
||||
@@ -0,0 +1,9 @@
|
||||
export type GooglePlayReferrerInfo = {
|
||||
installReferrer: string
|
||||
clickTimestamp: number
|
||||
installTimestamp: number
|
||||
}
|
||||
|
||||
export type ExpoGooglePlayReferrerModule = {
|
||||
getReferrerInfoAsync(): Promise<GooglePlayReferrerInfo>
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import {requireNativeModule} from 'expo-modules-core'
|
||||
|
||||
import {ExpoGooglePlayReferrerModule} from './ExpoGooglePlayReferrer.types'
|
||||
|
||||
export const BackgroundNotificationHandler =
|
||||
requireNativeModule<ExpoGooglePlayReferrerModule>('ExpoGooglePlayReferrer')
|
||||
@@ -0,0 +1,11 @@
|
||||
import {
|
||||
ExpoGooglePlayReferrerModule,
|
||||
GooglePlayReferrerInfo,
|
||||
} from './ExpoGooglePlayReferrer.types'
|
||||
|
||||
export const GooglePlayReferrerModule = {
|
||||
getReferrerInfoAsync(): Promise<GooglePlayReferrerInfo> {
|
||||
console.error('getReferrerInfoAsync is only available on Android')
|
||||
return Promise.reject('getReferrerInfoAsync is only available on Android')
|
||||
},
|
||||
} as ExpoGooglePlayReferrerModule
|
||||
Reference in New Issue
Block a user