RefinerSDK 1.5.0

RefinerSDK 1.5.0

Anil T. 维护。



  • 作者:
  • Refiner

Platform Version Package Manager

Refiner 移动 SDK 集成

iOS

Refiner iOS SDK 最低部署目标为 iOS 11。

1) 安装

The Refiner iOS SDK can be added either by using CocoaPods or SPM.

1.1 Swift 包管理器(Xcode 11+)

Swift 包管理器 (SwiftPM) 是一个用于管理和分发 Swift 代码以及 C 家族依赖项的工具。从 Xcode 11 开始,SwiftPM 被原生集成到 Xcode 中。

Refiner SDK 支持 SwiftPM。要使用 SwiftPM,您应该使用 Xcode 11 打开您的项目。点击 文件 -> Swift 包 -> 添加包依赖,输入 RefinerSDK 仓库的 URL。或者,您可以使用 GitHub 账户登录 Xcode,只需要输入 RefinerSDK 即可搜索。

选择包后,您可以选择依赖类型(标记的版本、分支或提交)。然后 Xcode 将为您设置所有东西。

1.2 CocoaPods

Podfile 中引用 RefinerSDK 足够将 Refiner iOS SDK 添加到您的项目中。

添加步骤

  1. 如果您的项目还没有 Podfile,则您可以在终端上运行以下命令来创建它:
pod init
  1. Podfile 中引用 RefinerSDK
target 'YOUR_APPLICATION_NAME' do

  # ... beginning of your Podfile ...

  pod 'RefinerSDK'

  # ... remaining of your Podfile ...

end

注意:YOUR_APPLICATION_NAME 替换为在 target 部分中的您的应用名称

  1. 通过在终端上运行以下命令安装 pods:
pod install

2) 使用方法

访问我们的 文档 了解有关如何使用 SDK 方法的更多信息。

初始化 & 配置

在您的应用程序类中使用所需的配置参数初始化 Refiner iOS SDK。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    Refiner.instance.initialize(projectId: "PROJECT_ID", enableDebugMode: true)
    return true
}

识别用户

通过调用 Identify User 在 Refiner 中创建或更新一个用户属性。

第一个参数是您的已登录用户的 userId,这是唯一必填参数。

第二个参数是一个用户属性对象。您可以选择省略或设置此值为 null,如果您不想将任何用户属性发送到您的 Refiner 账户。

Refiner.instance.identifyUser(
    userTraits: [
        "email": "[email protected]"
        "something": "else"
    ],
    userId: "USER_ID"
)

第三个参数用于设置用户的 locale,是可选的。预期格式为两个字母的 ISO 639-1 语言代码。当提供时,locale 代码用于启动特定语言的调查以及启动翻译后的调查。如果您不使用任何特定语言的功能,可以选择省略或设置值为 null

第四个参数是一个可选的 身份验证签名。我们推荐在生产环境中使用 Identify Verification 签名以提高安全性。出于开发目的,您可以省略或设置此值为 null

Refiner.instance.identifyUser(
    userTraits: [
        "email": "[email protected]"
        "something": "else"
    ],
    userId: "USER_ID",
    locale: "en", 
    signature: "SIGNATURE")

跟踪事件

Track Event 允许您跟踪用户事件。跟踪的事件可用于在 Refiner 中创建用户段和目标受众。

Refiner.instance.trackEvent(name: "EVENT_NAME")

跟踪屏幕

Track Screen 提供跟踪用户目前所在的屏幕的功能。屏幕信息可用于在您的应用的特定区域内启动调查。

我们建议您可以跟踪可能需要显示调查的屏幕。无需系统地跟踪应用中所有的屏幕。

Refiner.instance.trackScreen(name: "SCREEN_NAME")

Ping

根据您的设置,您可能希望对当前用户已安排的调查进行定期检查。例如,当您使用基于时间的触发事件时,或者当目标受众基于我们从后端API接收到的用户数据时。

Ping 方法提供了一种轻松执行此类检查的方法。您可以在用户旅程的关键时刻调用 Ping 方法,例如,当应用程序重新打开时,或者当用户执行特定的操作时。

Refiner.ping()

显示表单

如果您使用手动触发事件来为调查提供,您需要每次启动调查时都调用 显示表单

Refiner.instance.showForm(uuid: "FORM_UUID")

为了测试目的,您还可以提供一个额外的 force 参数,它可以绕过所有定位规则,并始终显示调查。

Refiner.instance.showForm(uuid: "FORM_UUID", force: true)

附加上下文数据

使用 addToResponse 将上下文数据附加到调查提交中。设置 null 以删除上下文数据。

Refiner.instance.addToResponse(
    data: [
        "some_data": "hello",
        "some_more_data": "hello again"
    ])

重置用户

调用 重置用户 以重置通过 识别用户 设置的用户标识符。我们建议在用户从您的应用程序注销时调用此方法。

Refiner.instance.resetUser()

注册回调函数

注册回调函数允许您在调查的生命周期中的特定时刻执行任何代码。回调函数的一个流行用法是在用户完成调查后将用户重定向到新屏幕。

onBeforeShow 在调查应该显示之前被调用。

     Refiner.instance.onBeforeShow = { formId, formConfig in
            print("onBeforeShowCallback")
            print("formId: \(formId))")
            print("formConfig: \(formConfig ?? ""))")
        }

onNavigation 在用户在调查中移动时被调用。

    Refiner.instance.onNavigation = { formId, formElement, progress in
        print("onNavigationCallback")
        print("formId: \(formId))")
        print("formElement: \(formElement ?? ""))")
        print("progress: \(progress ?? ""))")
    }    

onShow 当调查小部件对用户可见时被调用。

    Refiner.instance.onShow = { formId in
        print("onShowCallback")
        print("formId: \(formId))")
    }

onClose 当调查小部件从屏幕消失时被调用。

    Refiner.instance.onClose = { formId in
        print("onCloseCallback")
        print("formId: \(formId))")
    }

onDismiss 当用户通过点击右上角的“X”来取消调查时被调用。

    Refiner.instance.onComplete = { formId, formData in
        print("onCompleteCallback")
        print("formId: \(formId))")
        print("formData: \(formData ?? ""))")
    }

onComplete 当用户完成(提交)调查时被调用。

    Refiner.instance.onDismiss = { formId in
        print("onDismissCallback")
        print("formId: \(formId))")
    }