欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

百度APP调起SDK详细设计标准文档

程序员文章站 2022-06-07 23:00:07
一、背景在Android和IOS的设备上的某些浏览器,可以通过deeplink的链接调起相应的App,调起App之后,需要对调起的时间长度进行统计,以及从搜索结果页到App内的用户在调起后在App中的停留时间,并通过这些统计数据来分析,从搜索结果分发的流量是否能够给用户带来更好的体验。二、调起的流程...

一、背景

在android和ios的设备上的某些浏览器,可以通过deeplink的链接调起相应的app,调起app之后,需要对调起的时间长度进行统计,以及从搜索结果页到app内的用户在调起后在app中的停留时间,并通过这些统计数据来分析,从搜索结果分发的流量是否能够给用户带来更好的体验。

二、调起的流程

调起的整个过程简单的来说,就是从网页中点击调起的按钮,然后打开对应的app。

1、前端页面中,将点击的url设置成调起的uri;

2、打开对应的应用,应用解析相应的调起uri参数;

3、sdk获取调起的统计参数,sdk发送统计字段。

百度APP调起SDK详细设计标准文档

 

三、sdk设计

百度APP调起SDK详细设计标准文档

 

四、sdk的功能

产品的需求是统计app从网页中点击到app打开的调起时间,以及调起之后用户在app中停留的时间。sdk的功能是统计调起时间和用户在调起的app中的停留时间。

调起时间的实现方式和计算规则。用户点击web页面中的按钮,生成一个时间戳,app打开后,将相应的web的时间戳通过uri参数的形式带入到app中,并解析,同时生成一个当前的系统时间戳,两者的差值即为调起时长。

调起时长 = app打开时间戳— 网页上链接点击时间戳

app中的停留时间的实现方式和计算规则。停留的截止点存在两种情况,一种是app退出了,一种情况是app被用户切换到后台了,无论哪种情况,会在这两个时间点中选择一个截止时间点。

停留时长 = app到后台或者退出的时间— app打开的时间戳。

五、sdk的兼容性

sdk在设计的过程中已经考虑了对现有的调起生态的兼容,部分应用已经有自定义的scheme,sdk不会改变现有的调起的scheme,与scheme无关。sdk是通过在现有的应用的scheme后添加参数的方式新增字段来处理,理论上应用开发者通过提取data中的值就可以实现对有没有新增参数进行兼容,但部分开发者存在代码中的hardcode,或者考虑不全等问题,因此新增参数也需要考虑新旧版本的兼容性。

应用中已经在manifest中注册的scheme,不会新增或者改变已有的调起scheme,如下samplecode:

//产品线保持不变

android:host="hybrid"/>

为了更好的突出代码重点,例图如下:

百度APP调起SDK详细设计标准文档

 

app调起后,请求中会新增调起参数,需要考虑到对新增uri的兼容性处理,以百度翻译app为例如下:

旧uri为

baidutranslate://home?query=such%20as&from=en&to=zh

百度APP调起SDK详细设计标准文档

 

新uri为

baidutranslate://home?query=such%20as&from=en&to=zh&origin_appsearch=xxxxx1 &baiduid=xxxxxxx2&ts_appsearch=xxxxx3

百度APP调起SDK详细设计标准文档

 

sdk会忽略scheme的改变或者不一致带来的变化,会将该部分的兼容性处理放在前端进行,从而保证sdk在尽可能大的范围内对现有的app的scheme进行兼容。

cookie + timespam,timespam本身也要用于调起时长的处理;

pv-id,沿用百度搜索现有的处理方式。

单用户单次点击的区分

web的进程空间和app的进程空间是独立的,如何将web中的单个用户的单次点击和app中的单个用户的该次调起行为进行统一是sdk需要考虑的一个设计点。目前的单个用户的通过cookie进行区分,多浏览器的多cookie,默认当做多个用户进行区分,单个用户的单次点击通过点击的timespam进行区分。但搜索本身有单个用户的单次点击的统计字段pv-id,因此,前端在扩展字段中传入pv-id也是支持的。那么整体来说,有两种区分办法:

1. cookie + timespam,timespam本身也要用于调起时长的处理;

2. pv-id,沿用百度搜索现有的处理方式。

六、防作弊策略

目前sdk设计上,充分考虑可能出现的作弊场景,依托成熟的商业化反作弊策略,完成了对于作弊行为的监控。

监控到异常情况,会根据相关数据进行追查,确认如果存在作弊行为,将会进行严肃处理。

七、android sdk接入方法

1.在工程目录下导入appsearch-android-sdk.jar。

2. 在网页链接调用app的activity文件下添加:...

import com.baidu.appsearchlib.naslib;

...

在oncreate()函数中添加函数naslib.onclient(contextcontext);

demo:

@override

protected void oncreate(bundle savedinstancestate)

{

super.oncreate(savedinstancestate);

setcontentview(r.layout.activity_main);

...

naslib.onclient(this);

...

}

为了更好的突出代码重点,例图如下:

百度APP调起SDK详细设计标准文档

 

八、ios sdk接入方法

1.获取sdk:sdk包含libappsearch.a静态库与baiduappsearch.h头文件

2.将libappsearch.a和baiduappsearch.h拷贝到工程目录下

百度APP调起SDK详细设计标准文档

 

3.将libappsearch.a和baiduappsearch.h加入工程

百度APP调起SDK详细设计标准文档

 

百度APP调起SDK详细设计标准文档

 

4.查看项目->build phase->link binary with libraries->是否存在libappsearch.a的依赖

百度APP调起SDK详细设计标准文档

 

如果不存在,请点击左下角+号并且添加静态链接库依赖

5.在uiapplication的委派对象(appdelegate)中复写openurl和applicationdidenterbackground方法并在其内添加相关的sdk代码

- (bool)application:(uiapplication *)application openurl:(nsurl *)url sourceapplication:(nsstring *)sourceapplicationannotation:(id)annotation

{

[[baiduappsearch sharedinstance] onclient:[url absolutestring]];

return yes;

}

- (void)ppplicationdidenterbackground:(uiapplication *)application {

[[baiduappsearch sharedinstance] onexit];

}

为了更好的突出代码重点,例图如下:

百度APP调起SDK详细设计标准文档

 

九、百度app调起sdk介绍及code下载地址

android sdk和ios sdk code下载,均可移步至站长社区专帖。

相关标签: 详细设计