AppStoreManager

AppStoreManger 是一个易于使用的,基于 StoreKit 2 的应用内购买管理器。

支持

如果您觉得 AppStoreManger 有用,并希望帮助支持其持续开发和维护,请考虑进行小额捐赠,尤其是在您将其用于商业产品时。

Buy Me A Coffee

通过像您这样的贡献者的支持,我才能继续构建、发布和维护高质量、文档完善的 Swift 包,例如免费的 AppStoreManger

安装

Swift Package Manager (Xcode 11 及以上)

  1. 在 Xcode 中,选择File > Add Package Dependency… 菜单项。
  2. 在对话框中粘贴 https://github.com/Appracatappra/AppStoreManger.git
  3. 按照 Xcode 的说明完成安装。

为什么不使用 CocoaPods、Carthage 等?

支持多个依赖管理器会使维护一个库的难度成倍增加,并且非常耗时。

由于 Swift Package Manager 已与 Xcode 11(及更高版本)集成,因此它是支持未来发展的最简单选择。

概述

只需在您的 App 项目中包含 AppStoreManager 并定义您的 Products.plist 文件,它就能自动支持以下功能:

告知 AppStoreManager 关于您的产品

您需要在您的 App 的 Bundle 中包含一个 Products.plist 文件,该文件定义您要销售的产品,以及您希望定义的任何有用的元数据(例如图片或长描述)。

以下是包含的 SampleProducts.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">
<dict>
	<key>InAppPurchaseID01</key>
	<dict>
		<key>Image</key>
		<string>ProductImageName01</string>
		<key>Description</key>
		<string>ProductDescription01</string>
	</dict>
	<key>InAppPurchaseID02</key>
	<dict>
		<key>Image</key>
		<string>ProductImageName02</string>
		<key>Description</key>
		<string>ProductDescription02</string>
	</dict>
	<key>InAppPurchaseID03</key>
	<dict>
		<key>Image</key>
		<string>ProductImageName03</string>
		<key>Description</key>
		<string>ProductDescription03</string>
	</dict>
</dict>
</plist>

Products 字典中的第一个 Key 至关重要,应该是在 App Store Connect 中为您 App 定义的有效应用内购买 ID。

Dictionary 包含您想要与单个产品关联的任何元数据属性,作为 String 键和 String 值。 在此示例中,我们同时包含 图片名称长描述

稍后我们可以使用 StoreManager 函数来获取我们定义的任何属性。 要获取我们为最后一个产品定义的 图片名称,您可以使用:

let imageName = StoreManager.shared.getAttribute("Image", for: "InAppPurchaseID03")

处理 StoreManager 事件

您需要监听一些事件,以便您可以响应用户交互:

例如,在您的 App 的主模块中,您可以执行以下操作:

WindowGroup {
	...
}
.onChange(of: scenePhase) { oldScenePhase, newScenePhase in
    switch newScenePhase {
    case .active:
        // Listen for Store Manager Events
        StoreManager.shared.productRevoked = {transaction in
            // Handle Revoked Purchase events
            ...
        }
        
        StoreManager.shared.promotedInAppPurchaseEvent = {product, successful in
            // Handle Promoted In-App Purchase events
            ...
        }
    case .inactive:
        break
    case .background:
        // Release Store Manager Events
        StoreManager.shared.releaseEventHandlers()
    @unknown default:
        print("App has entered an unexpected scene: \(oldScenePhase), \(newScenePhase)")
    }
}

在您的应用程序退出或进入后台之前,调用 StoreManager.shared.releaseEventHandlers() 以释放您附加的任何处理程序。

常用函数

以下函数是最常用的:

文档

Package 包含所有功能的完整 DocC 文档