In my app (a paid app without in-app purchase) i want to give a "present" to every new user. The "present" is a bonus item (the app isn't a game, this is only an example) that i'll unlock only one time each app purchase. So i have some alternative:
1. Identify the new purchase by new user registration in my server
This is not a real solution because an user can register multiple times with different emails and get multiple bonus items with only one purchase.
2. Identify the new purchase by user's phone number
This is not a solution because i can't get user's phone with public API
3. Identify the app purchase by the transaction id
This is not a solution because i can't get the transaction id of an app purchase, it is possible only for in-app purchase.
Some of the answers i have found are old, so maybe today something is changed. My question there is a way today to identify in an unique way an app download/purchase without system that use external service (like sms) ?