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