Our last push messages are sent 2 times or 3 times to some customers.
We found that some registration tokens (iOS devices) were targeted during those sendouts. These are registered with same token but different Experience cloud Id (ECID) in ACS.
We are following implementation rules from https://github.com/Adobe-Marketing-Cloud/acp-sdks
pod 'ACPCore', '~> 2.0' ...
How it could happen ?
We don't manipulate privacy status from Mobile SDK, as it described here:
When the Mobile SDK privacy status is set to Opt-out, and the ECID is removed, a new unique visitor ID (ECID) is generated when the user sets the global privacy status to Opt-In.
But I have a guess - such thing could happen when we call Target.resetExperience:
According to the docs:
This API resets the user's experience by removing the visitor identifiers and resetting the Target session.
Invoking this API also removes previously set Target user ID and custom visitor IDs, Target Edge Host, and the session information from persistent storage.
We call this method each time app is loaded to update Target with customer id later when user logged in.
The Mobile SDK generates a unique visitor ID when the app is installed.
This ECID is stored in persistent memory on the mobile device and is sent with every hit.
The ECID is removed when the user uninstalls the app or when the user sets the Mobile SDK global privacy status to Opt-out.
When I was testing, I didn't notice ECID change after calling Target.resetExperience, it was the same ECID.
Only uninstalling the app would lead to ECID change.
Is there a chance that resetExperience method could cause ECID regeneration at some point, maybe in a month/some period?