Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

iOS stopped asking user for Photo Library Permission

Tags:

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]); }]; 
like image 895
Lucien Avatar asked Jan 10 '13 17:01

Lucien


People also ask

How do I enable photo permissions on iPhone?

Mobile. Select 'Settings > LINE WORKS > Photos' on your device. Change the access permission in 'ALLOW PHOTOS ACCESS'. For the iOS 14 or later versions, you can select the access range from 'Selected Photos' and 'All Photos'.

How do I give permission to photo library?

Slide the “Camera” toggle from white to green to allow access to camera. Tap “Photos” to open your photo permission settings. Select one of the three options: Selected Photos, All Photos, or None.


2 Answers

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

(General > Reset > Reset Location & Privacy).

This will make the apps ask for photo library, location and other permissions again.

like image 162
jcesarmobile Avatar answered Oct 24 '22 05:10

jcesarmobile


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:

Resetting the Push Notifications Permissions Alert on iOS

The first time a push-enabled app registers for push notifications, iOS asks the user if they wish to receive notifications for that app. Once the user has responded to this alert it is not presented again unless the device is restored or the app has been uninstalled for at least a day.

If you want to simulate a first-time run of your app, you can leave the app uninstalled for a day. You can achieve the latter without actually waiting a day by setting the system clock forward a day or more, turning the device off completely, then turning the device back on.

Source: Apple Technical Note TN2265

like image 30
Daniel Avatar answered Oct 24 '22 03:10

Daniel