DeepWall
为构建、管理和维护盈利的移动应用提供内购功能的端到端解决方案。
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。
DeepWall 通过 CocoaPods 提供。要安装它,请将以下行添加到您的 Podfile
。”
- 添加 DeepWall pod。
use_frameworks!
pod 'DeepWall'
- 运行
pod install
或pod update
。 - 然后,您可以通过在项目文件中添加
import DeepWall
来使用 DeepWall。
使用方法
初始化
import DeepWall
let yourApiKey = "{YOUR_API_KEY}"
let environment: DeepWallEnvironment = .sandbox
DeepWall.initialize(apiKey: yourApiKey, environment: environment)
将 {YOUR_API_KEY}
替换为您的应用令牌。您可以在您的 仪表板 中找到此键。
根据您是为测试还是为生产构建应用程序,您必须设置环境并使用以下这些值之一
let environment: DeepWallEnvironment = .sandbox
let environment: DeepWallEnvironment = .production
注意
仅在测试应用程序时,此值应该设置为
.sandbox
。确保在发布应用程序之前,将环境设置为.production
。
我们使用此环境来区分来自测试设备的真实流量和测试流量。始终保持此值具有意义非常重要!
配置
DeepWall 需要知道以下用户属性来定位。
- UUID:
String
- 用于指定用户配置文件或设备的唯一标识符。
- 国家:
DeepWallCountry
- 两字母国家代码 -- ISO 3166-1 alpha-2
- 用法:
DeepWallCountryManager.getCountry(by: "TR") // TURKEY
- 语言:
DeepWallLanguage
- 两字母语言代码 -- ISO 639-1
- 用法:
DeepWallLanguageManager.getLanguage(by: "tr") // TURKISH
- 环境样式:
DeepWallEnvironmentStyle
- 用于付费墙外观的环境样式。
- 值
automatic
: 使用系统外观(默认值)light
: 浅色外观dark
: 深色外观
- 调试广告归属:
DeepWallAdvertiseAttributions
- 用于调试目的的广告归属信息。
- 用法:
let attribution = ["debug_attribution: "debug_campaign_attribution"]
注意
在请求任何付费墙之前,您必须调用
setUserProperties
方法。
let userProperties = DeepWallUserProperties(uuid: uuid, country: country, language: language, debugAdvertiseAttributions: debugAttributions)
DeepWall.shared.setUserProperties(userProperties)
更新用户属性
您可以使用 DeepWall.shared.updateUserProperties()
方法更新以下用户属性。
func updateUserProperties(country: DeepWallCountry? = nil,
language: DeepWallLanguage? = nil,
environmentStyle: DeepWallEnvironmentStyle? = nil,
debugAdvertiseAttributions: DeepWallAdvertiseAttributions = nil)
请求付费墙
为确保页面成功显示,强烈建议在发送页面请求之前等待 DeepWall.shared.readyStatus
。
您可以使用带有 action
参数的 requestPaywall
方法来显示付费墙。
// SomeUIViewController.swift
DeepWall.shared.requestPaywall(action: "{ACTION_KEY}", in: self)
将 {ACTION_KEY}
替换为您相关的操作键。您可以在您的 仪表板 中查找或创建操作键。
发送额外数据
您还可以使用 extraData
参数将额外数据发送到付费墙。
// SomeUIViewController.swift
let deepwallExtraData: DeepWallExtraDataType = [
"some": "value"
]
DeepWall.shared.requestPaywall(action: "{ACTION_KEY}", in: self, extraData: deepwallExtraData)
关闭付费墙
您可以使用 closePaywall
方法关闭付费墙。
DeepWall.shared.closePaywall()
请求ATT提示
您可以使用带有 action
参数的 requestAppTracking
方法来显示ATT提示。
// SomeUIViewController.swift
DeepWall.shared.requestAppTracking(action: "{ACTION_KEY}", in: self)
将 {ACTION_KEY}
替换为您相关的操作键。您可以在您的 仪表板 中查找或创建操作键。
事件处理
DeepWall根据...的情况抛出一些不同的事件。
-
deepWallPaywallRequested
- 请求付费墙后被触发。在您的应用中显示加载指示器很有用。
-
deepWallPaywallResponseReceived
- 接收付费墙响应后被触发。在您的应用中隐藏加载指示器很有用。
-
deepWallPaywallOpened
- 付费墙打开事件
- 参数
- pageId:
Int
- pageId:
-
deepWallPaywallNotOpened
- 付费墙未打开事件。仅在错误情况下触发。
- 参数
- pageId:
Int
- pageId:
-
deepWallPaywallActionShowDisabled
- 付费墙动作显示禁用事件。
- 参数
- pageId:
Int
- pageId:
- 参数
- 付费墙动作显示禁用事件。
-
deepWallPaywallClosed
- 付费墙关闭事件
- 参数
- pageId:
Int
- pageId:
-
deepWallPaywallResponseFailure
- 付费墙响应失败事件
- 参数
- errorCode:
String
- reason:
String
- errorCode:
-
deepWallPaywallPurchasingProduct
- 付费墙购买产品事件
- 参数
- productCode:
String
- productCode:
-
deepWallPaywallPurchaseSuccess
- 购买成功事件。在激活Ploutos服务后,在收据验证后被触发。
- 参数
- type:
PloutosValidationType
- result:
PLPurchaseResponse
- subscriptions:
SubscriptionItem
数组 - products:
ProductItem
数组
- subscriptions:
- type:
-
deepWallPaywallPurchaseFailed
- 购买失败事件
- 参数
- productCode:
String
- reason:
String
- errorCode:
String
- isPaymentCancelled:
Bool
- productCode:
-
deepWallPaywallRestoreSuccess
- 恢复成功事件
-
deepWallPaywallRestoreFailed
- 恢复失败事件
- 参数
- 原因:
RestoreFailedReason
- 无收据。
- 失败。
- errorCode:
String
- 错误文本:
String?
- isPaymentCancelled:
Bool
- 原因:
-
deepWallPaywallExtraDataReceived
- 接收额外数据事件
- 参数
- DeepWallExtraDataType模型
-
deepWallATTStatusChanged
- ATT状态改变事件
使用示例
首先在你类中实现DeepWallNotifierDelegate
协议。然后你可以使用observeEvents
方法来观察事件。
DeepWall.shared.observeEvents(for: self)
要移除观察者,可以使用removeObserver
方法。
DeepWall.shared.removeObserver(for: self)
要求
- iOS 10.0+
- Xcode 11.0+
- Swift 5.0+
迁移指南
附加功能
- 支持暗黑模式
- 自动应用程序内购买流程