Autobooks SDK
Autobooks SDK 提供了 Apple ProximityReader 框架和 Autobooks 网络功能和 API 的接口,为您的用户提供统一的支付体验。它在其自身的独立 UI 之上展示了嵌入应用程序的 UI,因此其架构与小型应用程序的架构最为相似,而不是典型的 SDK。
要求
最低要求
- iOS 14+
- Xcode 13.4
此外,连接到 Autobooks SDK 后端可能需要美国的 IP 地址。
触摸支付要求
- 适用于iOS 16+
- 在iPhone上的触摸支付权限
- 一部iPhone XS或更高版本
1. 安装Autobooks SDK
目前支持CocoaPods和手动安装。Swift Package Manager(SPM)支持即将推出。
CocoaPods
要使用CocoaPods进行集成,请在您的Podfile
中添加以下内容。
pod 'Autobooks'
手动安装
- 下载Autobooks SDK存储库。
- 将“Frameworks”目录中包含的xcframeworks拖放到您的项目中,确保在Xcode提示时勾选“ needed时复制项”。
- 如果需要,将现在在项目导航器中出现的xcframeworks拖放到目标中的Frameworks, Libraries, and Embedded Content部分。
- 将每个库的Embed设置设置为Embed & Sign。
2. 设置iPhone Tap to Pay的权限
您必须设置iPhone Tap to Pay权限。要访问请求表单,您必须持有组织级别的Apple Developer账户,并以账户持有者的身份登录。
3. 使用说明
首先,导入Autobooks框架
import Autobooks
配置
所有AB.start*
方法都允许传递一个AB.Configuration
值来控制SDK内部的各种行为。这包括自定义AB.Style
,以及各种网络设置,这些设置对于测试或调试Autobooks集成非常有用。
let configuration = AB.Configuration(environment: <#T##BackendEnvironment#>,
style: <#T##Style#>,
responseProvider: <#T##ResponseProvider#>,
shouldFallBackToPaymentForm: <#T##Bool#>,
shouldConfirmClose: <#T##Bool#>,
closeButtonStyle: <#T##CloseButtonStyle#>,
webViewsShowControls: <#T##Bool#>)
-
environment
指定API调用发送的位置。选项有.dev
、.staging
和.production
。默认是.production
。 -
style
指定显示定制的结构。有关更多信息,请参阅下面的样式部分。 -
responseProvider
指定响应的来源。AB.BackendEnvironment
行为 .stubs(Stubs)
使用提供的本地桩(stubs)来执行所有调用。在不使用这个设置的情况下,不应通过网络传输任何流量。 .hybrid(Stubs)
使用提供的 AB.BackendEnvironment
进行登录,其余使用提供的桩(stubs)。.backendMocked
使用提供的 AB.BackendEnvironment
,带有模拟的登录端点,其余使用常规端点。.live
对所有API调用使用提供的 AB.BackendEnvironment
。 -
shouldFallBackToPaymentForm
控制当用户未满足给定功能的iOS版本或物理设备要求时会发生什么。如果为true
,则用户将被定向到基于Web的虚拟终端。如果为false
,则用户将收到错误。默认为true
。 -
shouldConfirmClose
指定是否在关闭 SDK 接口之前向用户显示确认信息。默认值为false
。 -
closeButtonStyle
控制用于关闭 SDK 显示给用户的文本。如果为.close
,则文本为“关闭”。如果为.signOut
,则文本为“登出”。默认值为.close
。 -
webViewsShowControls
控制下列提到的 Web 功能是否在 Web 内容下方显示返回/前进/分享/刷新工具栏,类似于SFSafariViewController
。
样式
AB.Style
结构是自定义 SDK 接口外观的主要方法。最简单的初始化方法仅设置 primaryColor
,该颜色将用于着色 UI 控件,类似于 UIKit 的 tintColor
或 SwiftUI 的 accentColor
,并将使用默认的 UINavigationBar
和 UIToolbar
类和设置
let style = AB.Style(primaryColor: <#T##UIColor#>)
您可以通过创建 AB.Style.Colors
结构来单独覆盖每个 UI 元素类的颜色。默认值为 .systemBlue
。
let colors = AB.Style.Colors(primaryColor: <#T##UIColor#>,
actionButtonColor: <#T##UIColor?#>,
secondaryButtonColor: <#T##UIColor?#>,
tertiaryButtonColor: <#T##UIColor?#>,
linkColor: <#T##UIColor?#>,
progressColor: <#T##UIColor?#>,
confettiColor: <#T##UIColor?#>)
let style = AB.Style(colors: colors)
actionButtonColor
适用于动作按钮的背景,例如,充电按钮。secondaryButtonColor
适用于辅助按钮的背景,例如,大多数“重试”按钮。tertiaryButtonColor
适用于三级按钮文本,例如, Manual Card Entry 和 Receipt 视图中的“完成”按钮。此类按钮没有背景。linkColor
适用于可点击文本,例如,Autobooks 的“联系我们”文本提示,其中包含我们的支持电话号码。尽管名称如此,它不会在 Web 功能中对链接进行样式设计。progressColor
适用于线性进度视图中的规则颜色。confettiColor
适用于显示在第一次加入 Tap to Pay 时的庆祝 Party 纸屑。
由于 SDK 几乎完全是自包含的,因此您不会收到直接引用底层 UINavigationController
的引用。要自定义此控制器以匹配您的品牌,您可以使用 CustomNavigationBar
对象进行高级样式设计
let colors = AB.Style.Colors(primaryColor: <#T##UIColor#>,
actionButtonColor: <#T##UIColor?#>,
secondaryButtonColor: <#T##UIColor?#>,
tertiaryButtonColor: <#T##UIColor?#>,
linkColor: <#T##UIColor?#>,
progressColor: <#T##UIColor?#>,
confettiColor: <#T##UIColor?#>)
let customNavigationBar = AB.Style.CustomNavigationBar(standardAppearance: <#T##UINavigationBarAppearance?#>,
compactAppearance: <#T##UINavigationBarAppearance?#>,
scrollEdgeAppearance: <#T##UINavigationBarAppearance?#>,
compactScrollEdgeAppearance: <#T##UINavigationBarAppearance?#>,
navigationBarClass: <#T##AnyClass?#>,
toolbarClass: <#T##AnyClass?#>)
let style = AB.Style(colors: colors,
customNavigationBar: customNavigationBar)
如果 standardAppearance
非 nil
,则所有四个外观对象(standardAppearance
、compactAppearance
、scrollEdgeAppearance
,以及在 iOS 15 或更高版本中,compactScrollEdgeAppearance
)都将传递给构造的 UINavigationBar
;如果未设置,则默认像这样构造
let customAppearance = UINavigationBarAppearance()
customAppearance.configureWithDefaultBackground()
let barButtonItemAppearance = UIBarButtonItemAppearance(style: .plain)
barButtonItemAppearance.normal.titleTextAttributes = [.foregroundColor: style.primaryColor]
barButtonItemAppearance.disabled.titleTextAttributes = [.foregroundColor: style.primaryColor]
barButtonItemAppearance.highlighted.titleTextAttributes = [.foregroundColor: style.primaryColor]
barButtonItemAppearance.focused.titleTextAttributes = [.foregroundColor: style.primaryColor]
customAppearance.buttonAppearance = barButtonItemAppearance
customAppearance.backButtonAppearance = barButtonItemAppearance
customAppearance.doneButtonAppearance = barButtonItemAppearance
navigationBar.standardAppearance = customAppearance
对于最复杂的样式要求,您还可以使用 navigationBarClass
和 toolbarClass
在实例化时向 UINavigationController
提供自定义的 UINavigationBar
和 UIToolbar
子类。这 添加 到任何作为 UINavigationBarAppearance
对象提供的过程中发生的样式
通知
SDK消费者通常需要了解SDK内部的用户活动,以防止托管应用程序中的超时。要接收关于Web原生活动的通知,请订阅AB.Notifications.userActivity
NotificationCenter.default.addObserver(self,
selector: #selector(<#preventApplicationTimeout#>),
name: AB.Notifications.userActivity,
object: nil)
@objc func <#preventApplicationTimeout#>(_ sender: Notification) {
// Your application should reset its internal idle timer here.
}
查看AB.Notifications
结构以获取更多事件。
Web功能
开票
AB.startInvoicing(subscriptionKey: <#"your-subscription-key"#>,
loginCredential: .token(<#"your-sso-token"#>),
configuration: configuration)
支付表单
AB.startPaymentForm(subscriptionKey: <#"your-subscription-key"#>,
loginCredential: .token(<#"your-sso-token"#>)),
configuration: configuration)
全面Autobooks
AB.startFullAutobooks(subscriptionKey: <#"your-subscription-key"#>,
loginCredential: .token(<#"your-sso-token"#>)),
configuration: configuration)
点击支付
检查AB.supportsTapToPay
属性的值,以确定设备是否满足点击支付的最低要求,然后调用
AB.startTapToPay(subscriptionKey: <#"your-subscription-key"#>,
configuration: <#configuration#>,
device: <#.real#>) {
return .token(<#"your-sso-token"#>)
}
应用传输安全
API
Autobooks
处理
细分
Web
Azure Monitor
请参阅此文档以获取域名完整列表。
Autobooks
- https://app.autobooks.co
- https://dev.autobooks.co
- https://staging.autobooks.co
- https://dev-payments.autobooks.co
- https://stg-payments.autobooks.co
- https://payments.autobooks.co
Autobooks CDN
- https://preprodcdn.autobooks.co
- https://dev-cdn.autobooks.co
- https://stg-cdn.autobooks.co
- https://prd-cdn.autobooks.co
GraphQL
段落
Hubspot
- https://api.hubspot.com
- https://app.hubspot.com
- https://track.hubspot.com
- https://static.hsappstatic.net
- https://js.hs-analytics.net
- https://js.hs-banner.com
- https://js-na1.hs-scripts.com
- https://js.usemessages.com