A key feature of Amazon’s in-app purchasing (IAP) solution is tracking entitlements and subscriptions for users. This allows you to provide a seamless user experience when a user enjoys your app on multiple devices. Best of all, it does so without requiring you to implement any server-side code.
You have the option of implementing your own user management on top of Amazon’s existing user management. In such cases, while the device remains registered to the same Amazon user account, the app may allow the user to create an additional internal login, nickname, or any other means by which users can log in and out of the app. For apps with a user base that spans multiple OSes, this provides a means of tracking the users’ entitlements and subscription using a 3rd party user ID that is not platform dependent. This way, when a user starts the app and logs in with their credentials, the app is able to poll its own server for that user’s entitlements no matter which device or platform the app is running on.
On Amazon, an in-app item belongs to the Amazon user that bought the item. With that in mind, apps that both use Amazon In-App Purchasing and manage users internally have two sets of entitlements: one for the internal user and one for the Amazon user. These two sets might be equal, partially intersect, fully contained, or even disjointed.
The best practice in this situation, which provides for the most consistent user experience, is to entitle the logged-in user to the union of both sets. In other words, the user should have access to whatever they are entitled to as the internal-user in addition to their Amazon entitlements (see image below):