用于访问照片的iOS权限无法在设备上运行

时间:2015-10-27 07:28:49

标签: ios objective-c permissions photos camera-roll

我想将图像保存到ios相机胶卷中。它在模拟器中运行良好。

但在实际的iPhone上,我没有得到这样的权限提示:

-- image --

- (void)saveImageToCameraRoll:(CDVInvokedUrlCommand*)command
{
    CDVPluginResult* pluginResult = nil;

    NSString *filename = [command argumentAtIndex:0];
    NSString *tmpFile = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", filename]];


    UIImage *image = nil;
    image = [UIImage imageWithContentsOfFile:tmpFile];


    ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];

    if(status != ALAuthorizationStatusAuthorized || image == nil){
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"noaccess"];
    }
    else{
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:@"saved"];
    }

    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}

有什么方法可以强迫它吗?

感谢。欢呼声。

3 个答案:

答案 0 :(得分:2)

如果您拒绝了该权限,则无法通过强制提示来获取该提示。您可以检查您是否可以访问。如果您没有访问权限,则可以要求用户根据您的应用程序在设置应用中授予权限..

喜欢这个。

ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];

if (status != ALAuthorizationStatusAuthorized) {
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Attention" message:@"Please give this app permission to access your photo library in your settings app!" delegate:nil cancelButtonTitle:@"Close" otherButtonTitles:nil, nil];
    [alert show];
}

答案 1 :(得分:1)

iOS只要求一次权限。即使您重新安装该应用程序,也不会再次询问该权限,它只会使用旧的首选项。

要强制iOS请求权限,请卸载您的应用程序并提前几天更改日期并重新安装。您将再次看到安全提示。

答案 2 :(得分:0)

一旦用户允许其获得许可,iOS除非您再次卸载并安装,否则不会再次请求相同的权限许可。

或者,如果您想检查权限,请转到设置,看看您的应用是否已启用照片的权限。