iOS is not asking user for Photo Library Permission anymore. Even when I deleted the app from the device. This also happens on Simulator.
switch ([ALAssetsLibrary authorizationStatus])
{
case ALAuthorizationStatusAuthorized:
RPMLog(@"authorized");
break;
case ALAuthorizationStatusDenied:
RPMLog(@"denied");
break;
case ALAuthorizationStatusNotDetermined:
RPMLog(@"not determined");
break;
case ALAuthorizationStatusRestricted:
RPMLog(@"restricted");
break;
}
I'm already authorized when I install the app for the first time. Prior to this, there's no other event or screen that asks for the photos to trigger the user prompt.
Then I request the numberOfAssets in SavedPhotos and get it without the access prompt:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
if (!group) return;
UIActionSheet *actionSheet = nil;
if (([group numberOfAssets] > 0))
{
actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) destructiveButtonTitle:nil otherButtonTitles:NSLocalizedString(@"Take new photo", nil), NSLocalizedString(@"Use last photo taken", nil), NSLocalizedString(@"Choose existing", nil), nil];
}
else
{
actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:NSLocalizedString(@"Cancel", nil) destructiveButtonTitle:nil otherButtonTitles:NSLocalizedString(@"Take new photo", nil), NSLocalizedString(@"Choose existing", nil), nil];
}
actionSheet.actionSheetStyle = UIActionSheetStyleBlackTranslucent;
[actionSheet showFromTabBar:self.tabBar];
[TestFlight passCheckpoint:@"New Look: Tab Bar"];
} failureBlock:^(NSError *error) {
NSAssert(!error, [error description]);
}];
As the question is for Photo Library permissions, there is other way without changing the system clock and turning the device off.
You can just go to "Settings" app
This will make the apps ask for photo library, location and other permissions again.
You can check this permission by two types -
you can do Simulator/Reset Content and Settings.
You can change date, at least difference should be 24 hours.
but first uninstall app from device then restart then apply this thing then it will work.
If you are using the iOS Simulator, resetting it using Simulator/Reset Content and Settings... seems to reset this setting. Of course, you'll then need to reinstall your app onto it.
Restting via the settings app is difficult to automate. We use
simctl
to reset the simulators content and settings in an automated fashion to reset the permissions dialog. This will require re-installing the app in the simulator, but againsimctl
can accomplish this.You just need to follow bellow point no need to reinstall or delete app.
Hope you got help.
What is happening is iOS is saving the permission granted to your app mapped to the bundle ID, if the app is deleted this data persists for 24 hours, this avoids re prompting the user if they reinstall the app (perhaps after mistakingly deleting an app).
This also happens for Push Notification prompts.
As a workaround, I quote Apple concerning the Push Notifications:
Source: Apple Technical Note TN2265