按需资源应用程序细化
On Demand Resource App Thinning
我一直在用图片本地化,想用点播资源的概念。
我想实现这一点,如果用户选择英语,应用程序将显示与英语相关的图像,此时我只想下载英语图像,而不是使用点播资源下载其他语言图像。
这是我试过的:
NSSet *tags = [[NSSet alloc] initWithObjects:@"english", @"france", @"italy", nil];
NSLog(@"tags:%@", tags);
NSBundleResourceRequest *request = [[NSBundleResourceRequest alloc] initWithTags:tags];
[request conditionallyBeginAccessingResourcesWithCompletionHandler:^(BOOL resourcesAvailable) {
if (resourcesAvailable) {
[self.img setImage:[UIImage imageNamed:NSLocalizedString(@"imageName", nil)]];
}
else {
[request beginAccessingResourcesWithCompletionHandler:^(NSError * _Nullable error) {
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
if(error == nil) {
[self.img setImage:[UIImage imageNamed:NSLocalizedString(@"imageName", nil)]];
}
else {
NSLog(@"the error is: %@", error);
}
}];
}];
}
}];
[request endAccessingResources];
当我使用它时,所有资源都是在使用英语作为我的语言时下载的。如果有人可以帮助我,那将是很大的帮助。
您正在请求标签 english
、france
和 italy
,因此您将获得所有标记为 english
的资源,所有标记为 france
,以及所有标记为 italy
.
的资源
如果您只想请求一个标签的资源,请仅在您的 NSBundleResourceRequest
中包含该标签。
您应该检查用户的当前语言:
NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];
然后select你要下载的标签:(现在默认是英文)
NSString *tagString = @"english";
if( [language isEqualToString:@"fr"] ){
tagString = @"france";
} else if( [language isEqualToString:@"it"] ){
tagString = @"italy";
}
NSSet *tags = [[NSSet alloc] initWithObjects:tagString, nil];
我一直在用图片本地化,想用点播资源的概念。 我想实现这一点,如果用户选择英语,应用程序将显示与英语相关的图像,此时我只想下载英语图像,而不是使用点播资源下载其他语言图像。 这是我试过的:
NSSet *tags = [[NSSet alloc] initWithObjects:@"english", @"france", @"italy", nil];
NSLog(@"tags:%@", tags);
NSBundleResourceRequest *request = [[NSBundleResourceRequest alloc] initWithTags:tags];
[request conditionallyBeginAccessingResourcesWithCompletionHandler:^(BOOL resourcesAvailable) {
if (resourcesAvailable) {
[self.img setImage:[UIImage imageNamed:NSLocalizedString(@"imageName", nil)]];
}
else {
[request beginAccessingResourcesWithCompletionHandler:^(NSError * _Nullable error) {
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
if(error == nil) {
[self.img setImage:[UIImage imageNamed:NSLocalizedString(@"imageName", nil)]];
}
else {
NSLog(@"the error is: %@", error);
}
}];
}];
}
}];
[request endAccessingResources];
当我使用它时,所有资源都是在使用英语作为我的语言时下载的。如果有人可以帮助我,那将是很大的帮助。
您正在请求标签 english
、france
和 italy
,因此您将获得所有标记为 english
的资源,所有标记为 france
,以及所有标记为 italy
.
如果您只想请求一个标签的资源,请仅在您的 NSBundleResourceRequest
中包含该标签。
您应该检查用户的当前语言:
NSString* language = [[NSLocale preferredLanguages] objectAtIndex:0];
然后select你要下载的标签:(现在默认是英文)
NSString *tagString = @"english";
if( [language isEqualToString:@"fr"] ){
tagString = @"france";
} else if( [language isEqualToString:@"it"] ){
tagString = @"italy";
}
NSSet *tags = [[NSSet alloc] initWithObjects:tagString, nil];