@@ -21,8 +21,10 @@ import com.mparticle.kits.KitIntegration.CommerceListener
2121import com.mparticle.kits.KitIntegration.EventListener
2222import com.mparticle.kits.KitIntegration.PushListener
2323import com.mparticle.kits.KitIntegration.UserAttributeListener
24+ import com.singular.sdk.SDIDAccessorHandler
2425import com.singular.sdk.Singular
2526import com.singular.sdk.SingularConfig
27+ import com.singular.sdk.SingularDeviceAttributionHandler
2628import com.singular.sdk.internal.SingularLog
2729import org.json.JSONException
2830import org.json.JSONObject
@@ -31,6 +33,10 @@ import java.math.BigDecimal
3133open class SingularKit : KitIntegration (), ActivityListener, EventListener,
3234 PushListener , CommerceListener , ApplicationStateListener , UserAttributeListener ,
3335 AttributeListener {
36+
37+ interface DeviceAttributionCallback : SingularDeviceAttributionHandler
38+ interface SdidAccessorHandler : SDIDAccessorHandler
39+
3440 private val logger = SingularLog .getLogger(Singular ::class .java.simpleName)
3541 private var isInitialized = false
3642 private var deviceToken: String? = null
@@ -83,6 +89,14 @@ open class SingularKit : KitIntegration(), ActivityListener, EventListener,
8389 val linkParams = JSONObject ()
8490 linkParams.put(PASSTHROUGH , singularLinkParams.passthrough)
8591 linkParams.put(IS_DEFERRED , singularLinkParams.isDeferred)
92+ if (singularLinkParams.urlParameters != null ) {
93+ linkParams.put(QUERY_PARAMS ,
94+ (singularLinkParams.urlParameters as Map <* , * >? )?.let {
95+ JSONObject (
96+ it
97+ )
98+ })
99+ }
86100 attributionResult.parameters = linkParams
87101 } catch (e: JSONException ) {
88102 e.printStackTrace()
@@ -96,6 +110,11 @@ open class SingularKit : KitIntegration(), ActivityListener, EventListener,
96110 config.withLoggingEnabled()
97111 config.withLogLevel(Log .DEBUG )
98112 }
113+
114+ config.deviceAttributionHandler = deviceAttributionCallback;
115+
116+ config.withCustomSdid(customSdid, sdidAccessorHandler);
117+
99118 Singular .setWrapperNameAndVersion(MPARTICLE_WRAPPER_NAME , MPARTICLE_WRAPPER_VERSION )
100119 config
101120 } catch (ex: Exception ) {
@@ -422,12 +441,27 @@ open class SingularKit : KitIntegration(), ActivityListener, EventListener,
422441 // Singular Link Consts
423442 private const val PASSTHROUGH = " passthrough"
424443 private const val IS_DEFERRED = " is_deferred"
444+ private const val QUERY_PARAMS = " query_params"
425445
426446 // Wrapper Consts
427447 private const val MPARTICLE_WRAPPER_NAME = " mParticle"
428448 private const val MPARTICLE_WRAPPER_VERSION = " 1.0.1"
429449 private const val CANT_BUILD_SINGULAR_CONFIG_MESSAGE =
430450 " Can't build Singular Config in the mParticle Kit"
431451 private var singularSettings: Map <String , String >? = null
452+
453+ private var deviceAttributionCallback: DeviceAttributionCallback ? = null ;
454+ private var customSdid: String? = null ;
455+ private var sdidAccessorHandler: SdidAccessorHandler ? = null ;
456+
457+ @JvmStatic fun setDeviceAttributionCallback (deviceAttributionCallback : DeviceAttributionCallback ? ) {
458+ this .deviceAttributionCallback = deviceAttributionCallback;
459+ }
460+
461+ @JvmStatic fun setCustomSDID (customSDID : String? , sdidAccessorHandler : SdidAccessorHandler ? ) {
462+ this .customSdid = customSDID
463+ this .sdidAccessorHandler = sdidAccessorHandler
464+ }
465+
432466 }
433467}
0 commit comments