跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

剪切板使用说明

U-Link之前拉新统计是根据IP地址+appkey进行模糊匹配,匹配成功了再根据操作系统、设备型号等参数加权选择最相近一条,并且只能统计有效还原时间( Deeplink 设置页可以配置)内安装的App。

但当IP地址变化时(例如用户先用4G网络打开H5页面,点击【唤起app】按钮,然后下载时切换到了wifi地址,会造成H5上报的IP地址和 App 启动时 SDK 上报的IP地址不同),匹配会失败。单纯靠IP地址进行模糊匹配,只能统计约55%~78%的新安装用户,非常不利于拉新奖励场景。

为了能够统计到95%以上的拉新用户,更推荐使用剪切板方案(要求U-Link SDK Android端和iOS端版本均大于等于v1.1.0)。用户在H5页面点击【唤起App】按钮时,服务端会生成一个唯一token,JSSDK会将token写到用户剪切板内。当用户新安装打开App后,App调取获取安装参数接口,SDK会去读取用户剪切板里的内容,将token传递给服务端。服务端会先按照token进行模糊匹配,匹配成功即返回新安装参数。若token模糊匹配失败,则还是会按照之前的IP地址模糊匹配方案。

剪切板整体方案涉及到了用户剪切板读和写两个操作,其中iOS 14读取剪切板时会有弹框提示,为了满足不同开发者需求,U-Link提供了多种开关以供选择

一.服务端生成token开关

U-Link后台的【设置】-【Deeplink配置】页面,开发者可以选择是否将应用和绑定应用的剪切板功能打开。

  • 选择【是】,服务端会生成唯一token,后续需要将此token写入到用户剪切板中/从剪切板中读取

  • 选择【否】,服务端不会生成token,剪贴板方案会失效,JSSDK不会将写入剪切板剪切板2

二.写入剪切板开关

JSSDK具体代码设置请看:https://github.com/umeng/sharelink-jssdk-demo

注:写入剪切板功能要求先在后台把剪切板功能打开

方式一:JSSDK将token写入剪切板(推荐)

用户点击【唤起App】按钮时,服务端会生成token,只要init接口返回时有token参数返回,JSSDK默认就会把此token写到用户剪切板里

注意

写剪切板方案只针对点击按钮唤起App方式,另外一种页面加载时自动唤起App的方式,JSSDK无法写入用户剪切板中,

方式二:JSSDK将其他内容写入剪切板

如果开发者之前已实现剪切板功能,希望剪切板内容里同时保存自己内容和友盟生成的token,但自己写入剪切板过程比较复杂。那么可以拿到友盟生成的token后,自行拼接,将拼接好的内容通过function传递给JSSDK,JSSDK会写到剪切板里

请看JSSDK的demo:剪切板3

注意

由于剪切板内容是开发者拼接的,那么在读取剪切板时也需要开发者读取,请参考第三步的方法3 :开发者自行读取剪切板,将token解析出来传递给SDK,需确保token格式解析正确

方式三:开发者自行写入剪切板

同方式二,但如果开发者希望自行拼接后,能够自行写入用户剪切板中,那么可以将useClipboard设置为false,则JSSDK不会写入剪切板。然后开发者在onready后获取配置下发的token,自行拼接写到剪切板中。但是需处理好写入剪切板时机

注意

由于剪切板内容是开发者拼接的,那么在读取剪切板时也需要开发者读取,请参考第三步的方法3:开发者自行读取剪切板,将token解析出来传递给SDK,需确保token格式解析正确

三.读取剪切板开关

1.打开剪切板读取功能

注:

  • 读取剪切板功能要求先在后台把剪切板功能打开

  • 剪切板功能要求U-Link SDK Android端和iOS端版本均大于等于v1.1.0

方式一:客户端SDK读取剪切板(推荐)

用户在首次安装时,App调取安装参数接口时,如果将剪切板功能打开,那么SDK就会去读取用户剪切板

Android端设置:

//默认读剪切板,无法关闭
    MobclickLink.getInstallParams(this, umlinkAdapter);

iOS端设置:

//默认读剪切板,无法关闭
+ (void)getInstallParams:(void (^)(NSDictionary *params, NSURL *URL, NSError *error))completion;

方式二:开发者读取剪切板后传递给SDK

如果开发者之前已有剪切板方案,希望能够自行读取剪切板,那么开发者可以从剪切板里将token解析出来(需确保解析后token格式正确),传递给U-Link SDK,SDK不会再去读取剪切板内容

Android端设置:

//将剪切板内容通过token传递给SDK,SDK不会读剪切板
public static void getInstallParams(Context context, String token, UMLinkListener listener)

iOS端设置:

//将剪切板内容通过token传递给SDK,SDK不会读剪切板
+ (void)getInstallParams:(void (^)(NSDictionary *params, NSURL *URL, NSError *error))completion token:(NSString *)token;

2.关闭剪切板读取功能

如果不需要剪切板功能,可以在SDK接口设置

Android端设置:

//将clipBoardEnabled设置为false,则不会读剪切板;设置为true会读剪切板
public static void getInstallParams(Context context, boolean clipBoardEnabled, UMLinkListener listener)

iOS端设置:

//将enablePasteboard设置为no,则不会读剪切板;设置为yes会读剪切板
+ (void)getInstallParams:(void (^)(NSDictionary *params, NSURL *URL, NSError *error))completion enablePasteboard:(BOOL)enablePasteboard;