私は現在、テストのためにipaを友達に送っています。面白いことに、私のテスターの1人は、iPhone4を使用してIOS5を実行していた彼女の電話に保存されている彼女の写真を見ることができました。
別の2人のテスター:1人はiPhone 4(IOS 4.3.3)とiPhone 3GS(IOS 5.0.1)を持っており、どちらも自分の携帯電話に保存されている写真を見ることができません。
これらは私が使用したコードです:
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
void (^assetEnumerator)(ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result != NULL) {
//NSLog(@"See Asset: %@", @"ggg");
[assets addObject:result];
}
};
NSLog(@"location = %i length = %i ", range->location, range->length );
void (^assetGroupEnumerator)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
NSRange *datarange = malloc(sizeof(NSRange));
range->total = [group numberOfAssets];
datarange->location = [group numberOfAssets] - range->location - range->length;
datarange->length = range->length;
NSLog(@" total = %i", range->total);
int location = [group numberOfAssets] - range->location - range->length;
if (location < 0)
{
datarange->location = 0;
datarange->length = [group numberOfAssets] - range->location;
}
NSIndexSet *indexset = [ [NSIndexSet alloc] initWithIndexesInRange:*datarange];
[group enumerateAssetsAtIndexes:indexset options:NULL
usingBlock:assetEnumerator];
[indexset release];
free(datarange);
[self loadAssetToScrollView:assets];
}
};
[assets release];
assets = [[NSMutableArray alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:assetGroupEnumerator
failureBlock: ^(NSError *error) {
NSLog(@"Failure");
}];
[library release];
他のスレッドで非同期のことについて誰かが言っているのを見ましたが、そうであるかどうかはわかりません。彼は、dispatch_asyncを列挙グループブロックに入れると言います。
誰かが何が悪いのか知っていますか?
さらに、iOS 4.3.3のテスターの1人は、[一般]-> [設定]で位置情報サービスを有効にした後、自分の写真を表示できます。なぜそれを有効にしなければならないのですか?アプリケーションを使用するユーザーにとって非常に邪魔になるため、コードで有効にできますか?