BConnect 1.0.0

BConnect 1.0.0

Lionel LORIMIER 维护。



 
依赖项
AlamofireImage~> 4.3
AppAuth~> 1.7.3
 

BConnect 1.0.0

  • b.connect

BConnect iOS SDK

要求

您必须安装 CocoaPods 以添加依赖项。

此 SDK 的目标为编译 iOS 11,以及 iOS 16 的功能。这意味着您可以向针对旧版本的程序添加 BConnect 依赖项,并在新的 iOS 版本中使用其功能。

您还必须有一个由 b.connect 提供的客户端 ID,以及在您的应用程序中设置 deep link scheme(它将在授权过程中的网页回调中使用)。

安装

BConnect 通过 CocoaPods 提供。要安装,只需将以下行添加到您的 Podfile 中

pod 'BConnect'

使用方法

您主要会使用三个对象

  • BConnect。这是 SDK 的入口点。您可以通过 shared 属性(单例)来配置它、请求授权和处理授权回调。
  • BConnectConfiguration。这是一个包含 SDK 正确运行所需的所有信息的数据结构。
  • BConnectButton。这是一个 UI 组件。

设置

在执行任何请求之前,您必须使用一些信息来设置 BConnect。为此,您需要使用您的设置实例化一个 BConnectConfiguration,然后使用它调用 BConnect.setup(configuration:) 方法。

let configuration = BConnectConfiguration(
    clientType: .private,
    scheme: "example",
    clientID: "id",
    scopes: ["openid", "email", "given_name", "family_name", "name", "risk_score"],
)
BConnect.shared.setup(configuration: configuration)

一些参数不是必需的,或者有默认值。

您可以在应用启动时、用户点击按钮时或在您选择的任何时间完成此操作,只要在请求之前设置配置即可。否则,将不会发生任何事情。

请注意,配置不会被保存。您应该在每次应用重启时设置配置。

添加按钮

要将 BConnectButton 添加到您的视图中,您可以在您的 storyboardxib 中添加一个 UIView,然后将 BconnectButton 设置为 classIdentity Inspector 中。

您还可以通过实例化 BConnectButton() 并将其添加到子视图中来从代码中添加它。

您将不得不设置按钮的 高度位置 约束。宽度将自动计算。

提示:您可以在 Size Inspector (xib/storyboard) 中的 Intrinsic Size 中设置一个占位符来隐藏 missing constraint 警告。

样式

BConnectButton 提供了样式选择。您也可以通过提供一个 b.connect 图片名来设置自定义样式。在这种情况下,您必须使用相同名称将占位符图像添加到您的资源中。

// Using a default style
bconnectButton.set(style: .icon)

// Using a custom style
bconnectButton.set(style: .custom(name: "bconnect_largebutton_white_noborder"))

动作

您要添加一个目标来监听与 UIButtons 一样的事件。请注意,BConnectButton 继承自 UIButton

bconnectButton.addTarget(self, action: #selector(onTapBConnect), for: .touchUpInside)
@objc
private func onTapBConnect(sender : UIButton) {
    // Authorize
}

您也可以通过在 Storyboard 中使用 IBAction 来完成此操作。

请求授权

您可以通过调用 BConnect.requestAuthorize(from:completion:) 来启动授权流程。completion闭包将返回一个 BConnectResult(枚举): 一个包含请求信息的成功,一个错误或用户取消。

BConnect.shared.requestAuthorize(presenting: self) { [weak self] result in
    self?.handleBconnectResult(result)
}

此代码可以从BConnectButton的点击中调用,例如。

处理Web会话回调

为了拦截授权回调,您需要在应用程序从URL打开时调用 BConnect.shared.application(open:)

例如,这可以在AppDelegate中的application(_:open:options:)方法中完成。

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
    if BConnect.shared.application(open: url) {
        return true
    }

    return false
}

或者如果您使用的是SceneDelegate,可以在scene(_:openURLContexts:)方法中完成。

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    guard let url = URLContexts.first?.url else { return }
    _ = BConnect.shared.application(open: url)
}

故障排除

构建过程中出现rsync错误

您可能会由于CocoaPods而出错。此问题与沙箱违规有关,可能由Alamofire框架或AppAuth引起。

要解决这个问题,您需要禁用用户脚本沙箱。

  • 导航到您的项目设置。
  • 转到“构建设置”标签。
  • USER_SCRIPT SANDBOXING设置为