什么是多渠道包 渠道包就是要在安装包中添加渠道信息,也就是channel,对应不同的渠道,例如:小米市场、360市场、应用宝市场等 产品在不同的应用市场可能有不同的统计需求,需要为每个应用市场的Android 包设定一个可以区分应用市场的标识,这个为Android包设定应用市场标识的过程就是多渠道打包。 为什么要提供多渠道包 国内存在着有众多的应用市场,产品在不同的渠道可能有不同的统计需求,为此Android开发人员需要为每个应用市场发布一个安装包,这里就引出了Android的多渠道打包。 在安装包中添加不同的标识,应用在请求网络的时候携带渠道信息,方便后台做运营统计。 友盟的多渠道打包 友盟就提供了多渠道打包的方式,可用于渠道统计等。 2、Flavors : 产品渠道,可以根据productFlavors,针对不同的渠道配置个性化apk 3、BuildVariants:每一个buildtype和flavor组成一个buildvariant
但是在技术统计层面上,渠道越多复杂性越大,由于移动端采用的统计算法不同,通常会出现误差或只能做到统计首次点击,因此我们需要精准的第三方渠道统计工具来告诉我们正确的结论。 二、渠道效果如何统计 其实广告统计的技术逻辑也并不复杂,我们用第三方渠道统计监测SDK openinstall 为例来说明。 多渠道参数 (4).png 这其中最关键的一点在于:多个渠道的推广目标属于同一个App时,激活的数据必须归属于最后一次点击的媒体。 三、应用场景拓展 1、多维度渠道推广 上述这种渠道统计方案不仅可以用于线上的App原生、信息流等广告,也可以应用到App好友邀请、App换量、渠道买量,甚至是线下地推、户外广告、二维码推广等一切推广场景 ,同样是以链接/二维码的形式实时统计各自渠道的推广效果。
熟悉App开发和推广流程的小伙伴都知道,开发一款App只是第一步,App想要上架应用市场进行下载推广,还要面临繁琐的渠道打包工作,给每一个应用市场打一个对应的渠道包,是统计渠道数据的关键。 此外,客户端还需要把收集来的渠道码通过接口发送给服务端,以便运营人员统计渠道的安装数据,开展下一步的运营推广。 它的优点在于,Android工程师不需要打渠道包,只需要集成一个标准包就能精确的进行渠道统计,并且同时支持Android和iOS系统。 可以登录openinstall官网:www.openinstall.io 注册账号可以免费测试体验以下的渠道统计功能。 一、解决渠道打包和统计 如何解决多渠道打包问题呢? 20180524122313163.png 三、驾驭海量渠道数据 在大型活动拓展、海量渠道推广的过程中,App整体的推广效益更值得观察,openinstall的应用统计功能也兼具了App完整的数据统计功能
二、App渠道统计方法介绍 国内外App渠道统计方法概述: 要想选择好App渠道统计方法,首先要对App渠道统计形势有一个系统的全局了解。 我们先简单说一下App渠道统计在国内市场与国际市场的差异。 有别于海外市场的国内App渠道统计方法: iOS 渠道统计方法: iOS 是无法制作渠道包的,因此iOS 的渠道统计必须是免打包渠道统计。 Android 渠道统计方法: 1111.jpg 1)渠道分包统计 每当App发布新版本时,给各个渠道制作携带不同渠道参数的渠道包,分发到对应的推广渠道,以实现对各个渠道下载激活量的统计。 2)填写渠道识别码统计(邀请码/渠道码) 和iOS的填渠道识别码统计一样,安卓也曾将填写渠道识别码作为渠道统计的一种重要方法。 3)免打包渠道统计 基本上与前文iOS 免打包渠道统计一致,是基于渠道链接的统计方法,本质上是为每一个渠道(甚至每一个用户)生成一个渠道链接进行统计。
相信做过APP运营推广的小伙伴们应该对APP渠道统计并不陌生吧。 如今国内有很多第三方统计工具,比如比较有名的:TalkingData、百度统计、openinstall等。而本文主要讲的是 openinstall 的免打包渠道统计服务。 这里说的免打包指的是通过渠道链接代替渠道包来统计数据的方法。 2、让渠道统计变得更加简单、灵活 因为免打包是通过渠道链接代替渠道包来实现多渠道统计的,所以APP推广运营人员可以简单、灵活、无限制的增加创建推广渠道链接,无需技术人员插手;同时iOS端也可以通过免打包的方法实现多渠道统计 3、避免串包 所谓的串包是指某些应用商店通过网络爬虫,抓取其他渠道的APP安装包,造成渠道包错乱,统计数据出错的现象。而免打包渠道统计就可以有效的规避这种情况的出现。
App推广运营人员每天最关心的就是渠道数据的变化,毕竟这是衡量工作效果的直接方法。但渠道数据的获取有哪些要点,你真的清楚吗?今天让我们简单了解一下App渠道统计的基础知识,以及高效的统计方法。 方法二:免打包渠道统计(渠道链接统计) 区别于渠道包,这是基于渠道链接的一种渠道统计方法,国内的第三方平台openinstall 可以实现,具体做法是在上传一个原始包之后,生成对应的渠道链接,然后在渠道链接基础上导出对应的安装包进行分发 5个的情况下统计数据不予显示(甚至渠道链接也不显示,需要开发者自行复制保留),当然,苹果的统计工具也不能兼容Android 系统的数据统计。 openinstall 的渠道链接方案除了能实现免打包渠道统计外,还能实现免渠道识别码(邀请码)绑定渠道关系等功能,通过程序化自动生成渠道链接,即便是地推、广告统计等渠道,也能通过openinstall 生成渠道链接、二维码进行统计,灵活高效,为App推广和统计实现最大程度的渠道推广效益。
我们都知道,Android 市场被分割成几十个应用商店渠道,程序员给渠道打包、更新是一件异常繁杂又不得不做的工作,但现在有一种快捷灵活的免费多渠道统计方式,能最大程度的提高打包效率和数据安全性。 接下来正式开始多渠道打包。 1、首先在渠道管理中新增渠道,可以自己定义渠道编号和名称,比如上传到应用宝市场的,可以定义渠道ID为“应用宝”,方便后期查看统计数据。 2、添加完渠道后,在列表中选择对应渠道,在渠道包下点击“导出”按钮,选择对应的原始包即可导出,导出安装包后即可测试,测试无误再上传到相应的应用商店就能自动统计相应信息。 ? 至此,多渠道打包工作通过这两步就完成了,理论上可以创建无数个渠道,简单到无以复加。接下来再介绍数据统计功能。 3、渠道产生的统计数据可以直接在渠道列表中直观的查看。 ? 4、如果你对统计维度不够满意,可以根据需求创建自定义效果点,代码中调用相关Api 即可实现,openinstall 的所有数据均是实时排重,实时统计的。 ?
如今,APP获客渠道越来越多样化——地推、社群裂变、广告投放、KOL合作、ASO优化……然而,多渠道推广也带来了一个核心问题:如何精准统计各渠道的转化效果? 有没有一个工具,能一站式整合所有渠道数据,让推广效果一目了然?为什么APP多渠道数据统计如此困难? 在没有第三方工具的情况下,精准追踪每个渠道的效果是很困难的任务,这主要源于以下几个问题:1、地推渠道难以量化: 传统的扫码安装,我们只能统计到总的安装量,无法区分是哪个地推人员、哪个物料、哪个地点带来的用户 4、技术实现复杂: 自研一套能够覆盖所有场景的渠道归因系统,需要投入相当的研发资源,耗费人力成本不说,归因准确率也难以保证。 整合全渠道推广数据,闭环全链路转化行为在评估渠道推广效果时,通常需要在多个平台间来回切换、手动拉取Excel表格。
一、流量红利消退,全渠道统计为何成为刚需? 全渠道归因分析:打通H5渠道、广告平台等渠道类型,支持100+种类型不同渠道的归因统计,一站式归因各类渠道类型投放,便于一站式管理分析。 明确统计目标初级需求:监测各渠道下载量、激活成本;进阶需求:分析渠道用户质量(留存、付费率)、跨渠道协同效应。 四、行业案例:全渠道统计如何改写增长曲线? 结语:全渠道统计——存量时代的增长杠杆在流量争夺白热化的今天,全渠道统计不仅是技术工具,更是企业精细化运营的核心竞争力。
在上一篇文章当中,表里面有一个渠道类型,我们这节主要是将这个渠道类型创建好,首先我们来看看字典表。 添加字典类型 添加字典数据 排个序,线下渠道显示排序值为 1。 最后将前端的若依文字替换一下:
ExcelUtil<Channel> util = new ExcelUtil<>(Channel.class); util.importTemplateExcel(response, "渠道数据 "); } @Log(title = "渠道管理", businessType = BusinessType.IMPORT) @PreAuthorize("hasPermission('tienchin AjaxResult.success(iChannelService.importChannel(channelList, updateSupport)); } IChannelService /** * 导入渠道数据 * * @param channelList 渠道数据列表 * @param updateSupport 是否更新支持,如果已存在,则进行更新数据 * @return {@code boolean
更改一下菜单权限,将删除渠道的 delete 改为 remove: ChannelController.java @PreAuthorize("hasPermission('tienchin:channel :remove')") @Log(title = "渠道管理", businessType = BusinessType.DELETE) @DeleteMapping("/{channelIds}") return toAjax(iChannelService.deleteChannelByIds(channelIds)); } IChannelService.java /** * 删除渠道 * * @param channelIds 渠道ID * @return int {@code 0} 失败 {@code 1} 成功 * @author BNTang * @since 2023
ChannelController /** * 导出渠道列表 */ @PreAuthorize("hasPermission('tienchin:channel:export')") @Log(title "); } Channel.java /** * 渠道id */ @TableId(value = "channel_id", type = IdType.AUTO) @Excel(name = " 渠道编号", cellType = Excel.ColumnType.NUMERIC) private Integer channelId; /** * 渠道名称 */ @Excel(name = "渠道名称") private String channelName; /** * 渠道状态 * 1 正常,0 禁用 */ @Excel(name = "渠道状态", readConverterExp :1 线上渠道 2 线下渠道 */ @Excel(name = "渠道类型", readConverterExp = "1=线上渠道,2=线下渠道") private Integer type;
ChannelVO /** * @author BNTang * @version 1.0 * @description 渠道管理,前端展示对象 * @since 2023-11-02 **/ }") private String channelName; /** * 渠道状态 * 0 正常 1 停用 */ @Max(value = 1, :1 线上渠道 2 线下渠道 */ @Max(value = 2, message = "{channel.type.invalid}") @Min(value = 1, message "添加成功" : "添加失败"); } IChannelService /** * 添加渠道 * * @param channelVO 渠道信息 * @return int {@code 0} = null) { // 说明渠道名称已经存在 return 0; } // 保存渠道信息 Channel channel = new Channel
iChannelService.selectChannelList(channelVO); return getDataTable(list); } IChannelService /** * 分页查询渠道列表 * * @param channelVO 渠道信息搜索条件 * @return {@code List<Channel> } * @author BNTang * @since 2023/09 ChannelVO channelVO) { return channelMapper.selectChannelList(channelVO); } ChannelMapper /** * 分页查询渠道列表 * * @param channelVO 渠道信息搜索条件 * @return {@code List<Channel> } * @author BNTang * @since 2023/09
说到渠道归因,那最容易想到的就是传统的渠道归因,这种方法一般是基于业务决策的。 首次归因:首次点击渠道赋予全部转化 末次归因:末次点击渠道赋予全部转化 线性(平均)归因:每个渠道均分转化 位置归因:自定义位置的权重,一般首位占50%,其余为0 时间衰减归因:距离转化的时间越短的渠道 iota 2 3.195 6 2 alpha > iota > alpha > alpha > alpha > iota > ... 2 6.754 6 3 beta > eta 1 2.402 3 4 first_touch first_last_touch_conversions 0 alpha 7377.5 1 beta 1910.0 2 delta 3.0 3 epsilon 315.0 4 laps_touch laps_touch_conversions 0 alpha 0.300000 1 beta 1.333333 2 eta 2.833333 3 iota 13.033333 4
Collectors.toList()); } return Collections.emptyList(); } 编写查询接口 更改 ChannelController: /** *
* 渠道管理表 return getDataTable(iChannelService.selectChannelList()); } } 更改 IChannelService: /** *
* 渠道管理表 2023-08-22 */ public interface IChannelService extends IService<Channel> { /** * 查询渠道列表 08/26 09:32:57 */ List<Channel> selectChannelList(); } 更改 ChannelServiceImpl: /** *
* 渠道管理表 since 2023-08-22 */ public interface ChannelMapper extends BaseMapper<Channel> { /** * 查询渠道列表
其中数据格式定义如下: 而添加的渠道信息如下所示: 该种方式较前两种方式实现相对麻烦些,特别是渠道信息的获取需要读取整个APK,解析注解,获取渠道信息,另外就是兼容性不是很好。 android:name="Goapk_Market" android:value="Goapk"> </meta-data> 该种方式是目前应用最广的一种,比如友盟统计 sdk,腾讯统计sdk等。 ,该工具主要基于manifest和meta渠道包制作方式,实现快速批量多渠道包的生成。 docId=101829642806284288 自动化打包apk总结并整合资料 - 简书 https://www.jianshu.com/p/4a07d902066f
简简单单介绍一个编写Vue时的一个小技巧,那么接下来进入核心内容,展示渠道信息的开发。 url: '/tienchin/channel/list', method: 'get', params: query }) } // 查询渠道详细 [{required: true, message: "渠道类型不能为空", trigger: "blur"}] }, }); /*** 渠道导入参数 */ const upload = reactive ({ // 是否显示弹出层(渠道导入) open: false, // 弹出层标题(渠道导入) title: "", // 是否禁用上传 isUploading: false, $modal.confirm('是否确认删除渠道编号为"' + channelIds + '"的数据项?').
在笔者看来,一个优秀的推广渠道不仅要用稳定的新增用户和活跃用户,还在在数据上体现出用户真实的行为数据来供我们不断优化产品,想分享一些平时工作中总结的通过统计工具评估渠道质量的方法。 之前有开发者发现说渠道新增这个指标,市场统计的量和第三方统计平台的量经常有偏差,这往往是由于,第三方统计平台统计的是激活量。所以你是按下载量/注册量来算,还是按设备ID来识别一个用户,这个很重要。 活跃用户构成:很多应用统计的报表中提供了“活跃用户构成”这个指标,它能清晰的体现出活跃用户中的新老用户所占的比例。 基本的指标介绍到这,参考友盟的统计分析,我认为用户活跃度、用户留存率和自定义事件这几个指标是普遍有用的,起码在产品推广初期这几个指标是最重要的。 不过,只要我们活用统计分析工具,总能撕开不良渠道推广商的伪装,在看似漂亮的推广数据背后找到造假的蛛丝马迹,通过各种数据指标的对比,筛选出效果最佳的推广渠道。