android开启服务唤起app,APP唤起APP/小程序

本文档介绍了Android如何通过服务端和客户端接口唤起APP和微信小程序,包括API接入流程、广告展示逻辑、广告行为回调、各端交互示例以及代码实现。广告获取接口需通过服务端调用,客户端处理展示和回调。广告展示需判断广告主APP安装状态,确保拉活成功。同时提供了Android和iOS端的代码示例,用于唤起APP和处理广告行为。
摘要由CSDN通过智能技术生成

1. APP唤起APP/小程序

本文档面向LinkActive媒体方,通过调用本文档中的接口来获取拉活的广告资源及回调广告行为。

调用文档接口前,请先联系LinkedME开通LinkActive平台权限,以获取媒体方唯一的linkedme_key。

新增APP唤起微信小程序功能,广告获取接口同APP唤起APP接口一致,返回的参数中包含微信小程序必要的参数,请参考返回参数中红色字体部分;微信小程序的跳转逻辑请参考代码示例部分。

1.1. API接入前提

您的APP需要满足一定条件才能够通过API接入,概括为两点:

能检测广告主的APP是否安装,并能直接唤起广告主APP(安装才展示广告,没有安装则不展示)

能获取到唤起广告主APP的状态,并回传给LinkActive

如果您的APP能支持以上两点,则可只接入服务端;若不支持则需要客户端做相应发版更新。

具体要求参见:API接入前提

1.2. 整体接入流程示意

87c2870359f8438a6db2f3f0a0ca0054.png

1.3. LinkActive各端交互图及步骤说明

82033d95c1206f4d6a1f9f8180d19962.png

1.3.1. 服务端对接说明

建议广告请求过程通过媒体方服务端进行,客户端只处理广告展示及广告行为回调。

服务端需要对接 获取广告 的接口(图中2)

服务端处理返回的广告结果(图中3)并回传给客户端(图中4)

1.3.2. 客户端对接说明

客户端在用户访问时,向自己服务器请求广告(图中1)

客户端需要对服务端返回的广告(图中4)进行处理之后展示,返回结果处理详见 广告展示规则

广告行为发生之后,需要调用 回调广告行为 的接口(图中5)通知LinkActive服务端,回调的值参见 发送回调通知说明

回调广告行为之后处理LinkActive服务端返回的结果(图中6)

广告展示规则

LinkActive的接口请求广告时,返回的是按照优先级排序的每个广告主对应的广告素材,需要根据返回的字段“check_install_status”处理每个广告素材是否保留:如果该条广告check_install_status值为 1,需要判断用户安装状态,app未安装则删除该素材;如果该条广告check_install_status值为0,则不需判断app安装状态,直接展示。

为了防止一个设备对同一广告主产生两次拉活,在完成拉活之后需要做如下处理: 客户端从当次请求的广告列表中删除该条广告,并将其余广告向前顺移。具体流程如下图所示。

bf4d4728eed420dbdec2439b884f5d76.png

包括如下几个主要步骤: 1. 判断广告资源是否为空,若为空则自行处理 2. 判断该广告是做拉活还是拉活兼拉新,如果只是拉活则需要判断广告主APP是否安装,将未安装的APP对应的广告删除;如果是拉活兼拉新,则不需判断广告主APP的安装状态 3. 获得有效广告列表,并按照顺序给用户做展示 4. 为了防止用户重复点击广告,删除已被点击的广告,并将广告列表中的其他广告向前顺移

注意事项

拿到广告列表后首先需要处理将有效的广告保留下来,将无效(需要拉活但实际检测未安装的APP)的广告删除

用户点击广告后,客户端就应该把该次广告立即删除,以免产生二次点击

注意处理返回的广告为空,或者用户点击广告后无有效广告的情况

1.4. 分平台逻辑及代码示例

326a179f2f5122bce65686fbd2911819.png

1.4.1. Android端逻辑

调用“/ad/openapi/v2/get_ad”接口获取广告列表数据(建议服务端调用),LinkedME可能返回多条广告;获取数据后,根据check_install_status字段的值确认是否需要判断安装状态,如需要则通过pkg_name逐条判断应用是否已安装,最终获得有效广告列表,顺次显示广告;若均无效则不展示广告。

用户点击广告唤起APP 当用户点击广告时,通过uri scheme唤起APP(如果第一步展示了未安装的APP广告,跳转到h5地址,建议同时后台下载apk包)。

调用“/ad/openapi/v2/record_status”接口向LinkedME服务器发送广告行为通知。

1.4.2. Android端代码示例

// adInfoArrayList对象为调用get_ad接口获取的广告列表,AdInfo为广告实体

ArrayList adInfoArrayList = new ArrayList<>();

for (int i = 0; i < adInfoArrayList.size(); i++) {

AdInfo adInfo = adInfoArrayList.get(i);

// 不同的广告类型走不同的处理逻辑

// 广告类型:0:普通广告(默认)2:微信小程序广告

if (adInfo.getAdType() == 2) {

// 2:小程序广告,此广告可直接展示

// 展示广告后,调用track的imp_urls字段中的链接上报状态

break;

}else if (adInfo.getAdType() == 0){

// 0:普通广告

// 判断应用是否需要检查App的安装状态

if ("1".equals(adInfo.getCheckInstallStatus())) {

// 需要检查安装状态

if (isAppInstalled(this, adInfo.getPackageName())) {

// 根据返回的包名检查广告主App是否安装,安装则此广告可展示

// 展示广告后,调用track的imp_urls字段中的链接上报状态

break;

}

} else {

// 不需要检查安装状态

// 此广告可展示

// 展示广告后,调用track的imp_urls字段中的链接上报状态

break;

}

}

}

//广告点击

ad_click.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View view){

// 点击广告后,调用track的deeplink_urls字段中的链接上报状态

String uriString = "lkmedemo://?click_id=G4LCXAjn7";

String packageName = "com.microquation.linkedme";

String h5_url = "http://www.linkedme.cc";

String apk_url = "https://github.com/WFC-LinkedME/LinkedME-Android-Deep-Linking-Demo/blob/master/LinkedME-Android-Demo.apk?raw=true";

String user_name = "gh_b83a75769dc2";

String path = " pages/detai

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值