Ios 应用内购买-向用户提供当前价格
我有两个视图控制器。其中一个显示了可用的应用程序内购买。当用户选择其中一个时,它将显示一个新的视图控制器,其中包含购买的详细信息和“购买”按钮 我将代码从第一个视图传递到第二个视图的方式如下:Ios 应用内购买-向用户提供当前价格,ios,xcode,in-app-purchase,skproduct,Ios,Xcode,In App Purchase,Skproduct,我有两个视图控制器。其中一个显示了可用的应用程序内购买。当用户选择其中一个时,它将显示一个新的视图控制器,其中包含购买的详细信息和“购买”按钮 我将代码从第一个视图传递到第二个视图的方式如下: -(IBAction)purchase1:(id)sender{ _purchasedController = [[iPadPurchasedViewController alloc] initWithNibName:nil bundle:nil]; _purchasedController.produc
-(IBAction)purchase1:(id)sender{
_purchasedController = [[iPadPurchasedViewController alloc] initWithNibName:nil bundle:nil];
_purchasedController.productID = @"xxxxx.xxxxx.xxxxx";
[self presentViewController:_purchasedController animated:YES completion:NULL];
[self.purchasedController getProductID:self];
}
因此,当用户选择一个按钮时,我将productID字符串传递给第二个ViewController。但是,我想在第一个视图控制器上向用户展示价格。有人能帮我吗?谢谢。编辑后的答案更完整: 在ViewController.h文件中,应该有
@interface ViewController : UIViewController <SKProductsRequestDelegate> {
NSArray *allProducts;
}
然后可以这样使用:
-(NSString*) getPriceForProductWithID:(NSString*)productID{
if(allProducts.count < 1) {
NSLog(@"Did not fetch products yet");
}
else {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
for(SKProduct * product in allProducts) {
if([product.productIdentifier isEqualToString:productID])
{
[numberFormatter setLocale:product.priceLocale];
NSString *priceString= [numberFormatter stringFromNumber:product.price];
NSLog(@"Product with ID: %@ has price: %@",product.productIdentifier, priceString);
return priceString;
}
}
}
return nil;
}
-(NSString*)getPriceForProductWithID:(NSString*)productID{
如果(所有产品计数<1){
NSLog(@“尚未获取产品”);
}
否则{
NSNumberFormatter*numberFormatter=[[NSNumberFormatter alloc]init];
NumberFormatterSetFormatterBehavior:NSNumberFormatterBehavior 10_4];
[NumberFormatterSetNumberStyle:NSNumberFormatterCurrencyStyle];
用于(SKProduct*所有产品中的产品){
if([product.productIdentifier IsequalString:productID])
{
[NumberFormatterSetLocale:product.priceLocale];
NSString*priceString=[NumberFormatterStringFromNumber:product.price];
NSLog(@“ID为%@的产品价格为%@”、Product.productIdentifier、priceString);
返回价格字符串;
}
}
}
返回零;
}
获取产品:
SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithObject:@"xxxxx"]];
如果要成功,将调用以下代理:
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
if (response.products == nil) {
NSLog(@"No product belonging to the app!");
}
if ([response.invalidProductIdentifiers count] != 0) {
NSLog(@"The following product indentifiers are invalid: %@",response.invalidProductIdentifiers);
}
for (SKProduct* prod in response.products) {
NSLog(@"Proce: %@",prod.price);
}
我希望这对你有用
重要提示:代码未经测试,我只是现在就写了…
祝你好运 您没有第一视图控制器中的价格信息吗?发送所有可用产品ID的SKProductsRequest,并存储返回的产品数组。然后,您可以使用该数组查找要在任何视图控制器中显示的价格;但是现在,我需要把它们每一个都存储为一个产品,然后再计算房产价格,对吗?我该怎么做?谢谢。首先,我不知道为什么,但是-(void)productsRequest没有被调用!另外,我不明白,在这行中:对于(我的产品中的SKProduct*product),编译器如何知道“product”是我想要使用的产品?谢谢…调用SKProductsRequest的类是SKProductsRequest委托吗?然后您应该执行以下操作:SKProductsRequest请求=[[SKProductsRequest alloc]initWithProductIdentifiers:[NSSet setWithObject:@“xxxxx”];request.delegate=self;for()循环只遍历所有有效的产品并记录它们的id和价格。如果要查找特定的产品价格,请在循环中进行检查:如果([product.productIdentifier IsequalString:@“xxxxxx.xxxxx.xxxxx”]){/使用此产品*/}
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response {
if (response.products == nil) {
NSLog(@"No product belonging to the app!");
}
if ([response.invalidProductIdentifiers count] != 0) {
NSLog(@"The following product indentifiers are invalid: %@",response.invalidProductIdentifiers);
}
for (SKProduct* prod in response.products) {
NSLog(@"Proce: %@",prod.price);
}