This is expected. If you create a ProductDefinition without a store-specific ID, Unity IAP uses the product ID for both. They only differ when you set a separate store-specific ID, for example when your Apple and Google product IDs don't match.
How do I know if this is affecting me?
- Observing that ProductDefinition.ID and ProductDefinition.storeSpecificID have the same value when using Unity IAP with Apple in-app purchases.
- Uncertainty about whether it is normal or correct for ID and storeSpecificID to be identical.
Why does this happen?
Unity IAP’s ProductDefinition constructor, by default, sets both ID and storeSpecificID to the same value when a simple constructor is used or when the same product ID is used across all platforms. Differences only occur if the developer explicitly defines separate store-specific IDs for different stores (for example, using different identifiers for Apple and Google).
It is expected and correct behaviour for ProductDefinition.ID and ProductDefinition.storeSpecificID to be identical in Unity IAP when:
- The simple ProductDefinition constructor is used without specifying store-specific IDs.
- The same product ID is reused across all platforms (e.g., Apple and Google).
They will differ only if you explicitly assign different store-specific IDs per store (e.g., an internal ID like “gold_coins_100” and platform-specific IDs such as “com.app.gold100” for Apple and “gold_100” for Google). No further action is required if the values are equal under the default configuration.