一个开源SDK,用于在Unity上集成应用内购买

30分钟内实施应用内购买。

针对Unity内购的现成后端

集成内购需要创建后端基础设施和服务器用于订阅事件。这可能需要数百小时的工作,而且维护起来也具有挑战性。
import StoreKit
class Store: ObservableObject {
    private var productIDs = ["stone"]
    @Published var products = [Product]()
    init() {
        Task {
            await requestProducts()
        }
    }  
    @MainActor
    func requestProducts() async {
        do {
            products = try await Product.products(for: productIDs)
        } catch {
            print(error)
    }
  }
}
Section(header: Text("To buy")) {
 }
ForEach(store.products, id: \.id) {
  product in
    HStack {
      Text(product.displayName)
      Spacer()
      Button("\(product.displayPrice)") {
    }
  }
}
@Published var purchasedNonConsumables = [Product]()
@MainActor
func purchase(_ product: Product) async throws -> Transaction ? {
  let result =
    try await product.purchase()
  switch result {
    case .success(.verified(let transaction)):
      purchasedNonConsumables.append(product)
      await transaction.finish()
      return transaction
    default:
      return nil
  }
}
Button("\(product.displayPrice)") {
 Task {
  try await store.purchase(product)
  }
}
ProductView(
 icon: "❀",
 quantity: "\(store.purchasedNonConsumables.count)"
 )
 func listenForTransactions() -> Task < Void, Error > {
  return Task.detached {
    for await result in Transaction.updates {
      switch result {
        case let.verified(transaction):
          guard
          let product = self.products.first(where: {
            $0.id == transaction.productID
          })
          else {
            continue
          }
          self.purchasedNonConsumables.append(product)
          await transaction.finish()
        default:
          continue
      }
    }
  }
}
var transacitonListener: Task<Void, Error>?
init() {
   transacitonListener = listenForTransactions()
   Task {
     await requestProducts()
 }
}
@MainActor
private func handle(transactionVerification result: VerificationResult <Transaction> ) async {
  switch result {
    case let.verified(transaction):
      guard
      let product = self.products.first(where: {
        $0.id == transaction.productID
      })
      else {
        return
      }
      self.purchasedNonConsumables.insert(product)
      await transaction.finish()
    default:
      return
  }
}
Adapty SDK使您能够将内购集成到您的iOS应用中,拥有我们的现成基础设施它处理所有订阅事件并提供增长收入的功能。
// Your app's code
using AdaptySDK;
 
Adapty.makePurchase(product, (profile, error) => {
	if (error == null) {
		// successful purchase
	}
});
从集成到维护 – Adapty旨在使使用IAP变得更简单。
请求演示

为什么选择Adapty SDK?

随时准确的订阅状态

请放心,您将始终在所有平台上获得正确的订阅者状态。

服务器端收据验证

无需担心购买验证的正确性和安全性。

处理各种订阅状态

免费试用、升级、促销优惠、家庭共享、续订等。

企业级平台,发布周期短

>99.99%服务水平协议可靠性和定期产品更新。
配置平台
安装Adapty SDK
Adapty.activate(
   "PUBLIC_SDK_KEY",
   customerUserId: "YOUR_USER_ID"
)
处理购买事件

快速而简便的集成

只需花费几个小时将 Adapty SDK集成到您的iOS应用中,其余的我们来处理。

仅需5个SDK方法即可实现Unity内购

// Your app's code
Adapty.MakePurchase(product, (profile, error) => {
    if(error != null) {
        // handle error
        return;
    }
});
 
 
// Your app's code
Adapty.RestorePurchases((profile, error) => {
    if(error != null) {
        // handle the error
    } else {
        // check the access level
    }
});
 
// Your app's code
Adapty.Identify("YOUR_USER_ID", (error) => {
    if(error == null) {
        // successful identify
    }
});
 
 
 
// Your app's code
var builder = new Adapty.ProfileParameters.Builder()
    .("Profile_Parameters")
 
Adapty.UpdateProfile(builder.Build(), (error) => {
    if(error != nil) {
        // handle the error
    }
});
// Your app's code
Adapty.UpdateAttribution("<attributions>", source, "<networkUserId>", (error) => {
    if (error != null) {
        // handle the error
    }
  
   // succesfull attribution update
});
 
免费试用

各类应用开发者纷纷转用 Adapty 以提升收入

Cem Ortabas, Co-founder and CEO of HubX
“放弃 RevenueCat 对我们而言并非易事。我们最终选择了 Adapty,是因为相信他们是伴随我们成长更理想的合作伙伴。如今回望,这个决定无疑是正确的。迁移过程中虽有波折,但Adapty团队始终倾力相助,后续服务亦是一流水准。我愿以可靠伙伴之名,诚挚推荐Adapty。”
Cem Ortabas
联合创始人兼 CEO,HubX
HUBX
Chris Bick, Founder and CEO of Bickster
“我们自 2021 年起与 Adapty 携手同行,这份合作带来的满意度无可比拟。我们曾体验过多款订阅管理平台,因而深谙其中差异。这些年Adapty不断推出创新功能,持续助力我们的业务增长。其市场分析能力无出其右,集成方案更是包罗万象。若您渴望提升应用收益,Adapty必是不二之选。”
Chris Bick
创始人兼 CEO,Bickster
Bickster
Yalçın Özdemir, Founder & CEO of AppNation
“我们选择 Adapty,正是看中其强大的付费墙 A/B 测试功能,帮助我们精准优化变现策略。友好的操作界面、灵活的价格体系与卓越的客户支持,让 Adapty 在众多竞争者中卓然出众。”
Yalçın Özdemir
创始人兼 CEO,AppNation
AppNation
Kyle Smith, Head of data at Smitten Dating
“Adapty 平台让非技术人员也能轻松创建并管理 A/B 测试、配置付费墙、组合产品方案及定价架构。其出色的外部 API,更可无缝对接 Amplitude、Mixpanel 等分析工具,实现相关事件数据互通。”
Kyle Smith
Smitten Dating 数据负责人
Smitten
Roi Mulia, Founder & CEO of SocialKit
“在四个月的时间里,我们测试了 300 多个付费墙。Adapty 支持同时运行无限量 A/B 测试,我们得以充分探索付费墙的每个细节。从产品组合、标题文案、CTA 按钮到图像视频,我们逐一验证。借助 Adapty 的 A/B 测试,我们的月收入实现了翻倍增长。若非亲历,我难以相信单一工具能产生如此深远的影响。”
Roi Mulia
创始人 & CEO,SocialKit
SocialKit

使用Adapty您能得到什么?

Adapty SDK提供了巨大的可能性来 增长 应用 收入

实时分析您的Unity应用

凭借99.5%的准确性依赖数据与App Store Connect。
开始吧
App Icon Gravity
Gravity Fit
健康与健身
“透明和高级的分析仪表板帮助我们更快地做出决策,而无需使用额外的工具。这为我们节省了大量时间,从而节省了金钱。”
Ekaterina K,
Gravity Fit产品经理
Accuracy Adapty Appstore
ABC testing

付费墙A/B测试

找到最有利可图的付费墙,增加应用收入。
探索A/B测试
MentalGrowth
MentalGrowth
健康与保健应用
“Adapty的快速分析和易于启动的A/B测试功能使我们能够快速验证假设并取得卓越的结果。”
Vadim Nemchenko,
MentalGrowth产品经理

付费墙的远程配置

远程更改您的付费墙,而无需重新发布应用。
现在试试
Smitten
Smitten - 约会
生活方式
“我们的增长和收入团队能够快速实现和管理付费墙、产品报价,并在许多不同市场测试定价阶梯。”
Kyle Smith,
Smitten Dating数据负责人
Table Json Table Locale

用户满意度与服务品质双认证

基于 500+ 条真实评价
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025
G2 Award: Leader (EMEA), winter 2025