CrossClassify 1.0.3

CrossClassify 1.0.3

Jasmine KM维护。



 
依赖关系
FingerprintPro~> 2.1.8
FingerprintJS~> 1.4.1
 

  • 作者:
  • Jasmine Kramer

CrossClassify iOS SDK

CrossClassify for iOS应用的SDK,包含两个集成示例

  • FirebaseSwiftUI:一个简单的使用Firebase身份验证和CrossClassify SDK进行登录/注册的SwiftUI应用,通过< strong>Swift包管理器集成的
  • FirebaseUIKit:一个简单的使用Firebase身份验证和CrossClassify SDK进行登录/注册的< strong>UIKit应用,使用< strong>CocoaPods集成的

本地设置示例应用部分以运行完整示例应用,或者转到SDK集成指南部分,以轻松将CrossClassify SDK与您的iOS应用集成。

先决条件

  • iOS 13.0(或更高版本)
  • Xcode 13.3.1(或更高版本)
  • Swift 5.6(或更高版本)
  • SwiftPM或CocoaPods 1.10.0(或更高版本)
  • SwiftUI或UIKit
  • CrossClassify帐户
  • Firebase帐户(仅适用于示例应用)

本地设置示例应用

  1. 克隆或下载项目
  2. 在项目文件夹上运行终端
  3. pod installarch -x86_64 pod install
  4. 打开.xcworkspace文件
  5. 将以下路径中的GoogleService-Info.plist文件(来自您的Firebase项目)复制到:
    • ./Example/FirebaseSwiftUI/FirebaseSwiftUI
    • ./Example/FirebaseUIKit/FirebaseUIKit
  6. 在以下位置中的CrossClassify实例中更改siteIdapiKey(来自您的CrossClassify项目):
    • ./Example/FirebaseSwiftUI/FirebaseSwiftUI/CrossClassifyInstance.swift
    • ./Example/FirebaseUIKit/FirebaseUIKit/CrossClassifyInstance.swift
  7. 编译并运行(FirebaseSwiftUI或FirebaseUIKit目标)。

SDK集成指南

为了帮助您开始使用CrossClassify SDK,以下是下一步要做的列表:

  1. 安装CrossClassify SDK
  2. 导入CrossClassify模块
  3. 初始化CrossClassify对象
  4. 跟踪没有表单的页面
  5. 跟踪包含表单的页面

第一步:安装CrossClassify SDK

  • Swift包管理器

    要使用Package.swift清单而不是Xcode进行集成,可以将CrossClassify添加到包的依赖项数组中

    dependencies: [
    .package(url: "https://github.com/crossclassify/xc-sdk-ios", from: "1.0.1"),
    // Any other dependencies you have...
    ],

    然后,在任何依赖于CrossClassify SDK的目标中,将其添加到该目标的dependencies数组中

    .target(
    name: "MyTargetName",
    dependencies: [
        .product(name: "CrossClassify", package: "xc-sdk-ios"),
        // Any other dependencies you have...
    ]
    ),

    或通过在Xcode菜单栏中选择文件添加包…来添加包。

  • CocoaPods

    1. 打开一个终端窗口,导航到您的项目的根目录。

    2. 如果您还没有Podfile,请通过运行以下命令创建它:pod init

    3. 在文本编辑器中打开Podfile,并添加以下行:pod 'CrossClassify'

    4. 保存Podfile,然后运行以下命令安装CrossClassify SDK:pod install

第二步:导入CrossClassify模块

在您要使用CrossClassify SDK的文件中,在顶部添加以下行:

import CrossClassify

第三步:初始化CrossClassify对象

将以下代码添加到您的应用中,用“SITE_ID_HERE”和“API_KEY_HERE”替换您的网站ID和API密钥

extension CrossClassify {
    public static let shared: CrossClassify = CrossClassify(siteId: "SITE_ID_HERE", apiKey: "API_KEY_HERE")
}

这创建了一个名为 shared 的静态常量,它是一个初始化了您的网站 ID 和 API 密钥的 CrossClassify 类的实例。

步骤 4: 无表单跟踪页面

对于包含没有表单的每个页面(例如,主页),请执行以下操作。根据您的选择框架,分别查看 SwiftUI 和 UIKit 版本的步骤 4.1 和 4.2。在两个版本中,您必须指定 页面名称

步骤 4.1: SwiftUI 页面

  • view 结构体的 body 变量中添加以下函数,将 "PAGE_NAME_HERE" 替换为您要跟踪的页面的实际名称
    .onAppear{CrossClassify.shared.track(pageName: "PAGE_NAME_HERE")} 
    .onDisappear{CrossClassify.shared.stopTrack()}

步骤 4.2: UIKit 页面

  • viewDidEnter(_:) 方法中添加以下代码,将 "PAGE_NAME_HERE" 替换为您要跟踪的页面的实际名称
    CrossClassify.shared.track(pageName: "PAGE_NAME_HERE") 
  • viewDidDisappear(_:) 方法中添加以下代码
    CrossClassify.shared.stopTrack()

步骤 5: 跟踪包含表单的页面

对于每个包含表单的页面(例如,注册,登录),请执行以下操作。根据您的选择框架,分别查看 SwiftUI 和 UIKit 版本的步骤 5.1 和 5.2。在两个版本中,您必须指定以下信息

  • 页面名称(例如 loginPagesignupPageupdateProfilePage
  • 表单名称(例如 loginsignUpupdateProfile
  • 表单中的每个字段
    • ID(例如 usernamepasswordaddress
    • 内容跟踪状态(您是否希望发送字段内容)

      注意
      发送字段内容会增加CrossClassify欺诈检测算法的准确性。因此,强烈建议在所有非机密字段上使用内容跟踪。

  • 提交按钮

步骤 5.1: SwiftUI 页面

  1. 指定页面名称和表单名称

    view 结构体的 body 变量中调用以下函数

    .onAppear{CrossClassify.shared.track(pageName: "PAGE_NAME_HERE", formName: "FORM_NAME_HERE")}
    .onDisappear{CrossClassify.shared.stopTrack()}

    "PAGE_NAME_HERE""FORM_NAME_HERE" 替换为您要跟踪的页面和表单的实际名称。

  2. 指定跟踪表单字段

    对于文本字段(例如,电子邮件),将 TextField 结构更改为 TrackedTextField。您还必须指定 id 和内容跟踪状态(trackContent

    TrackedTextField("AS_IS",       // leave this parameter with no change
                     text: $AS_IS), // leave this parameter with no change
                     id: "FIELD_NAME_HERE",
                     trackContent: false,
                     cc: CrossClassify.shared)

    如果文本字段不包含私人信息(例如,密码),则将第二个函数输入更改为 true。CrossClassify SDK 中支持的 SwiftUI 字段是 TextFieldSecureFieldDatePickerPickerToggleStepperSlider。对于所有字段类型,只需在字段名称前添加 Tracked 前缀即可(例如,TrackedStepper

  3. 指定表单提交按钮

    将以下代码添加到按钮的 action 参数中

    CrossClassify.shared.submit()

步骤 5.2: UIKit 页面

  1. 指定页面名称和表单名称

    • 如果页面包含表单,则在 viewDidEnter(_:) 方法中添加以下代码
      CrossClassify.shared.track(pageName: "PAGE_NAME_HERE", formName: "FORM_NAME_HERE", view: view)
      "PAGE_NAME_HERE" "FORM_NAME_HERE" 替换为您要跟踪的页面和表单的实际名称。
    • viewDidDisappear(_:) 方法中添加以下代码
      CrossClassify.shared.stopTrack()
  2. 指定跟踪表单字段

    • 对于文本字段(例如,电子邮件),将 UITextField 类更改为 TrackedUITextField 并将其模块设置为 CrossClassify

    • 在属性检查器中,添加一个新的用户定义运行时属性,键路径为 id,并将其值设置为文本字段的 ID(例如 password)。如果文本字段不包含私人信息(例如 username),请添加另一个布尔属性,键路径为 includeContent

    按照这些步骤,您已成功将 TrackedUITextField 添加到您的 ViewController 中,并设置了其 formName 和 id 属性。对于表单中的任何其他字段,重复此过程。CrossClassify SDK 中支持的 UIKit 字段是 UITextFieldUIDatePickerUISegmentedControlUIPickerViewUISwitchUISlider。对于所有字段类型,只需在字段名称前添加 Tracked 前缀即可(例如,TrackedUIDatePicker

  3. 指定表单提交按钮

    UIButton类更改为TrackedUIButton,并将其模块更改为CrossClassify

欺诈检测服务的要求

账户开启服务

  • 有效的SiteIdapiKey(来自CrossClassify账户)
  • track函数中,formName必须包含signup子串(例如signupFrom)。
  • 在电子邮件字段中,id必须包含email子串。
  • 在电子邮件字段中,trackContent必须为True
  • 在注册表单视图中,必须指定表单提交按钮。

账户接管服务

  • 有效的SiteIdapiKey(来自CrossClassify账户)
  • track函数中,formName必须包含login子串(例如loginFrom)。
  • 在电子邮件字段中,id必须包含email子串。
  • 在电子邮件字段中,trackContent必须为True
  • 在登录表单视图中,必须指定表单提交按钮。

一个简化的SwiftUI示例

在这个示例中,我们展示了在一个简单的SwiftUI应用中,在应用整合步骤前后所做的更改。《CrossClassifyInstance.swift》是新文件,《LoginView.swift》是现有文件。

CrossClassifyInstance.swift

+   import CrossClassify
+
+   extension CrossClassify {
+       public static let shared = CrossClassify(siteId: "1", apiKey: "GOTOappDOTcrossclassifyDOTcom")
+   }

SignInView.swift

    import SwiftUI
+   import CrossClassify

    struct SignInView: View {

        @State var emailAddress: String = ""
        @State var password: String = ""

        var body: some View {
            
            VStack {
-               TextField(
+               TrackedTextField(
                    "[email protected]", 
                    text: $emailAddress),
+                   id: "email", trackContent: true, cc: CrossClassify.shared
                )
-               SecureField(
+               TrackedSecureField(
                    "Enter a password", 
                    text: $password),
+                   id: "password", cc: CrossClassify.shared
                )

                Button("Sign In", action: {
+                       CrossClassify.shared.submit()
                        ...
                        }
                    )
                ...
            }
+           .onAppear{CrossClassify.shared.track(pageName: "signin", formName: "login")}
+           .onDisappear{CrossClassify.shared.stopTrack()}
        }

    }

一个简化的UIKit示例

在这个示例中,我们展示了在一个简单的UIKit应用中,在应用整合步骤前后所做的更改。《CrossClassifyInstance.swift》是新文件。《LoginViewController.swift》和《Login.storyboard》是现有文件。

CrossClassifyInstance.swift

+   import CrossClassify
+
+   extension CrossClassify {
+       public static let shared = CrossClassify(siteId: "1", apiKey: "GOTOappDOTcrossclassifyDOTcom")
+   }

LoginViewController.swift

    import UIKit
+   import CrossClassify

    class LoginViewController: UIViewController {

        override func viewDidAppear(_ animated: Bool) {
            super.viewDidAppear(animated)
+           CrossClassify.shared.track(pageName: "login", formName: "login", view: view)
            ...
        }
        
        override func viewDidDisappear(_ animated: Bool) {
            super.viewDidDisappear(animated)
+           CrossClassify.shared.stopTrack()
            ...
        }
    }

Main.storyboard

  • 电子邮件字段

    alt text

  • 按钮

    alt text