Skip to content

Commit

Permalink
fix: advertising id being sent for Android application installed even…
Browse files Browse the repository at this point in the history
…ts using analytics-react-native-plugin-advertsing-id (#1015)

* fix: to show 'Queue restoration timeout' only once

* fix: advertising id being sent for Android application installed events

---------

Co-authored-by: Sunita Prajapati <>
  • Loading branch information
thesunita authored Oct 23, 2024
1 parent 1706ac5 commit e57dea5
Showing 1 changed file with 22 additions and 0 deletions.
22 changes: 22 additions & 0 deletions packages/plugins/plugin-advertising-id/src/AdvertisingIdPlugin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
getNativeModule,
ErrorType,
SegmentError,
SegmentEvent
} from '@segment/analytics-react-native';

import { Platform, NativeModule } from 'react-native';
Expand All @@ -15,6 +16,8 @@ type AdvertisingIDNativeModule = NativeModule & {

export class AdvertisingIdPlugin extends Plugin {
type = PluginType.enrichment;
queuedEvents: SegmentEvent[] = [];
advertisingId?: string = undefined;

configure(analytics: SegmentClient): void {
if (Platform.OS !== 'android') {
Expand All @@ -34,6 +37,7 @@ export class AdvertisingIdPlugin extends Plugin {
'LimitAdTrackingEnabled (Google Play Services) is enabled'
);
} else {
this.advertisingId = id
void this.setContext(id);
}
})
Expand All @@ -48,6 +52,16 @@ export class AdvertisingIdPlugin extends Plugin {
});
}

execute(event: SegmentEvent){

if (this.advertisingId === undefined) {
this.queuedEvents.push(event);
}else{
return event;
}
return;
}

async setContext(id: string): Promise<void> {
try {
await this.analytics?.context.set({
Expand All @@ -56,6 +70,7 @@ export class AdvertisingIdPlugin extends Plugin {
adTrackingEnabled: true,
},
});
this.sendQueued();
} catch (error) {
const message = 'AdvertisingID failed to set context';
this.analytics?.reportInternalError(
Expand All @@ -64,4 +79,11 @@ export class AdvertisingIdPlugin extends Plugin {
this.analytics?.logger.warn(`${message}: ${JSON.stringify(error)}`);
}
}

sendQueued() {
this.queuedEvents.forEach(event => {
void this.analytics?.process(event);
});
this.queuedEvents = [];
}
}

0 comments on commit e57dea5

Please sign in to comment.