iOS内置付费开发笔记二(获取产品信息)

接上一篇笔记

编程步骤之获取并显示产品信息

购物的第一步是让用户看到商品,装潢门面比什么都重要!显示商品要尽量迅速(App Store的查询速度普遍要2-3秒,要不要建立自己的服务器?),不能显示缺货的商品(看到心仪的产品,商家告诉你缺货, 多么痛的领悟!),Store UI要人性,价格显示要到位...
Apple官网给出的流程图如下:


第一步 在工程中引入storekit.framework并且在文件中

 #import 

第二步 product identifier存在哪里?

  • 可以保存在app bundle中

  • 也可以保存在自己的服务器上
    以下是Apple给出的存储在本地的一个例子(product_ids.plist)。

    
    
    
    
      com.example.level1
      com.example.level2
      com.example.rocket_car
    
    
    

如果使用自己的服务器, 可以传输JSON格式的文件, Apple同样给出了相关的例子:

  [
  "com.example.level1",
  "com.example.level2",
  "com.example.rocket_car"
  ]

第三步 读取本地product_ids.plist文件

NSURL *url = [[NSBundle mainBundle] URLForResource:@"product_ids" withExtension:@"plist"];
NSArray *productIdentifiers = [NSArray arrayWithContentsOfURL:url];

第四步 根据Product IDs从App Store获取产品的信息

- (void)validateProductIdentifiers:(NSArray *)productIdentifiers{
    SKProductsRequest *productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productIdentifiers]];
    productsRequest.delegate = self;
    [productsRequest start];
}

// SKProductsRequestDelegate protocol method
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response{
    self.products = response.products;
    for (NSString *invalidIdentifier in response.invalidProductIdentifiers) {
    // Handle any invalid product identifiers. 处理有效的ProductIdentifiers, 缺货的,错误的不能有!
    }
    [self displayStoreUI]; // Custom method 显示Store的UI
}

第五步 显示购买界面UI

5.1 判断用户是否关闭了内置付费,如果关闭了,就提示一下

if ([SKPaymentQueue canMakePayments]) {
   [self displayStoreUI]; // Custom method
} else {
    NSLog(@"用户禁止应用内付费购买.");
}

5.2 购买界面UI上价格要显示的清楚明了

NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[numberFormatter setLocale:product.priceLocale];
NSString *formattedPrice = [numberFormatter stringFromNumber:product.price];

你可能感兴趣的:(iOS内置付费开发笔记二(获取产品信息))