美文网首页
内购和广告

内购和广告

作者: 翻这个墙 | 来源:发表于2017-11-23 11:24 被阅读33次

    内购和广告

    1. 什么是内购?

        内购就是指,在APP内购买某些产品
            如果你在App中销售的商品,跟App有关(例如植物大战僵尸中的道具,需要开启关卡,拥有某种技能等等).那么,苹果规定,必须通过内购方式购买.
        内购分成: 3 : 7
    

    2. 为什么做内购?

        1. 开发者创收的一种模式: free + 内购
        2. 某些业务必须使用内购
    

    3. 内购的产品类型?

    1. 非消耗品(Nonconsumable)

       买了就一直有,不会消耗,例如开启关卡
       一般指的是在游戏中一次性购买并拥有永久访问权的物品或服务。非消耗品物品可以被用户再次下载,并且能够在用户的所有设备上使用
      
    2. 消耗品(Consumable)

       买了就用,用了就没
       专为支持可消耗的物品或服务设计的,消耗品购买不可被再次下载,根据其特点,消耗品不能在用户的设备之间跨设备使用,除非自定义服务在用户的账号之间共享这些信息
      
    3. 其他类型

       > 以下三种类别在iBooks中使用,目前iBooks不支持大陆市场
           免费订阅(Free subscriptions)
           自动续费订阅(Auto-renewing subscriptions)
           非自动续费订阅(Nonrenewing subscriptions)
      
    4. 内购的流程
      类似于商场购物流程, 参照下图

      内购流程图.png
    1. 内购实例

       1. 在App管理中心,创建一个App,并填写App信息
           注意: 此处创建的App时,填写套装ID,时,必须选择可以内购的套装ID
      
       2. 创建内购商品,并添加到App,指定此App,可以销售哪些商品
           注意: 创建内购商品的前提,是你已经填写了税务/银行信息,否则的话,无法创建
      
       3. 添加用于测试内购的测试账号
      
       4. 创建App项目,开始开发
      
       5. 代码实现内购流程
      
           (1) 从APP服务器请求数据列表, 并行苹果服务器请求可以销售的商品列表
      
          [XXXDataTool getGoodsWithResult:^(NSArray *goods) {
              NSArray *ids = [goods valueForKeyPath:@"goodID"];
              // 请求哪些商品可以卖
              NSSet *idSet = [NSSet setWithArray:ids];
              SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:idSet];
              request.delegate = self;
              [request start];
          }];
      
       (2) 在代理方法中获取并显示可销售列表
      
      
          - (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
          {
              self.products = response.products;
          }
      

      (3) 用户购买商品, 并监听商品交易状态

          // 取出商品
          SKProduct *product = self.products[indexPath.row];
      
          // 购买商品
          SKPayment *payMent = [SKPayment paymentWithProduct:product];
      
          // 把凭证加入到队列, 等待用户付款
          [[SKPaymentQueue defaultQueue] addPayment:payMent];
      
          // 设置监听者, 监听整个交易状态
          [[SKPaymentQueue defaultQueue] addTransactionObserver:self];
      

      (4) 实现监听交易状态方法

          // 交易状态发生变化时调用
          - (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions
          {
      
          [transactions enumerateObjectsUsingBlock:^(SKPaymentTransaction * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop)
          {
      
              //  SKPayment *payment , 小票 , 包含商品
              //  SKPaymentTransactionState transactionState 交易状态
          switch (obj.transactionState) {
              case  SKPaymentTransactionStatePurchasing:
                  NSLog(@"正在付款");
              break;
      
              case  SKPaymentTransactionStatePurchased:
                  {
                      NSLog(@"付款结束");
                      [queue finishTransaction:obj];
                      break;
                  }
              case  SKPaymentTransactionStateFailed:
                  {
                      NSLog(@"交易失败");
                      [queue finishTransaction:obj];
                      break;
                  }
              case  SKPaymentTransactionStateRestored:
                  NSLog(@"恢复购买");
                  break;
              case SKPaymentTransactionStateDeferred:
                  NSLog(@"推迟付款");
                  break;
      
              default:
                  break;
          }
         }];
       }
      
    
    
    <!--**具体步骤, 请参照步骤截图详解**-->
    
    

    相关文章

      网友评论

          本文标题:内购和广告

          本文链接:https://www.haomeiwen.com/subject/zjfzvxtx.html