在 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 |
创建应用时,选择应用类型「iOS」,并完善应用信息,包括应用名称(必填)及App Bundle ID(非必填)。
在创建完成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。
在完成第二步 SDK 代码集成后,你可以访问所集成 X-SDK 代码的App应用,就可以看到 X-SDK 集成的状态变为 绿色 ,点击会提示App连通中,可以对评价、问卷进行正常投放。 否则你将会看到「App 未连通」的红色提醒:
需要检查SDK代码是否正确安装,或者确认应用绑定的应用ID是否正确。
注意:如果在72小时内,X-SDK没有收到来自目标App的访问数据时,也会出现「App 未连通」的提醒,你可以再次进入App应用,状态即可恢复。
当 SDK 集成完毕,即可使用浩客评价、问卷等相关能力;也可以邀请团队成员加入到你的应用中,协作进行管理。
X-SDK 的接口信息、参数、使用场景,请先查看 接口文档
在完成 X-SDK 集成后,可以使用相关接口能力进行用户身份验证、复杂的免打扰机制,完成更加复杂的场景,比如:
以下为 X-SDK 所具备的接口,参数类型请参考 接口文档
请确保已经阅读并且理解 X-SDK的整体介绍
下方示例代码均以 Swift 为例
接口信息,详细可查看:identify
以下为示例代码:
// uid is required, extraAttributes 可以传入其他用户属性,例如生日、会员等级、套餐信息等等。属性以 key:value 的形式传入,目前支持数字、字符串、日期类型的数据
Howxm.identify(Customer("uid (required)", "张三", "zs@howxm.com", "13000000000", ["age": 18]), {
// success callback
}, {
// failed calback
})
接口信息,详细可查看: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
})
注意:当触发方式为「通过传入事件触发」时,投放规则自动生效。
接口信息,详细可查看:checkOpen
checkOpen 接口会基于用户uid和免打扰策略来判断,是否需要给用户弹框显示问卷组件
以下为示例代码:
Howxm.checkOpen("campaignId", "用户uid", {
// success callback
}, {
// 表示当未通过投放规则校验,投放失败
// failed callback
})
传入参数说明:
字段 | 说明 | 是否必填 | 类型 | 备注 |
---|---|---|---|---|
campaignId | 问卷/评价ID | 必填 | String 类型 | 某个问卷/评价ID,请从该问卷/评价的设置中获取 |
uid | 用户id | 必填 | String 类型 | 用于识别唯一用户身份 |
接口信息,详细可查看: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
})
通过此方法可注册全局回调事件,在问卷展示和回收过程的不同阶段进行自定义处理。调用方法如下:
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 | 用户每提交一页,系统调用一次 |