Trace 传参安装是一种在用户安装应用时携带特定参数的技术手段,主要用于:
配置 build.gradle:
implementation 'com.android.installreferrer:installreferrer:2.2'获取安装来源信息:
InstallReferrerClient referrerClient = InstallReferrerClient.newBuilder(context).build();
referrerClient.startConnection(new InstallReferrerStateListener() {
@Override
public void onInstallReferrerSetupFinished(int responseCode) {
switch (responseCode) {
case InstallReferrerClient.InstallReferrerResponse.OK:
try {
ReferrerDetails response = referrerClient.getInstallReferrer();
String referrer = response.getInstallReferrer();
long clickTime = response.getReferrerClickTimestampSeconds();
long installTime = response.getInstallBeginTimestampSeconds();
// 处理这些数据
} catch (RemoteException e) {
e.printStackTrace();
}
break;
// 处理其他响应码
}
}
});配置 Firebase:
implementation 'com.google.firebase:firebase-dynamic-links:21.0.0'创建动态链接:
DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
.setLink(Uri.parse("https://example.com/"))
.setDomainUriPrefix("https://example.page.link")
.setAndroidParameters(new DynamicLink.AndroidParameters.Builder("com.example.app")
.setMinimumVersion(15)
.build())
.buildDynamicLink();
Uri dynamicLinkUri = dynamicLink.getUri();处理传入的链接:
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(pendingDynamicLinkData -> {
Uri deepLink = null;
if (pendingDynamicLinkData != null) {
deepLink = pendingDynamicLinkData.getLink();
// 从deepLink中提取参数
}
});配置 App Store Connect:
获取安装参数:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if let url = launchOptions?[.url] as? URL {
handleDeepLink(url: url)
}
return true
}配置 Firebase:
pod 'Firebase/DynamicLinks'处理传入链接:
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) {
handleDynamicLink(dynamicLink)
return true
}
return false
}
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if let incomingURL = userActivity.webpageURL {
DynamicLinks.dynamicLinks().handleUniversalLink(incomingURL) { (dynamicLink, error) in
if let dynamicLink = dynamicLink {
self.handleDynamicLink(dynamicLink)
}
}
return true
}
return false
}// Express.js 示例
app.post('/track-install', (req, res) => {
const {
deviceId,
referrer,
campaignId,
clickTime,
installTime,
customParams
} = req.body;
// 验证数据
// 存储到数据库
// 可能进行归因分析
res.status(200).json({ success: true });
});本地测试:
测试链接生成:
adb shell am broadcast -a com.android.vending.INSTALL_REFERRER \ -n your.package.name/path.to.ReceiverClass \ --es "referrer" "utm_source=test_source&utm_medium=test_medium"日志记录:
用户授权:
数据安全:
数据保留策略:
// Android延迟深度链接处理
FirebaseDynamicLinks.getInstance()
.getDynamicLink(getIntent())
.addOnSuccessListener(pendingDynamicLinkData -> {
if (pendingDynamicLinkData != null) {
// 应用首次安装时处理延迟深度链接
if (isFirstLaunch()) {
Uri deepLink = pendingDynamicLinkData.getLink();
navigateToContent(deepLink);
}
}
});# 归因分析示例
def attribute_install(click_data, install_data):
# 匹配点击和安装事件
# 使用设备指纹或概率匹配算法
# 确定最终归因渠道
return attribution_result参数丢失问题:
时间戳不准确:
Android Instant Apps干扰:
iOS限制:
通过以上详细的实现方案,开发者可以有效地实现APP trace的传参安装功能,为后续的用户行为分析和渠道效果评估提供可靠的数据支持。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。