7

重複の可能性:
AlAssetLibrary で位置情報サービスを回避するにはどうすればよいですか? 位置情報サービスを使用せずに AlAssetLibrary を使用してファイルを取得できますか?

こんにちは、私は iphone 開発と obj-c の初心者です。アプリケーションで「ALAssetLibrary」を使用して、フォト ライブラリから画像を取得しています。" ALAssetPropertyLocation "プロパティ キーは、発信者に対して位置情報サービスが有効になっている場合にのみ使用できることを確認しました。アセットの位置情報を取得するためのキーです。ただし、「ALAssetPropertyLocation」Property は使用していません。ALAssetPropertyURLs のみを使用しています。

アプリケーションを新しいデバイスに展開しようとすると、「位置情報サービスが必要です..」というメッセージ ボックスが表示され、「ALAssetPropertyLocation」プロパティを非表示にできますか?

誰かが私の問題にアプローチするための正しい方法で私を助けてくれれば、本当に感謝しています.

前もって感謝します :)

これは私のコードです:

//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];      
}
4

1 に答える 1

6

「位置情報サービス」を有効にすることは、AssetsLibrary を使用するための要件です。その理由は、Photo-Library 内のすべての写真/ビデオに地理データが含まれている可能性があるためです。このデータは、ALAssetPropertyURL を介して利用できるだけでなく、アセットから未加工データを (ALAssetsRepresentation の getBytes:fromOffset:length:error: メソッドを使用して) 読み取った場合にも利用できます。生の画像データから地理メタデータを取り除く方法がないため (位置情報サービスが無効になっている場合)、AssetsLibrary を使用するために「位置情報サービス」を必須にするという設計上の決定がなされたと思います。

この要件は、ユーザーを混乱させる可能性があります。したがって、次の 2 つのことを行う必要があります。

1) ユーザーが位置情報サービスへのアクセスを拒否した場合は、アプリがこのアクセスを必要としている間は明確なメッセージを提示し、アプリは現在の位置や GPS/データを実際には特定しないことを示します。

2) ユーザーが最初のダイアログで「いいえ」を押したら、位置情報サービスを有効にする方法を明確に表示します。

乾杯、

ヘンドリック

于 2011-05-05T09:58:06.980 に答える