Autobooks 1.8.1

Autobooks 1.8.1

由以下人员维护:Jon ShierGeorge RoyceJoshua Eckstein



Autobooks 1.8.1

  • Autobooks

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'

手动安装

  1. 下载Autobooks SDK存储库。
  2. 将“Frameworks”目录中包含的xcframeworks拖放到您的项目中,确保在Xcode提示时勾选“ needed时复制项”。
  3. 如果需要,将现在在项目导航器中出现的xcframeworks拖放到目标中的Frameworks, Libraries, and Embedded Content部分。
  4. 将每个库的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,并将使用默认的 UINavigationBarUIToolbar 类和设置

    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)

如果 standardAppearancenil,则所有四个外观对象(standardAppearancecompactAppearancescrollEdgeAppearance,以及在 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

对于最复杂的样式要求,您还可以使用 navigationBarClasstoolbarClass 在实例化时向 UINavigationController 提供自定义的 UINavigationBarUIToolbar 子类。这 添加 到任何作为 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

Autobooks CDN

GraphQL

段落

Hubspot

Google 字体

欺诈监控

用户体验