剪切板使用说明
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不会将写入剪切板

二.写入剪切板开关
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 :开发者自行读取剪切板,将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;