苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡

简介: 苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡

苹果app上架-ios上架苹果商店app store 之苹果支付In - App Purchase内购配置-优雅草卓伊凡

配置苹果内购商品主要涉及在苹果开发者后台创建内购产品以及在应用内实现相关逻辑来展示和处理这些商品。以下是详细步骤:

一、在苹果开发者后台创建内购商品

  1. 登录并进入App配置页面
  • 登录苹果开发者中心,点击“App Store Connect”。
  • 选择你要配置内购的应用,进入应用详情页面。

找到应用

没有应用的话就点击添加应用

  1. 创建内购项目
  • 在应用详情页面,点击“功能”选项卡,然后选择“内购项目”。
  • 点击“+”按钮开始创建新的内购产品。
  1. 选择内购产品类型
  • 消耗型产品:用户购买后可多次使用,使用后即消耗,需再次购买。例如游戏中的虚拟货币、道具等。
  • 非消耗型产品:用户购买一次后可永久使用,通常用于解锁应用的高级功能,如去除广告、解锁特定内容等。
  • 自动续期订阅:按周期自动续订的订阅服务,如月度、年度会员。用户订阅后,到期前若未取消,将自动扣费续订。
  • 非续期订阅:提供一定期限的服务,到期后不会自动续订。例如特定时间段的课程订阅。

很明显我们的游戏的积分属于消耗性产品

  1. 填写内购产品信息
  • 产品ID:需使用唯一标识符,格式通常为反向域名形式,如com.example.yourapp.productname。确保此ID在应用内和开发者后台保持一致,用于识别不同的内购商品。
  • 参考名称:仅用于开发者内部识别,方便管理不同内购产品,不会显示给用户。
  • 名称:展示给用户的产品名称,应简洁明了,突出产品价值,例如“100枚金币”“高级会员月卡”等。
  • 描述:详细描述产品内容和优势,帮助用户了解购买后能获得什么,如“购买此商品可获得100枚金币,用于在游戏中购买道具,提升游戏体验”。
  • 价格:从苹果提供的价格档位中选择适合的价格。不同国家和地区会根据汇率等因素显示相应的本地化价格。
  • 可用性:可以选择立即发布产品,或设置未来的发布日期。

选择地区 设置价格

然后设置税率

选择app的类型,对应类型税率不同,我们是游戏,选择游戏

最后下方 设置图标,也就是要商品的购物图标,下面的截图是商城购买内容

  1. 配置其他信息(部分产品类型需要)
  • 对于自动续期订阅
  • 订阅周期:选择订阅的时长,如每周、每月、每年等。
  • 免费试用期:可设置一定时长的免费试用期,吸引用户尝试订阅服务。
  • 续订优惠:可以为老用户提供续订折扣,以鼓励用户持续订阅。
  • 对于消耗型产品和非消耗型产品:可上传相关截图或视频,展示产品在应用中的使用场景或效果,帮助用户更好地理解产品。
  1. 提交审核(若需要)
  • 创建完成后,内购产品可能需要经过苹果审核,确保其符合App Store审核指南。审核通过后,产品才能在应用内正常使用。

二、在应用内配置展示和处理内购商品逻辑

  1. 导入StoreKit框架
  • 如果使用Swift开发,在相关视图控制器文件顶部导入StoreKit框架:
import StoreKit
  • 若使用Objective - C,在对应的.h文件中导入:
#import <StoreKit/StoreKit.h>
  1. 请求产品信息
  • 在Swift中,创建函数来请求内购产品信息:
func requestProducts() {
guard let productIdentifiers = Set([
  "com.example.yourapp.product1", // 替换为实际产品ID
  "com.example.yourapp.product2"
]) as? Set<String> else { return }
let request = SKProductsRequest(productIdentifiers: productIdentifiers)
request.delegate = self
request.start()
}
  • 在Objective - C中:
    ```objectivec
  • (void)requestProducts {
    NSSet *productIdentifiers = [NSSet setWithObjects:
@"com.example.yourapp.product1", // 替换为实际产品ID
                           @"com.example.yourapp.product2",
                           nil];

SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
request.delegate = self;
[request start];
}

- 实现`SKProductsRequestDelegate`代理方法以获取产品信息,并在应用中展示:
```swift
extension ViewController: SKProductsRequestDelegate {
  func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
      let products = response.products
      for product in products {
          // 根据产品信息,在应用界面上展示商品名称、价格等
          print("Product: \(product.productIdentifier), Price: \(product.price)")
      }
  }
  func request(_ request: SKRequest, didFailWithError error: Error) {
      print("Error fetching products: \(error.localizedDescription)")
  }
}

```objectivec

  • (void)productsRequest:(SKProductsRequest )request didReceiveResponse:(SKProductsResponse )response {
    NSArray products = response.products;
    for (SKProduct product in products) {
// 根据产品信息,在应用界面上展示商品名称、价格等
  NSLog(@"Product: %@, Price: %@", product.productIdentifier, product.price);

}
}

  • (void)request:(SKRequest )request didFailWithError:(NSError )error {
    NSLog(@”Error fetching products: %@”, error.localizedDescription);
    }
    ```
  1. 处理购买逻辑
  • 在Swift中,创建购买函数:
func purchase(product: SKProduct) {
let payment = SKPayment(product: product)
SKPaymentQueue.default().add(payment)
}
  • 在Objective - C中:
    ```objectivec
  • (void)purchaseProduct:(SKProduct )product {
    SKPayment payment = [SKPayment paymentWithProduct:product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
    }
- 实现`SKPaymentTransactionObserver`代理方法来处理购买交易结果:
```swift
extension ViewController: SKPaymentTransactionObserver {
  func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
      for transaction in transactions {
          switch transaction.transactionState {
          case.purchased:
              SKPaymentQueue.default().finishTransaction(transaction)
              // 处理购买成功逻辑,如解锁功能、更新UI
              break
          case.failed:
              SKPaymentQueue.default().finishTransaction(transaction)
              // 处理购买失败逻辑,提示用户失败原因
              break
          case.restored:
              SKPaymentQueue.default().finishTransaction(transaction)
              // 处理恢复购买逻辑,恢复用户已购买内容
              break
          default:
              break
          }
      }
  }
}

```objectivec

  • (void)paymentQueue:(SKPaymentQueue )queue updatedTransactions:(NSArray<SKPaymentTransaction > )transactions {
    for (SKPaymentTransaction transaction in transactions) {
switch (transaction.transactionState) {
      case SKPaymentTransactionStatePurchased:
          [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
          // 处理购买成功逻辑,如解锁功能、更新UI
          break;
      case SKPaymentTransactionStateFailed:
          [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
          // 处理购买失败逻辑,提示用户失败原因
          break;
      case SKPaymentTransactionStateRestored:
          [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
          // 处理恢复购买逻辑,恢复用户已购买内容
          break;
      default:
          break;
  }

}
}
```

目录
相关文章
|
26天前
|
存储 安全 生物认证
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
125 62
苹果上架APP遇到提示缺少出口合规证明时应该如何处理-什么是APP加密文稿-优雅草卓伊凡
|
19天前
|
开发工具 开发者 iOS开发
如果苹果上架审核7个工作日仍无反应如何向苹果官方询问进度和提交反馈-App Store Connect方式和发送邮件询问方式-优雅草卓伊凡
如果苹果上架审核7个工作日仍无反应如何向苹果官方询问进度和提交反馈-App Store Connect方式和发送邮件询问方式-优雅草卓伊凡
64 2
如果苹果上架审核7个工作日仍无反应如何向苹果官方询问进度和提交反馈-App Store Connect方式和发送邮件询问方式-优雅草卓伊凡
|
1月前
|
存储 数据安全/隐私保护 开发者
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
62 8
苹果app上架app store 之苹果开发者账户在mac电脑上如何使用钥匙串访问-发行-APP发布证书ios_distribution.cer-优雅草卓伊凡
|
1月前
|
安全 测试技术 开发者
苹果开发者账户添加描述文件-对应App Store and Ad Hoc发布证书构建app添加描述文件-并且把cer证书转换为可用于打包的.p12证书-优雅草卓伊凡
苹果开发者账户添加描述文件-对应App Store and Ad Hoc发布证书构建app添加描述文件-并且把cer证书转换为可用于打包的.p12证书-优雅草卓伊凡
36 3
苹果开发者账户添加描述文件-对应App Store and Ad Hoc发布证书构建app添加描述文件-并且把cer证书转换为可用于打包的.p12证书-优雅草卓伊凡
|
11月前
|
iOS开发 开发者
苹果iOS App Store上架操作流程详解:从开发者账号到应用发布
很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询,共同探讨。
|
11月前
|
安全 数据安全/隐私保护 iOS开发
iOS App 上架流程图文教学
在上架App 之前必须先准备好开发者帐号,但申请开发者帐号因法兰克早在之前已经申请好了,故就跳过此步骤,直接从产生凭证到上传App开始讲起。首先,要将自己辛苦写好的App 送审的话,则要依序做完下列几件事情即可。
|
11月前
|
Swift iOS开发 开发者
iOS 应用上架流程详解
iOS 应用上架流程详解
|
11月前
|
安全 数据安全/隐私保护 开发者
|
11月前
|
iOS开发
|
11月前
|
数据安全/隐私保护 iOS开发 开发者
uniapp IOS从打包到上架流程(详细简单) 原创
uniapp IOS从打包到上架流程(详细简单) 原创
330 1

热门文章

最新文章