Google Play Install Referrer API 和 Facebook App Ads Referral 集成

news2024/11/25 18:52:42

介绍:

由于需要精准的获取投放广告的数据(投放的平台,防止数据的丢失等)。我们使用了Google Play Install Referrer API 和Facebook App Ads Referral结合采集数据,然后通过后台服务记录数据。最后服务器记录的数据与Facebook提供的数据对比,检查数据的真实性、丢包概况等。最后得出结论可以用于后续运营策略。

官网:

  1. Google Install Referrer API

  1. Google Play 网址构建工具

  1. Facebook App Ads Referral

  1. Facebook App管理平台

要求:

  1. 解决网络问题。(您懂得)

  1. 需要有Google Play 管理中心帐号。

  1. 需要有Facebook 管理中心帐号。

  1. 手机需要安装了 Google Play 应用版本 8.3.73 或更高版本的设备自动提供该 API。

集成前的准备

模拟广告链接:可以通过Google Play 网址构建工具生成。

我模拟生成的如下:

https://play.google.com/store/apps/details?id=com.UCMobile.intl&referrer=utm_source%3Dtaobao%26utm_medium%3Dbanner%26utm_term%3Drunning%26utm_content%3D%25E6%2588%2591%25E6%2598%25AF%25E5%25B0%258F%25E5%25BC%25BA%26utm_campaign%3D%25E6%2595%25B2%25E4%25BB%25A3%25E7%25A0%2581%25E7%259A%2584%25E5%25B0%258F%25E5%25BC%25BA%26anid%3Dadmob

Google Play Install Referrer API集成:

将以下行添加到应用的 build.gradle 文件的依赖项部分:

dependencies {
    implementation "com.android.installreferrer:installreferrer:2.2"
}

连接到 Google Play 获取安装引荐来源

提示:
  1. 使用try catch。installVersion有可能会为null。会报空指针。

  1. Log打印的地方,就是将response.installReferrer(已加密)结果传给后端。然后后端通过Facebook解密。得到投放广告的数据。

  1. response.installReferrer返回的是已经加密的数据,需要解密需要拿到Facebook秘钥key解密。(下面会介绍到key的位置)

package com.UCMobile.intl

import android.content.Context
import android.util.Log
import com.android.installreferrer.api.InstallReferrerClient
import com.android.installreferrer.api.InstallReferrerStateListener
import com.android.installreferrer.api.ReferrerDetails

/**
 * @author 小强
 *
 * @time 2023/1/9  15:25
 *
 * @desc Google Play Install Referrer API库
 *
 */
class InstallReferrer {


    /**
     * 初始化Play Install Referrer 库
     */
     fun initReferrerClient(context : Context) {

        //启动并与 Play 商店应用的连接
        val referrerClient : InstallReferrerClient = InstallReferrerClient.newBuilder(context).build()

        referrerClient.startConnection(object : InstallReferrerStateListener {
            //onInstall Referrer安装完成
            override fun onInstallReferrerSetupFinished(responseCode : Int) {
                when (responseCode) {
                    InstallReferrerClient.InstallReferrerResponse.OK -> {
                        try {
                            //连接已建立后获取安装引荐来源
                            val response : ReferrerDetails = referrerClient.installReferrer
                            //已安装软件包的引荐来源网址。
                            val referrerUrl : String = response.installReferrer
                            //引荐来源网址点击事件发生时的客户端时间戳(以秒为单位)。
                            val referrerClickTime : Long = response.referrerClickTimestampSeconds
                            //应用安装开始时的客户端时间戳(以秒为单位)。
                            val appInstallTime : Long = response.installBeginTimestampSeconds
                            //引荐来源网址点击事件发生时的服务器端时间戳(以秒为单位)。
                            val appServerTime : Long = response.referrerClickTimestampServerSeconds
                            //首次安装应用时的应用版本。
                            val installVersion : String = response.installVersion
                            //表明应用的免安装体验是否为过去 7 天内发布的。
                            val instantExperienceLaunched : Boolean = response.googlePlayInstantParam
                            
                            //断开服务连接(断开连接将有助于避免出现泄露和性能问题。)
                            referrerClient.endConnection()

                            Log.e("hzq", "推荐url-->" + referrerUrl)
                            Log.e("hzq", "推荐点击事件发生时的时间戳(单位是秒)-->" + referrerClickTime)
                            Log.e("hzq", "app安装时间时间戳(单位是秒)-->" + appInstallTime)
                            Log.e("hzq", "服务器端时间戳(单位是秒)-->" + appServerTime)
                            Log.e("hzq", "首次安装应用时的应用版本-->" + installVersion)
                            Log.e("hzq", "免安装体验是否过去7天内发布的-->" + instantExperienceLaunched)

                        } catch (e : Exception) {

                        }

                    }
                    InstallReferrerClient.InstallReferrerResponse.FEATURE_NOT_SUPPORTED -> {
                        //当前Play Store应用程序上没有API。
                    }
                    InstallReferrerClient.InstallReferrerResponse.SERVICE_UNAVAILABLE -> {
                        //无法建立连接。
                    }
                }
            }

            //onInstall Referrer服务已断开连接
            override fun onInstallReferrerServiceDisconnected() {
                Log.e("hzq", "onInstall Referrer服务已断开连接")
                //尝试在下次请求时重新启动连接
                //通过调用startConnection()方法来Google Play。
            }
        })
    }
}

打印结果:

 response-->com.android.installreferrer.api.ReferrerDetails@f2f9a14
 推荐url-->utm_source=%E6%B7%98%E5%AE%9D&utm_medium=banner&utm_term=%E5%B0%8F%E5%BC%BA&utm_content=%E6%88%91%E6%98%AF%E5%B0%8F%E5%BC%BA&utm_campaign=%E6%95%B2%E4%BB%A3%E7%A0%81%E7%9A%84%E5%B0%8F%E5%BC%BA&anid=admob
 推荐点击事件发生时的时间戳(单位是秒)-->1673259864
 app安装时间时间戳(单位是秒)-->1673259870
 服务器端时间戳(单位是秒)-->1673259863
 首次安装应用时的应用版本-->13.4.0.1306
 免安装体验是否过去7天内发布的-->false

重点:模拟安装测试(手机应用必须需要有Google Play应用商店

  1. 如果Google Play 应用商店 已经有自己应用的情况下:可以在模拟广告链接的时候把自己的应用包名填上去。点击广告投放链接进入到应用商店,点击安装。然后再取消安装。然后再本地项目中运行到手机上。最后安装成功后启动应用就会有InstallReferrerClient信息。

  1. 如果Google Play 应用商店 没有自己应用的情况下:我们需要把我们的应用包名改成应用商店已有的应用包名。我当前项目模拟的时候就是使用UC的包名(com.UCMobile.intl)。然后点击广告投放链接进入到应用商店,点击安装。然后再取消安装。然后再本地项目中运行到手机上。最后安装成功后启动应用就会有InstallReferrerClient信息。

Facebook App Ads Referral Key的获取:

  1. 需要自己在Facebook App管理平台添加一个应用。

  1. 在应用的 设置-> 基本 -> Google Play 中可以找到。如下图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/154123.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

openwrt tc(traffic contrl)配置及使用

在某些情况下,嵌入式设备需要用到弱网环境进行测试。网上针对tc的配置有很多,但是7688的没找到,所以做个记录,方便大家使用。netem配置 Kernel modules > Network Support > kmod-netemqos-scripts配置> Base system >…

甲氧基聚乙二醇-葡聚糖 mPEG-Dextran结构式;Dextran-PEG科研实验用

甲氧基聚乙二醇-葡聚糖 mPEG-Dextran 中文名称:甲氧基聚乙二醇-葡聚糖 英文名称:mPEG-Dextran 规格:500mg/1g/5g/10g 分散系数:小于等于1.05 分子量(PEG):2000;3400&#xff1b…

Jmeter5.0之 dubbo插件安装

我记得之前 这个链接:https://github.com/ningyu1/jmeter-plugins-dubbo/tree/master/dist 能下载现成的dubbo插件,现在这个链接访问后提示404、网上搜索提供了最新的获取方式,1、访问链接:https://github.com/ningyu1/jmeter-plu…

ForkJoin

什么是ForkJoin ForkJoin在JDK1.7,并行执行任务!提高效率,大数据量! 大数据:Map Reduce(把大任务拆分为小任务) ForkJoin特点:工作窃取 这个里面维护的都是双端队列 当第一行的任务执…

AJAX

目录1 AJAX 快速入门1.1 介绍1.2 原生 JavaScript 实现 AJAX1.3 原生JS实现AJAX详解1.4 jQuery 的 GET 方式实现 AJAX1.5 jQuery 的 POST方式实现 AJAX1.5 jQuery 的 通用方式实现 AJAX2 JSON 的处理2.1 JSON 回顾2.2 JSON 转换工具的介绍2.3 JSON转换练习3 案例-搜索联想4 案例…

git 切换分支

1. 查看远程分支,查看当前所有git branch -a 2. 查看本地分支git branch * master3. 切换分支 //创建分支 git checkout -b test origin/test //切换分支 git checkout 分支名

iframe 页面间的通信(分享)

文章目录1. 概述2. 页面之间传递数据3. 直接获取父页面的数据4. 获取父级页面源的信息1. 概述 在许多老的项目中使用的都是 iframe 进行的页面嵌套,我这里写了三个页面进行演示红色的页面为最外层,本地开的服务,端口为 5500,而黄色…

官宣了,德云社京剧神童陶阳亮相河南春晚,为什么不是老乡岳云鹏

随着春节的临近,一年一度的央视春晚,也即将拉开大幕与观众见面,不过今年却略有不同。虽然央视春晚还没有开播,互联网上面就一片抵触声音,有人甚至给出了建议,希望省下钱给大家发红包。 与央视春晚形成鲜明对…

未来的分析型数据库是什么样的?

本文来自于 Doris Summit 2022 演讲实录,演讲人:陈明雨十年对于数据库意味着什么?身处在日新月异的时代,我们见惯了技术的兴起与繁荣、变迁与衰落,甚至是朝荣夕灭。信息技术以前所未有的速度更迭,给周遭事物…

从0到1完成一个Vue后台管理项目(十四、对话框封装、接口联通、api优化 很重点(封装思想))

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

React Fiber 树思想,解决业务实际场景

熟悉 Fiber 树结构 我们知道,React 从 V16 版本开始采用 Fiber 树架构来实现渲染和更新机制。 Fiber 在 React 源码中可以看作是一个任务执行单元,每个 React Element 都会有一个与之对应的 Fiber 节点。 Fiber 节点的核心数据结构如下: …

基于javaweb+springboot+HTML汽车配件管理系统设计和实现以及文档报告

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言…

Java面试题,这是一篇会一直更新的博客!欢迎大家留言~

Java面试题1、面向对象与面向过程2、Spring源码分析(可能比较复杂,但是看下去可能会找到让你顿悟的字眼)2.1、Spring创建Bean对象2.2 实例化(推断构造方法)1、面向对象与面向过程 封装:封装在于明确标识出允…

快递驿站取件管理系统|基于SpringBoot的快递栈系统设计与实现

作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、掘金特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助 收藏点赞不迷路 关注作者有好处 文末获取源…

商场楼层地图怎么制作,高效、便捷的商场二三维地图绘制平台

当顾客走进庞大的商场购物中心,如何让顾客在商场购物消费时有更轻松方便的体验?如何能快速将品牌和商品传递给潜在顾客,并一键引导顾客到店?电子地图作为大家最喜闻乐见的高效应用形式,在商业应用中,不论针…

arduinoIDE下载keypad和password库文件

任务需求:需要使用4*4矩阵键盘来完成一个按键密码锁 需要使用keypad和password这两个开源库 开源库的查找 1.在IDE中直接查找 同时在更多中能够看到api文档 2.在官网中进行找寻 至于导入的方式比较简单就不做叙述 keypad库文件文档api分析 api可以在官网中有…

用Python找出了删除自己微信的所有人并将他们自动化删除了

用Python找出了删除自己微信的所有人并将他们自动化删除了 你是否有微信被删了好友不自知,还傻傻的给对方发消息,结果出现了下图中那尴尬的一幕的经历呢?其实我们可以用Python提前把他们找出来并自动化删除避免尴尬的。 为了避免再次出现上…

Tools for better thinking

内容来自untools官网,感兴趣的可以去翻译一下,我只做下总结 理解系统 Concept mapConnection circlesIceberg ModelBalancing feedback loopReinforcing feedback loop 做出决策 Cynefin frameworkSix Thinking HatsSecond-order thinkingEisenhower Mat…

【LeetCode】753. 破解保险箱

753. 破解保险箱 题目描述 有一个需要密码才能打开的保险箱。密码是 n 位数, 密码的每一位是 k 位序列 0, 1, ..., k-1 中的一个 。 你可以随意输入密码,保险箱会自动记住最后 n 位输入,如果匹配,则能够打开保险箱。 举个例子&#xff0c…

怎么看电脑配置?Windows和Mac系统配置的查看方法

电脑的配置一般指电脑硬件配件的高档程度和性价比,计算机的性能主要取决于主要的硬件配置。很多朋友在购买电脑之前应该注意查看电脑的配置,怎么看电脑配置?下面有关于Windows系统和Mac系统电脑配置的不同查看方式,一起来看看吧&a…