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

上一篇笔记

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

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


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

 #import <StoreKit/StoreKit.h>

第二步 product identifier存在哪里?

  • 可以保存在app bundle中

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

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <array>
      <string>com.example.level1</string>
      <string>com.example.level2</string>
      <string>com.example.rocket_car</string>
    </array>
    </plist>
    

如果使用自己的服务器, 可以传输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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 首先感谢原创作者:Fredericshihe大家自己喜好决定,但我不敢保证将来不会出问题,但是我敢保证不会白苹果或...
    MdWhat阅读 10,328评论 0 6
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 秋收时节,贵州省黔东南苗族侗族自治州榕江、从江县两县交界的月亮山梯田。月亮山梯田分布在8个乡镇,规模上万亩,延绵数...
    人人众娱乐阅读 524评论 2 3
  • 一个人走在城市的夜路中,没有路灯不敢走,但农村的夜路是漆黑的,敢走,别人也看不到你。
    昵称也不能重复不像话阅读 76评论 0 0
  • 最近室友在搞代购,天天朋友圈里面各种攻略。说实话,有这样一个朋友,是件可喜可悲的事情。每天被各种饱含干货的代购小知...
    翻滚的潘潘阅读 309评论 0 2