2011-04-20 8 views
7

Possible Duplicate:
How can i avoid Location service in AlAssetLibrary? Can i retrieve files using AlAssetLibrary without using Location Service?¿Cómo puedo evitar el servicio de ubicación de AlassetLibrary?

Hola a todos, soy un novato en el desarrollo del iPhone y obj-c. Estoy usando "ALAssetLibrary" en mi aplicación para recuperar imágenes de Photo Library. Identifiqué que "ALAssetPropertyLocation" Clave de propiedad solo está disponible si los servicios de ubicación están habilitados para la persona que llama. es la clave para recuperar la información de ubicación del activo. Pero no estoy usando la propiedad "ALAssetPropertyLocation". Solo estoy usando ALAssetPropertyURLs.

cada vez que estoy tratando de desplegar mi aplicación en un dispositivo nuevo hay un cuadro de mensaje con el mensaje "Localización de Servicios necesarios .." puedo capaz de ocultar el "ALAssetPropertyLocation" Propiedad?

Realmente agradecería que alguien me ayude de la forma correcta para abordar mi problema, y ​​si es posible, cualquier código de muestra para comenzar.

gracias de antemano :)

esta es mi Código:

//Getting image url from dictionary according to the user input 
NSURL *imageurl = [dict objectForKey: [youSaid text]]; 

//Getting asset from url 
typedef void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *asset); 
typedef void (^ALAssetsLibraryAccessFailureBlock)(NSError *error);  
ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *myasset) 
{ 
    ALAssetRepresentation *rep = [myasset defaultRepresentation]; 
    CGImageRef iref = [rep fullResolutionImage]; 
    //Setting asset image to image view according to the image url 
    [imageview setImage:[UIImage imageWithCGImage:iref]];   
}; 
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror) 
{ 
    NSLog(@"Error, cant get image - %@",[myerror localizedDescription]); 
}; 

if(imageurl != nil) 
{ 
ALAssetsLibrary *assetLibrary=[[ALAssetsLibrary alloc] init]; 
[assetLibrary assetForURL:imageurl resultBlock:resultblock failureBlock:failureblock];  
} 

Respuesta

6

permitiendo a los servicios de localización "" es un requisito para utilizar la AssetsLibrary. La razón es que cualquier foto/video en la Biblioteca de fotos puede contener geodatos. Esta información no solo está disponible a través de ALAssetPropertyURLs, sino también si lee los datos brutos del activo (mediante el uso de getBytes: fromOffset: length: error: Method of ALAsRepresentation). Porque no hay forma de quitar los metadatos geo de los datos de imágenes sin formato (en caso de que los servicios de localización estén deshabilitados), supongo que la decisión de diseño fue hecha para hacer que los "servicios de localización" sean obligatorios para usar AssetsLibrary.

Este requisito puede ser confuso para el usuario. Entonces necesita hacer dos cosas:

1) Si el usuario niega el acceso a los servicios de ubicación, presente un mensaje claro mientras su aplicación necesita este acceso y que la aplicación no determina realmente la posición actual o cualquier GPS/datos .

2) Mostrar instrucciones claras de cómo habilitar los servicios de localización, una vez que el usuario ha presionado "NO" en el cuadro de diálogo inicial.

Saludos,

Hendrik

+0

Ubicación Servicios obligatorios por lo que parece la única manera de acceder a las fotos/url caminos? Esto es sádico – AlvinfromDiaspar

Cuestiones relacionadas