App 渠道追踪

最后更新于:2018-10-17 18:08:04

目前,常见的 App 推广主要有下面四种场景:

下面以这四种常见的场景为例,分别介绍一下神策具体的方案。

1. App 通用渠道推广

对于 iOS 来说,由于 iOS10 的限制,App 通用渠道推广目前只能是模糊匹配,主要是基于 IP、Date、User Agent 构建的模糊匹配,匹配成功率在75%左右。而 Android 本身有渠道包的概念,我们建议直接使用渠道包,可以达到精准匹配。如果不使用渠道包, Android 也会跟 iOS 一样进行模糊匹配。

1.1 构建渠道追踪链接

首先,开发者需要使用神策分析渠道链接生成工具(点击神策分析右上角‘创建渠道链接’进入) ,填入渠道信息及跳转目标,构建渠道追踪链接。

在该工具中,开发者请根据页面中的信息,输入相关渠道信息和跳转链接,例如:

  • 神策分析采集数据的 URL - 假设开发者的神策分析采集数据的地址为: http://${service_name}.cloud.sensorsdata.cn/sa?token=${token},即初始化 SDK 时的 SERVER_URL
  • 跳转目标 URL - Android 或 iOS 的下载地址,也可以是应用宝的微下载地址,或某个落地页的 URL
    • 广告系列来源 - XX宝
    • 广告系列媒介 - Banner
    • 广告系列名称 - Keynote App

在工具中填入的“广告系列来源”等渠道信息,在后续的渠道激活事件中会作为事件属性写入,当用户需要在链接中添加更多属性时,可以点击页面中“增加自定义属性”按钮,并在下方输入属性名称和属性值。如果开发者对我们提供的渠道信息有疑惑,请阅读文章 《如何对付费广告流量进行标记》

那么,如上图,在页面下方会自动生成渠道链接。

根据上面描述的方法,可以分别给 iOS 和 Android 生成渠道链接。开发者可以将该链接提交给渠道商。

提示:

  • Android 如果使用了渠道包,可以不使用该工具生成 Android 渠道链接,直接给渠道商提供 apk 的下载链接地址即可。
  • 如果客户使用了应用宝的微下载功能,也可以直接使用微下载的地址生成一个渠道链接。

1.2 iOS App 调用 trackInstallation:

在 iOS App 中集成并初始化 SDK 后, 当 App 启动时,调用 trackInstallation: 接口(SDK 内部已添加只有 App 安装后的首次调用有效的逻辑),传入代表 App 激活的事件名称及相关事件属性,iOS SDK 会发送追踪事件。如果神策分析根据本次追踪事件的 IP 地址、User Agent 生成的设备指纹,成功匹配服务端的设备信息,则会将设备信息中的渠道信息写入事件属性中;否则,认为匹配渠道信息失败。

    // 记录激活事件,追踪渠道效果
    [[SensorsAnalyticsSDK sharedInstance] trackInstallation:@"AppInstall"];

对于前文中生成的渠道追踪链接,其中渠道信息会被写入事件属性和用户 Profile 中:

  • 广告系列来源 - $utm_source 属性,String 类型
  • 广告系列媒介 - $utm_medium 属性,String 类型
  • 广告系列字词 - $utm_term 属性,String 类型
  • 广告系列内容 - $utm_content 属性,String 类型
  • 广告系列名称 - $utm_campaign 属性,String 类型

用户调用 trackInstallation: 接口等价于同时调用 track: 发送包含上述属性的事件,并调用 profileSetOnce: 设置用户的上述 Profile。

1.3 定制 Android 下载商店渠道包(下载渠道)

对于 Android 可以给应用商店上传带有标记的渠道包( apk 包),便于区分每个渠道的下载量。可以使用 DownloadChannel 来记录下载商店的渠道。这里 DownloadChannel 只是一个示例,如果需要多个字段来标记渠道包,请按业务实际需要添加。

AndroidManifest.xml 中:

<meta-data
    android:name="YOUR_DOWNLOAD_CHANNEL"
    android:value="应用宝" />

初始化 SDK 后,调用 trackInstallation 记录激活事件、渠道追踪:

    try {
            String downloadChannel = null;
            // 获取下载商店的渠道 
             downloadChannel = SensorsDataUtils.getApplicationMetaData(this, "YOUR_DOWNLOAD_CHANNEL");
            JSONObject properties = new JSONObject();
            //这里示例 DownloadChannel 记录下载商店的渠道(下载渠道)。如果需要多个字段来标记渠道包,请按业务实际需要添加。
            properties.put("DownloadChannel", downloadChannel);
            //记录激活事件、渠道追踪,这里激活事件取名为 AppInstall。
            SensorsDataAPI.sharedInstance().trackInstallation("AppInstall", properties);
        } catch (Exception e) {
            e.printStackTrace();
        }

注意: 如果要追踪推广渠道,需要用 App 渠道链接来追踪(推广的渠道链接一般由产品运营人员创建),具体请参考 构建渠道追踪链接

下载渠道:在 apk 代码内的标记,一般用于区分不同的应用商店(例如:应用宝、小米商店)。

推广渠道:渠道链接 URL 中的 utm 信息,一般用于区分不同的推广投放。

1.4 动态添加自定义参数

特别的,如果需要在生成的渠道追踪链接上动态添加自定义参数,可在链接最后手动拼接自定义参数。神策在进行渠道匹配时,匹配成功后会自动将自定义参数添加到激活事件中。若没有特殊需求可忽略该设置。

例如:给不同的用户分配不同的渠道链接,用户使用该链接邀请其他用户下载 App,通过链接参数记录不同用户邀请的其他用户量。


生成的渠道链接为:https://${service_name}.datasink.sensorsdata.cn/r/A

拼接后的链接为:https://${service_name}.datasink.sensorsdata.cn/r/A?indexid=12345

其中 indexid 为自定义参数,可根据需求自行设置。

2. 微信推广

微信推广,常见的有两种方式:

  • 在朋友圈分享落地页
  • 扫描二维码打开落地页

微信推广,与 App 通用渠道推广一样,iOS 也是属于模糊匹配。

微信推广与 App 通用渠道推广基本一致,唯一的区别就是在微信中无法直接跳转到 App Store 的下载地址页面(目前微信只对应用宝的微下载功能开放了该功能)。所以在构建渠道追踪链接时,建议填写应用宝的微下载地址,这样 iOS 用户不仅可以直接跳转到 App Store 的下载地址页面,而且中间落地页也无需自己判断用户手机系统类型跳转不同的下载页面。iOS 和 Android 端的处理方式与 App 通用渠道推广中的 iOS App 调用 trackInstallation:Android App 调用 trackInstallation 一致。

如果需要二维码,将相应的链接生成二维码即可。

3. App 内推广

App 内推广,会稍微复杂一点,因为各个推广平台的做法可能不太一样,下面以在 今日头条广点通 推广为例介绍神策的做法,如果有其他推广平台,请联系我们技术人员配合。

对于 iOS 由于今日头条和广点通会获取用户的 IDFA 并通过回调通知客户,所以要求 iOS App 必须开启 IDFA 作为 匿名ID 才能匹配上。 对于 Android 由于要追踪渠道链接中投放的推广渠道,所以 Manifest 中不能按照神策 `meta-data` 方式定制渠道信息,代码中也不能传入 `$utm_` 开头的渠道字段。Android 端会使用 IMEI 做渠道信息的匹配,动态申请 `android.permission.READ_PHONE_STATE` 权限后再调用 `trackInstallation` 。

在启动页 ActivityonCreate 方法中申请权限:

    //申请 READ_PHONE_STATE 权限
    if(Build.VERSION.SDK_INT >=Build.VERSION_CODES.M){
        if (ActivityCompat.checkSelfPermission(this, "android.permission.READ_PHONE_STATE") != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{"android.permission.READ_PHONE_STATE"}, 100);
        }
    } else {
        // 6.0 以下 直接调用 trackInstallation 触发激活事件,做渠道追踪。
        trackInstallation();
    }

onRequestPermissionsResult 方法中,调用 trackInstallation

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == 100) {
            //申请权限结果回调时,调用 trackInstallation 触发激活事件,做渠道追踪。
            trackInstallation();
        }
    }


    /**
     * 记录激活事件、并做渠道追踪。
     */
    private void trackInstallation() {
        try {
            JSONObject properties = new JSONObject();
            properties.put("DownloadChannel", "应用宝");//这里的 DownloadChannel 负责记录下载商店的渠道。这里传入具体应用商店包的标记。
            //这里激活事件取名为 AppInstall。
            //注意 由于要追踪不同渠道链接中投放的渠道,所以 Manifest 中不能按照神策的方式定制渠道,代码中也不能传入 $utm_ 开头的渠道字段!!!
            SensorsDataAPI.sharedInstance().trackInstallation("AppInstall", properties);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

3.1.1 今日头条配置

向今日头条提供 iOS 和 Android 的下载地址,也可以是中间某个落地页。

请按照如下方式配置今日头条后台广告监测URL:

http://xxxx.com:8006/track_installation?data=idfa(__IDFA__)|imei(__IMEI__)|mac(__MAC__)|os(__OS__)|utm_source(广告来源)|utm_content(广告内容)|callback_url(__CALLBACK_URL__)&gzip=2

其中:

  • http://xxxx.com:8006: 需要替换成实际的神策数据接入地址,如果有指定项目和 Token 参数也需要保留。
  • __IDFA__ 等信息是占位符,是由今日头条回调时替换的,一般无需关心。
  • 广告来源、广告内容: 需要替换成实际的推广标识内容。

3.1.2 广点通配置

  1. 打开并登录 http://e.qq.com/
  2. 左侧点击工具箱;
  3. 点击 “转化辅助” 打开页面;
  4. 点击 “创建新转化” 填写信息:设置步骤中,“转化方案” 请选择 “API方案一”,“Feedback URL” 请参考样例:

    http://YOUR-SENSORS-ANALYTICS-DOMAIN/gdt?utm_source=xxx&project=production&token=XXXXXXX
    
    • YOUR-SENSORS-ANALYTICS-DOMAIN 为神策数据接收地址中的域名;
    • 路径为 /gdt
    • project 为项目名,token 为项目对应的数据接收地址中的 TOKEN(若有);
    • 可指定 utm 参数 utm_sourceutm_mediumutm_termutm_contentutm_campaign
    • 广点通要求 Feedback URL 的端口需要为 80 端口,神策默认为 8006 或 8106,故需要配置 80 端口转发,具体配置可参考文档
  5. 点击 “联调测试” 任意填写一个 ID,例如 AAAA,提示 “联调成功” 则配置完成;

  6. 在 “转化状态” 栏启用;

使用广点通回调需提供“广告主 ID”和相应的“EncryptKey”、“SignKey”,由运维在系统里配置;

3.1.3 百度信息流的配置

  1. 按照图片的步骤进入最后的页面

    image

    image

    image

    image

  2. 监测地址应该写

iOS:

    http(s)://{神策地址}/cb/installation_track?project={项目名}&idfa={{IDFA}}&utm_source={广告系列来源}&utm_campaign={广告系列名称}&$ip={{IP}}&utm_medium={{IDEA_ID}}&utm_content={{UNIT_ID}}&click_time={{TS}}&callback_url={{CALLBACK_URL}}&sign={{SIGN}}&channel_name=baidu_track

Android:

    http(s)://{神策地址}/cb/installation_track?project={项目名}&imei={{IMEI_MD5}}&utm_source={广告系列来源}&utm_campaign={广告系列名称}&$ip={{IP}}&utm_medium={{IDEA_ID}}&utm_content={{UNIT_ID}}&click_time={{TS}}&callback_url={{CALLBACK_URL}}&sign={{SIGN}}&channel_name=baidu_track

链接中的{神策地址}{项目名}需要替换成对应的值。 {广告系列来源}{广告系列名称}等 utm_ 参数需要替换成实际的推广标识内容。

  1. 将 akey 的值发送给神策运维

  2. 之后交给神策运维在后台执行命令

3.1.4 Apps Flyer 用 csv 导入渠道追踪数据

  1. 下载 FormatImporter FormatImporter下载方法。 对于渠道追踪的数据导入,既需要导入事件信息,又需要导入用户信息。

  2. 由于csv中的列的名称不符合我们的数据导入规范,需要修改csv中列的名称(您可以自己编写脚本辅助修改)。其中必须将 IP 修改为 $ip;对于 Media Source,Adset,Ad 等相应的列可以通过您的理解修改为相应的 $utm_source,$utm_term,$utm_content,$utm_medium, $utm_campaign, 这些具体的含义参见 神策分析渠道链接生成工具 页面的最下方。

  3. 首先导入事件信息,使用命令

    python3 format_importer.py csv_event \
     --url 'import_url' \                                       # 数据导入的地址
     --filename 'csv_file_path' \                               # 导入数据的 csv 文件地址
     --project 'project_name' \                                 # 要导入的项目名称
     --distinct_id_from 'IDFA' \                                # distinct Id 的来源列,一般 IOS 选择 IDFA,Android 可选择 IMEI 或 Android Id。
     --event_default '$AppChannelMatching' \                    # 访问渠道追踪链接的事件,建议不修改
     --timestamp_from 'Attributed Touch Time' \                 # 事件发生时间的列来源。
     --timestamp_format '%Y/%m/%d %H:%M' \                      # 时间列来源的时间格式,可根据具体的时间格式修改
     --property_list '$ip,$utm_source,$utm_content,$utm_term' \ # 填写导入的属性列,除了'$ip'必须添加之外, 其他的参数可根据需要进行导入。
     --csv_delimiter '   '                                      # csv 的分隔符,默认是',',可根据具体情况选择是否使用此参数
    
  4. 接着是导入用户信息, 使用命令

    python3 format_importer.py csv_profile \
     --url 'import_url' \                                       # 数据导入的地址
     --filename 'csv_file_path' \                               # 导入数据的 csv 文件地址
     --project 'project_name' \                                 # 要导入的项目名称
     --distinct_id_from 'IDFA' \                                # distinct Id 的来源列,一般 IOS 选择 IDFA,Android 可选择 IMEI 或 Android Id。
     --property_list '$ip,$utm_source,$utm_content,$utm_term' \ # 填写导入的属性列,除了'$ip'必须添加之外, 其他的参数可根据需要进行导入。
     --csv_delimiter '   '                                      # csv 的分隔符,默认是',',可根据具体情况选择是否使用此参数
    
  5. 至此已将 csv 中所有的渠道追踪数据导入完成,可以在埋点管理中查看是否导入成功。

3.2 iOS App 开启 IDFA 作为 distinct_id

具体操作方法请参考 识别用户

3.3 iOS App 调用 trackInstallation:

SDK 版本需要大于等于 1.6.31,请参考 iOS App 调用 trackInstallation:

3.4 Android App 调用 trackInstallation

SDK 版本需要大于等于 1.6.33,请参考 Android App 调用 trackInstallation

4. 短信推广

短信推广,一般是在短信里有一个短链接,当用户在浏览器里打开该链接时,会打开一个落地页,然后再根据手机操作系统类型,分别跳转到不同的下载地址页面。剩下的就跟 App 通用渠道推广一致了。具体可以参考App 通用渠道推广

5. 如何查看渠道追踪

5.1 获取链接点击次数

当用户点击用我们的链接生成工具生成的链接时,会触发 $AppChannelMatching 事件,可通过查询该事件的总次数获取链接的点击次数。

注意: 该事件默认是隐藏的,需要在"元数据"中的“元事件”里勾选“显示所有隐藏事件”,然后将该事件设置为可见。该事件中的 匿名 ID 与 App 中的 匿名 ID 是不相同的,主要是用来统计链接的点击次数,而不能基于 匿名 ID 统计具体某个用户的转化。

5.2 App 激活用户数

A. 选择“行为事件分析”功能

B. 选择事件:trackInstallation: 接口对应的事件名

C. 选择指标:触发用户数

D. 添加分组:广告系列来源