You need to enable JavaScript to run this app.
导航
MacOS C++ SDK集成与埋点
最近更新时间:2024.10.09 17:44:03首次发布时间:2024.07.18 17:03:37

操作前须知
  • SDK版本:当前SDK版本在不断迭代发布中,您可前往Git开源页面查看各端的SDK版本情况,推荐使用最新版本SDK。本文中的代码示例以一个版本号作为示例,您实际使用时,需根据使用的实际SDK版本修改其中的版本号。
  • 下载SDK包:集成SDK时,如果您需要手动引入SDK,需前往Git开源页面下载对应版本的SDK包。

1. 获取配置参数

1.1 版本支持须知

目前仅支持Arm64位和x86 64位的MacOS平台。

1.2 获取appid

在开始集成前,首先需要在集团中拥有一个应用,进行SDK集成前,您需要获取对应应用的appid信息。

  • SaaS-云原生场景下,您可以在「项目中心」->「项目管理」->「项目详情」-> 接入应用的「详情」->「应用ID」中可查看您的appid,详情请参见项目管理
    图片
  • SaaS-非云原生场景下,您可以在「应用列表」-> 接入应用的「详情」->「应用ID」中可查看您的appid,详情请参见应用列表
    图片

1.3 获取数据上送地址

私有化部署版本需要获取数据上送地址 reportURL
如您不清楚此地址,请联系您的项目经理或客户成功经理。

2. 集成 增长营销套件SDK

2.1 下载SDK

请前往MacOS C++ SDK包下载页面获取对应版本的SDK包。

说明

  • Windows离线包名称为macos-版本号.zip格式。例如:macos-1.2.4.zip,其中1.2.4为SDK版本号。
  • 下载SDK离线包后请解压压缩包,其中:
    • MacOS SDK(X86 64位):为解压后在目录x86_64下的SDK包
    • MacOS SDK(Arm64位):为解压后在目录arm64下的SDK包

2.2 SDK文件说明

下载后取对应平台的SDK文件,其中包含:

  • applogrs.hpp:公开的接口头文件。
  • applogrs.dylib:动态链接库的运行时加载的dylib文件。

2.3 集成

将下载的SDK文件复制到项目中,需要注意平台架构的文件放在项目的对应平台构建目录中。

2.3.1 TARGETS的通用配置添加动态库

在TARGETS的General中的Framworks, Libraries, and Embeded Content添加一个Framework,弹出框中选择SDK的libapplogrs.dylib文件即可。
图片

2.3.2 添加SDK的头文件到项目的头文件搜索目录

在TARGETS的Build Settings中的Header Search Paths中加入SDK的applogrs.hpp文件所在的目录
图片

2.3.3 代码中引入头文件

在需要调用SDK的代码文件(比如Swift Bridge Header文件)头部,显示的引入applogrs.hpp头文件:

#include "applogrs.hpp"

3. 初始化 增长营销套件SDK

说明
初始化SDK后会采集系统的部分设备信息,包括设备序列号、操作系统软件版本等。

3.1 初始化SDK

SDK会缓存埋点等数据,为保障数据不丢失,需要将数据持久化到本地磁盘中。需要提前准备可以写入数据的文件目录(SDK不会自动创建目录)。

// 1. 设置数据缓存目录,需要已经存在的有访问和写入数据权限的文件目录
applog::setDbDir("/xx/xx");
// 2. 设置域名reportURL,支持私有化部署, SaaS环境请勿修改
char* domain = "https://xxx.xxx.xxx";
applog::setCustomDomain(domain); // 服务域名
// 3. 初始化SDK,需要提前准备好appId和appChannel(appChannel一般为发布的渠道名)
applog::init_rangers(appId, appChannel);

4. 事件与事件属性

4.1 统计日活

在应用打开和应用即将被关闭时,需要手动触发SDK的应用启动接口和SDK的应用退出接口。只有触发了应用启动和应用退出才会上报日活数据。

  • 在应用打开后调用:
applog::launch(); // 应用启动
  • 在应用关闭时调用:
applog::terminate(); // 应用退出

4.2 上报埋点

支持在任意位置采集埋点,埋点内容包含埋点名称和埋点参数两部分,接口示例:

// 这里采集一个埋点
// 参数说明:
// 参数1:埋点名称,不能为空
// 参数2:参数的json字符串,不能为空,且必须为合法的json字符串
applog::onEvent("my_click", "{\"my_param\": 1}");

4.3 公共属性

如需在每个事件中都包括某属性,可通过公共属性设置,无需在每个事件中重复设置。公共属性只需设置一次,即可包括在所有代码埋点事件中。

  • 设置公共属性:
// 添加公共属性
// 参数说明:
// 参数1:属性名
// 参数2:属性值(仅支持字符串)
applog::addCustomHeader("header", "value");
  • 移除公共属性:
// 移除公共属性
// 参数说明:
// 参数1:属性名
applog::removeCustomHeader("header");

5. 登录态

如您的产品中有账户体系,请在用户登录后立即设置 uuid,以保证用户登录前后口径一致性。

// 设置用户的uuid
applog::setUserUniqueId("your_user_unique_id");

6. 其他配置

6.1 打印日志

如果需要查看SDK内部运行日志,需要调用日志开关接口切换日志打印:

// 配置日志开关
// 参数说明:
// 参数1:1-开启日志打印 0-关闭日志打印
applog::setLogEnabled(1);

默认会使用系统的print接口打印日志,如果需要自定义配置日志打印,可以参考下面的接口提供日志打印回调:

void onPrintLog(char *message) {
     cout << "applog sdk log: " << message << "" << endl;
}
applog::AppLog_setLogger(onPrintLog);

v1.5.2+支持

7. FAQ

Q1 macOS C++ SDK打开日志报错或者崩溃是什么原因?

  • 可能原因
    macOS C++ SDK使用了默认的日志打印SDK配置,可能不兼容当前您的系统,您需要手动设置一下logger。
  • 解决方案
    参考以下配置手动设置一下logger。
    // v1.5.2+支持自定义的日志打印器
    void onPrintLog(char *message) {
    cout << "--------------applog sdk log: " << message << “---------------------” << endl;
    }
    applogrs::AppLog_setLogger(onPrintLog);