We calculate uninstall by sending a silent push daily to all users. They of course don't see or interact with the silent push. After we send this silent push, we listen for the response from Apple & Google, specifically listening for any errors. If we do receive an error that this push failed to deliver, this means 1 of 2 things happened, either 1) the user opt-ed out of push completely for your app or 2) they uninstalled the application. With the exception of iOS7, users do not have to be opted in to receive the silent push.