I have an app in which I have implemented login, logout and some customized actions. There are certain actions that can be performed only when user is logged in but if the user deletes the app after he login and without logging out, then there is no way that I can let other users know that he is no more a user and all the actions that are associated with login should be done only after this user installs app again and logs in.
Is there any method which gets invoked before the app deletes ? So that I can trigger the logout method in that function. Is there any way where in I can use delegate methods or notifications to logout user when he is deleting the app from his device ?
Unfortunately there are no methods called when app is removed.
I'd prefer a solution where you log out the user when he quits the app and do a quiet login when he opens the app again without noticing that he was logged out. Therefore you need to store the credentials.
So you can ensure that the user is always logged out when he doesn't use the app.
But in my opinion you should change your backend so that it doesn't matter if the user has installed the app or not. But this may depend on your use case.
There is no way to know when a user has deleted their app. You can use NSUserDefaults
to store their login name once they're logged in and check for it's existence when you attempt to use services they have to be logged in to use. If the app has been deleted and reinstalled (or a new install) the NSUserDefaults value will be nil, if they're an established user it will be equal to their username.
[[NSUserDefaults standardUserDefaults] setObject:@"the_user_name" forKey:@"kUsername"];
[[NSUserDefaults standardUserDefaults] synchronize];