Skip to content

Commit

Permalink
Added initial integration for firebase (#7)
Browse files Browse the repository at this point in the history
* Added initial integration for firebase

* Added ios support for firebase integration

* Added ios support for firebase integration

* fixed lint errors

* Bumped version

* Adjusted the cocoapod import

* bumped kotlin to 1.8.20

* revert back version of kotlin
  • Loading branch information
Reedyuk committed Jun 21, 2023
1 parent 2337824 commit 1a96d79
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 4 deletions.
4 changes: 3 additions & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ POM_DEVELOPER_ID=MyUNiDAYS
POM_DEVELOPER_NAME=MyUNiDAYS
POM_DEVELOPER_EMAIL[email protected]

kotlin.native.binary.memoryModel=experimental
kotlin.native.binary.memoryModel=experimental

kotlin.native.cacheKind.iosArm64=none
10 changes: 8 additions & 2 deletions library/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ kotlin {
}
}
cocoapods {
ios.deploymentTarget = "10.0"
ios.deploymentTarget = "11.0"
noPodspec()
framework { isStatic = true }
pod("Analytics") {
Expand All @@ -73,6 +73,11 @@ kotlin {
branch = "master"
}
}
pod("Segment-Firebase") {
source = git("https://github.com/Reedyuk/analytics-ios-integration-firebase.git") {
branch = "kmm"
}
}
}
sourceSets {
val commonMain by getting
Expand All @@ -86,7 +91,8 @@ kotlin {
val androidMain by getting {
dependencies {
api("com.segment.analytics.android:analytics:4.10.4")
api("com.appsflyer:segment-android-integration:6.5.2")
api("com.appsflyer:segment-android-integration:6.10.3")
api("com.segment.analytics.android.integrations:firebase:2.3.3")
}
}
val androidTest by getting {
Expand Down
2 changes: 1 addition & 1 deletion library/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ signing.keyId=""
signing.password=""

MODULE_PACKAGE_NAME=com.myunidays
MODULE_VERSION_NUMBER=0.1.1
MODULE_VERSION_NUMBER=0.1.2
MODULE_NAME=segmenkt

OPEN_SOURCE_REPO=https://oss.sonatype.org/service/local/staging/deploy/maven2/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.myunidays.segmenkt

import android.app.Activity
import android.os.Bundle
import com.myunidays.segmenkt.integrations.AliasPayload
import com.myunidays.segmenkt.integrations.GroupPayload
import com.myunidays.segmenkt.integrations.IdentifyPayload
import com.myunidays.segmenkt.integrations.Integration
import com.myunidays.segmenkt.integrations.IntegrationFactory
import com.myunidays.segmenkt.integrations.ScreenPayload
import com.myunidays.segmenkt.integrations.TrackPayload

actual class FirebaseIntegration internal constructor(
private val android: com.segment.analytics.integrations.Integration<*>
) : Integration<FirebaseIntegration> {
fun onActivityCreated(activity: Activity?, savedInstanceState: Bundle?) =
android.onActivityCreated(activity, savedInstanceState)
fun onActivityStarted(activity: Activity?) = android.onActivityStarted(activity)
fun onActivityResumed(activity: Activity?) = android.onActivityResumed(activity)
fun onActivityPaused(activity: Activity?) = android.onActivityPaused(activity)
fun onActivityStopped(activity: Activity?) = android.onActivityStopped(activity)
fun onActivitySaveInstanceState(activity: Activity?, outState: Bundle?) =
android.onActivitySaveInstanceState(activity, outState)
fun onActivityDestroyed(activity: Activity?) = android.onActivityDestroyed(activity)
override fun identify(identifyPayload: IdentifyPayload) = android.identify(identifyPayload)
override fun group(groupPayload: GroupPayload) = android.group(groupPayload)
override fun track(trackPayload: TrackPayload) = android.track(trackPayload)
override fun alias(aliasPayload: AliasPayload) = android.alias(aliasPayload)
override fun screen(screenPayload: ScreenPayload) = android.screen(screenPayload)
override fun flush() = android.flush()
override fun reset() = android.reset()
override fun debug(debug: Boolean) {
}

actual companion object {
actual fun factory(
delegate: Any?,
deeplinkHandler: Any?
): IntegrationFactory = com.segment.analytics.android.integrations.firebase.FirebaseIntegration.FACTORY
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.myunidays.segmenkt

import com.myunidays.segmenkt.integrations.Integration
import com.myunidays.segmenkt.integrations.IntegrationFactory

expect class FirebaseIntegration : Integration<FirebaseIntegration> {
companion object {
fun factory(delegate: Any? = null, deeplinkHandler: Any? = null): IntegrationFactory
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.myunidays.segmenkt

import com.myunidays.segmenkt.integrations.AliasPayload
import com.myunidays.segmenkt.integrations.GroupPayload
import com.myunidays.segmenkt.integrations.IdentifyPayload
import com.myunidays.segmenkt.integrations.Integration
import com.myunidays.segmenkt.integrations.IntegrationFactory
import com.myunidays.segmenkt.integrations.ScreenPayload
import com.myunidays.segmenkt.integrations.TrackPayload

actual class FirebaseIntegration internal constructor(
private val ios: cocoapods.Analytics.SEGIntegrationProtocol
) : Integration<FirebaseIntegration> {
override fun identify(identifyPayload: IdentifyPayload) = ios.identify(identifyPayload)
override fun group(groupPayload: GroupPayload) = ios.group(groupPayload)
override fun track(trackPayload: TrackPayload) = ios.track(trackPayload)
override fun alias(aliasPayload: AliasPayload) = ios.alias(aliasPayload)
override fun screen(screenPayload: ScreenPayload) = ios.screen(screenPayload)
override fun flush() = ios.flush()
override fun reset() = ios.reset()
override fun debug(debug: Boolean) { }

actual companion object {
actual fun factory(
delegate: Any?,
deeplinkHandler: Any?
): IntegrationFactory =
cocoapods.Segment_Firebase.SEGFirebaseIntegrationFactory.Companion.instance() as cocoapods.Analytics.SEGIntegrationFactoryProtocol
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.myunidays.segmenkt

import com.myunidays.segmenkt.integrations.AliasPayload
import com.myunidays.segmenkt.integrations.GroupPayload
import com.myunidays.segmenkt.integrations.IdentifyPayload
import com.myunidays.segmenkt.integrations.Integration
import com.myunidays.segmenkt.integrations.IntegrationFactory
import com.myunidays.segmenkt.integrations.ScreenPayload
import com.myunidays.segmenkt.integrations.TrackPayload

actual class FirebaseIntegration : Integration<FirebaseIntegration> {
override fun identify(identifyPayload: IdentifyPayload) {
}
override fun group(groupPayload: GroupPayload) {
}
override fun track(trackPayload: TrackPayload) {
}
override fun alias(aliasPayload: AliasPayload) {
}
override fun screen(screenPayload: ScreenPayload) {
}
override fun flush() {
}
override fun reset() {
}

override fun debug(debug: Boolean) {
}

actual companion object {
actual fun factory(delegate: Any?, deeplinkHandler: Any?): IntegrationFactory = TODO()
}
}

0 comments on commit 1a96d79

Please sign in to comment.