Luc*_*ien 21 objective-c ios alassetslibrary
iOS不再要求用户提供照片库权限.即使我从设备中删除了应用程序.这也发生在模拟器上.
switch ([ALAssetsLibrary authorizationStatus])
{
case ALAuthorizationStatusAuthorized:
RPMLog(@"authorized");
break;
case ALAuthorizationStatusDenied:
RPMLog(@"denied");
break;
case ALAuthorizationStatusNotDetermined:
RPMLog(@"not determined");
break;
case ALAuthorizationStatusRestricted:
RPMLog(@"restricted");
break;
}
Run Code Online (Sandbox Code Playgroud)
我第一次安装应用程序时已经获得授权.在此之前,没有其他事件或屏幕要求照片触发用户提示.
然后我在SavedPhotos中请求numberOfAssets并在没有访问提示的情况下获取它:
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]);
}];
Run Code Online (Sandbox Code Playgroud)
jce*_*ile 35
由于问题是照片库权限,还有其他方法,无需更改系统时钟和关闭设备.
您可以转到"设置"应用
(常规>重置>重置位置和隐私).
这将使应用再次要求提供照片库,位置和其他权限.
Dan*_*iel 26
发生的事情是iOS正在保存授予您的应用程序映射到捆绑包ID的权限,如果删除该应用程序此数据会持续24小时,这可以避免在用户重新安装应用程序时重新提示用户(可能在错误地删除应用程序后) .
推送通知提示也会发生这种情况.
作为一种解决方法,我引用Apple关于推送通知:
重置iOS上的推送通知权限警报
第一次启用推送的应用程序注册推送通知时,iOS会询问用户是否希望接收该应用程序的通知.一旦用户响应此警报,除非设备已恢复或应用程序已卸载至少一天,否则不会再次显示该警报.
如果您想模拟首次运行的应用,可以将应用程序卸载一天.通过将系统时钟向前设置一天或更长时间,完全关闭设备,然后重新打开设备,您可以实现后者而无需实际等待一天.
资料来源:Apple Technical Note TN2265
| 归档时间: |
|
| 查看次数: |
9726 次 |
| 最近记录: |