【发布时间】:2014-11-18 12:27:15
【问题描述】:
我有一个应用内购买项目,费用为 1.99 英镑。我使用弹出窗口显示此价格,但是,当设备未连接到互联网时,它无法检索我的 IAP 价格,因此显示为空白。
我的 IAP 价格始终为 1.99 英镑。当设备未连接到互联网时,如何为其他国家/地区显示此 IAP 层?
这是我目前获取 IAP 价格的方式:
_products = nil;
[[AppIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOOL success, NSArray *products) {
if (success) {
_products = products;
SKProduct * product = _products[0];
[[AppIAPHelper sharedInstance] productPurchased:product.productIdentifier];
NSNumberFormatter *_priceFormatter = [[NSNumberFormatter alloc] init];
[_priceFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[_priceFormatter setLocale:product.priceLocale];
priceString = [_priceFormatter stringFromNumber:product.price];
NSLog(@"Price string: %@",priceString);
}
}];
我尝试测试是否priceString.count <= 0(因此设备没有连接到互联网),然后执行:
NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:@"1.99"];
NSNumberFormatter *currencyFormat = [[NSNumberFormatter alloc] init];
NSLocale *locale = [NSLocale currentLocale];
[currencyFormat setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormat setLocale:locale];
NSLog(@"AmountSo with symbol: %@", [currencyFormat stringFromNumber:amount]);//Eg: $50.00
NSLog(@"Current Locale : %@", [locale localeIdentifier]);//Eg: en_US
但这只会将本地货币符号添加到amount。
问题是,我需要显示正确的价格等级。例如,1.99 美元兑换成英镑是 1.27。但 IAP 等级为 1.99 美元和 1.49 英镑。
所以基本上 - 如何在不请求 SKProduct 价格的情况下显示用户本地货币的 App Store IAP 价格等级(如果用户未连接到互联网)? 谢谢。
【问题讨论】:
-
不要假设您的 IAP 将始终为 1.99。你可能会改变主意,或者苹果有一天会改变价格。正如“remus”在他们的回答中所问的那样,为什么要这样做?如果应用无法访问 Internet,则不应向用户显示任何有关 IAP 的信息,因为如果没有 Internet 访问权限,您将无法执行任何 IAP。
标签: ios objective-c cocoa-touch in-app-purchase