X-SDK iOS集成

在 iOS App 应用中,X-SDK 是一个 framework,可以通过 Pod 引入(pod 'Howxm', '版本号'),也可以直接下载SDK 包导入到项目中,在开始进行体验数据收集时,需要确保 X-SDK 已经成功集成到你的应用中。

浩客 iOS SDK 支持在 Podfile 引入 SDK并完成安装pod 'Howxm', '1.5.0'

浩客对 iOS 支持 Swift、Object-C、ReactNative 的调用,如果你使用了 uniapp 开发,可以查阅 uniapp 插件集成文档。也可以翻看浩客的 github 账户,我们准备了相关的 demo 代码库

注意:支持ios11.0+ xcode11.0+

版本号 描述 ios sdk 包下载地址 发布时间
1.5.0 极大地优化SDK网络请求,丰富了debug模式的日志 https://static.howxm.com/sdks/ios/1.5.0/Howxm.zip 2023-11-14
1.4.0 支持Swift、 Object-C、ReactNative 调用 https://static.howxm.com/sdks/ios/1.4.0/Howxm.zip 2023-08-01

1. IOS集成操作步骤

Step 1:创建 iOS App 应用

创建应用时,选择应用类型「iOS」,并完善应用信息,包括应用名称(必填)及App Bundle ID(非必填)。

Step2:复制SDK代码进行集成(示例均以 Swift 为例)

在创建完成iOS应用后,可以在左侧「应用设置」里,可以找到SDK代码,通过 Podfile 引入浩客SDK

注意: initializeSDK 尽可能越早的调用,其他的API都依赖该API

iOS App 集成示例代码:

import Howxm
...
Howxm.initializeSDK(
        your appId,
        yourViewController,
        {
           //initializeSDK success callack 
           Howxm.identify(Customer("当前用户的唯一ID (required)",  "张三",
                              "zhangsan@howxm.com", "13000000000", ["birthday": "2000-01-02"]), {
                         //identify success callback
                      }, {
                         //identify failed calback
            })
        }

注意:该代码只可应用于所绑定的 iOS App,在进行集成之前,请确认应用ID是否正确。

获取应用ID

你可以在 应用设置-App 设置 中直接复制应用ID。

Step3:验证 SDK 集成是否生效

在完成第二步 SDK 代码集成后,你可以访问所集成 X-SDK 代码的App应用,就可以看到 X-SDK 集成的状态变为 绿色 ,点击会提示App连通中,可以对评价、问卷进行正常投放。 否则你将会看到「App 未连通」的红色提醒:

需要检查SDK代码是否正确安装,或者确认应用绑定的应用ID是否正确。

注意:如果在72小时内,X-SDK没有收到来自目标App的访问数据时,也会出现「App 未连通」的提醒,你可以再次进入App应用,状态即可恢复。

Step 4:投放问卷、评价,回收数据

当 SDK 集成完毕,即可使用浩客评价、问卷等相关能力;也可以邀请团队成员加入到你的应用中,协作进行管理。


2. IOS支持语言

  • iOS SDK 支持 Swift、Objective-C 以及 ReactNative,文章下方所有示例代码均以 Swift 为准,其他示例代码参考github 上放置的demo repo 点击下方对应链接进行访问
  • Swift
  • Objective-C
  • ReactNative

3. X-SDK 接口能力

X-SDK 的接口信息、参数、使用场景,请先查看 接口文档

在完成 X-SDK 集成后,可以使用相关接口能力进行用户身份验证、复杂的免打扰机制,完成更加复杂的场景,比如:

  • 传入用户身份信息,实现复杂的免打扰机制,以及对于人群的定向投放
  • 传入扩展属性信息,用于对某些场景的识别,获得更加细分的数据洞察
  • 手动弹出评价/问卷,用于用户完成某些动作后的,精准投放等

以下为 X-SDK 所具备的接口,参数类型请参考 接口文档 请确保已经阅读并且理解 X-SDK的整体介绍
下方示例代码均以 Swift 为例

3.1 identify 用户身份信息传递

接口信息,详细可查看:identify

以下为示例代码:

// uid is required, extraAttributes 可以传入其他用户属性,例如生日、会员等级、套餐信息等等。属性以 key:value 的形式传入,目前支持数字、字符串、日期类型的数据
Howxm.identify(Customer("uid (required)", "张三",  "zs@howxm.com", "13000000000", ["age": 18]), {
       // success callback
}, {
      // failed calback
})


3.2 event 抛出事件接口

接口信息,详细可查看:event

// 接口定义
Howxm.event(code, attributes,
 yourViewController, // 可选,默认使用initializeSDK中传入的viewController
 {
  // success callback
 }, { 
  // failed callback
 })

// Example
Howxm.event("payment_click", ["product": "pro", "price": 9],
 nil,
 {
  // success callback
 }, { (message: String?) in
  // failed callback
 })

注意:当触发方式为「通过传入事件触发」时,投放规则自动生效。

3.3 checkOpen 弹出策略检查接口

接口信息,详细可查看:checkOpen

checkOpen 接口会基于用户uid和免打扰策略来判断,是否需要给用户弹框显示问卷组件


以下为示例代码:

Howxm.checkOpen("campaignId", "用户uid", {
   // success callback
 }, {
 // 表示当未通过投放规则校验,投放失败
  // failed callback
 })


传入参数说明:

字段 说明 是否必填 类型 备注
campaignId 问卷/评价ID 必填 String 类型 某个问卷/评价ID,请从该问卷/评价的设置中获取
uid 用户id 必填 String 类型 用于识别唯一用户身份

3.4 open 弹出问卷接口

接口信息,详细可查看:open

// customer 选填, 不传默认使用identify 中认证的用户,未identify则为匿名用户
// inViewController 选填,默认使用initializeSDK中传入的inViewController
// extra 选填,其他属性
Howxm.open("campaignId", Customer("用户uid"), ["a": 1],  inViewController); // campaignId可以通过问卷、评价操作栏中「获取问卷ID」/「获取评价ID」进行获取

注意:当触发自动弹出方式为「通过代码调用 Open 触发」时,建议代码调用 checkOpen 判断免打扰检测是否通过

Howxm.checkOpen("campaignId", "用户uid", {
   // success callback 
   // 通过投放规则校验, 打开弹框
   Howxm.open("campaignId")
 }, {
 // 表示当未通过投放规则校验,投放失败
  // failed callback
 })

3.5 register 注册事件回调

通过此方法可注册全局回调事件,在问卷展示和回收过程的不同阶段进行自定义处理。调用方法如下:

Howxm.onBeforeOpen({campaignId, uid, extraAttributes in
    let message = "OnBeforeOpen:campaignId = \(campaignId),uid = \(uid ?? "未设置"),extraAttributes = \(String(describing: extraAttributes))"
    print(message)
})

Howxm.onOpen({campaignId, uid, extraAttributes in
    let message = "OnOpen:campaignId = \(campaignId),uid = \(uid ?? "未设置"),extraAttributes = \(String(describing: extraAttributes))"
    print(message)
})

Howxm.onPageComplete({campaignId, uid, fieldsEntry in
    let message = "OnPageComplete:campaignId= \(campaignId) and uid = \( uid ?? "未设置") and fieldsEntry = \(String(describing: fieldsEntry))"
    print(message)
})

Howxm.onComplete({campaignId, uid in
    let message = "OnComplete:campaignId= \(campaignId) and uid = \( uid ?? "未设置")"
    print(message)
})

Howxm.onClose({campaignId, uid in
    let message = "OnClose:campaignId= \(campaignId) and uid = \( uid ?? "未设置")"
    print(message)
})

回调阶段定义

名称 说明
onBeforeOpen 问卷展示前调用
onOpen 问卷展示后调用
onClose 问卷在屏幕消失后调用
onComplete 用户提交了最后一页题目后调用
onPageComplete 用户每提交一页,系统调用一次