跳转到主要内容
PRODUCT DOCUMENTS

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

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

接入集成

如果您希望将H5页面从app分享到微信等平台,实现从app——>微信——>app的分享场闭环链路,可以集成U-Share的SDK集成,即可拥有社交分享加授权登录能力

如果您想要拥有Deeplink功能,需要按照以下的步骤接入U-Link:截屏2021-02-02 13.23.50.png如果您希望将H5页面从app分享到微信等平台,实现从app——>微信——>app的分享场闭环链路,可以集成U-Share的SDK集成,即可拥有社交分享加授权登录能力,集成文档参考:U-Share iOS接入指南

在使用U-Link之前,需要先配置一些参数才能正确使用,首先请参考Deeplink设置页使用文档,在U-Link后台【设置-Deeplink设置】配置Deeplink相关参数,这些参数包括Scheme,默认下载地址,Universal link等等,并且绑定关联应用(如果只有单端应用则选暂无)

其次参考裂变营销页文档,在U-Link后台【分析-裂变营销】页面创建裂变营销活动,填写此裂变活动要跳转安装传递的参数和投放渠道等,创建完裂变活动后,在活动详情页可以找到服务端生成的与此裂变活动一一对应的LinkID

二、H5页面集成 JS SDK

一个裂变活动需要准备一个H5页面,请提前准备从客户端分享出来(或者是通过短信/广告投放出去)的H5页面,并且将我们提供的JS SDK集成到该H5页面中。请参考文档JSSDK接入指南,并用服务端生成的LinkID初始化JSSDK,这样H5页面才能正常唤起App

开发者要在自己的App客户端里集成新版U-Link SDK,建议一起集成U-Share SDK实现分享能力。集成一共有手动和自动两种方式

1.获取SDK

1.1 自动集成

智能超链U-Link SDK需要配合7.x.x版本基础组件库(含统计功能)等才能正常使用。

    pod 'UMCommon'    //必须集成,依赖库
    pod 'UMDevice'       //必须集成,依赖库

    pod 'UMLink'          //必须集成,对应了智能超链产品U-Link
   
    pod 'UMShare/Social/WeChat' //可选集成,对应了社会化分享产品U-Share,一起集成能统计分享回流指标

依赖库更多信息可以查看移动统计SDK集成文档中的Cocoapods集成一节

配置完成后在 Podfile 所在目录执行

pod update

即可。不建议加入--no-repo-update 参数,若添加后仅从本地Cocoapods库中查找SDK,不再更新线上SDK。如果本地存在SDK会直接使用本地SDK版本(不是线上最新版本),若本地不存在SDK会产生错误。 也不建议使用 pod install 命令,此命令不会更新最新版本SDK。由于 pod search 命令对新增项目可能出现无法找到的情况,建议直接使用 pod update 进行直接更新。

自动集成完U-Link SDK后请直接跳转到在App里处理配置参数一节

1.2 手动集成 SDK

请在友盟+官网下载U-Link最新Link SDK

ulink

下载完成后,解压将会拿到相关的common包以及link包。要求common包版本在7.2.3版本及以上

image.png

2 集成 SDK

当您下载了U-Link SDK后,就可以开始集成了。common包的手动集成文档请参考官网的U-App集成文档

如您一起下载了U-Share SDK,请参考官网U-Share iOS接入指南,集成后需要再对App工程进行U-Link相关功能的处理

3 初始化 SDK

您需要初始化U-Link SDK,请参考通用初始化接口

四、在App里处理配置参数

之前开发者已经在ULink后台页面配置了跳转页面path和kv参数后,但是还要在自己App里进行配置,使得App能够解析这些参数并且能够跳转到相应的页面。

开发者可以查看U-Link SDK Demo: https://github.com/umeng/Link_Demo_iOS

处理主要分为两部分:1、新安装App参数获取 2、唤醒已安装App的系统回调,详情见下面内容

1、 处理前准备

(1)集成UMCommon.framework

请看上面第三章节,确保已经集成了UMCommon.framework,

iOS端建议用Universal link方式拉起App,因为微信和QQ都支持Universal link方式,并且此方式不需要让用户点击确认框,用户体验会更好。Universal link配置方式请看第五章,也可以在U-Link后台由友盟免费生成

也可以采取URL Scheme方式拉起App(微信QQ有可能会封锁此方式),具体配置方式参考文档

在UMCommon.framework里可以找到MobClickLink.h头文件

2、 新安装参数获取

用户首次安装App,打开App时需要调取如下接口(非首次安装不用调用),调取此接口后服务端会进行模糊匹配,模糊匹配成功后App就可以获取到新安装参数 。

说明

1.此接口必须要等到用户同意隐私政策之后再延迟1~2秒调取,目的是排除因网络延迟问题,造成模糊匹配失败

2.U-Link v1.2.0 SDK及以后,支持跨端打通模糊匹配技术,突破传统IP和剪切板模糊匹配的缺点,提升成功获取新安装参数的概率。跨端打通模糊匹配技术说明

3.U-Link v1.1.0 SDK及以后,支持剪切板模糊匹配技术,以提高成功获取新安装参数的概率,涉及到剪切板读和写功能。但是iOS 14以上系统读取剪切板时,会弹出一个提示框“xx粘贴自xx”。如希望使用剪切板功能,请仔细阅读剪切板使用说明文档,如不希望使用剪切板功能,则调取下方新版接口,将enablePasteboard设置为no即可,U-Link SDK就不会读取用户剪切板,此时会通过IP或者跨端打通技术进行模糊匹配

//初始化appkey
    //....TODO

//新安装参数获取,新旧版接口任选其一即可
    
     //新版接口,将enablePasteboard设置为no,则不会读剪切板;设置为yes会读剪切板
       + (void)getInstallParams:(void (^)(NSDictionary *params, NSURL *URL, NSError *error))completion enablePasteboard:(BOOL)enablePasteboard; 


    //旧版接口,默认开启剪切板读取功能
        [MobClickLink getInstallParams:^(NSDictionary*params, NSURL *URL,NSError*error)
          {
             if(error){
             NSLog(@"getInstallParams====");
             return;
           }

          NSLog(@"getInstallParams URL:(%@)",URL);
          NSLog(@"getInstallParams params:(%@)",params);

          }];
         return YES;

  

调取此接口,如果模糊匹配成功,您能够获取到Params和URL两个参数,

  • Params:您在U-Link后台裂变营销页创建活动时填写的固定【首次安装传参】参数,此参数不是动态的image.png

  • URL:服务端拼接的wakeupurl,如果是Universal link拉起方式,格式大致是“(Universal link的域名)/(App跳转path)?(后台填的App页面传参kv)&(后台填的首次安装传参kv)&(JSSDK里填的自定义参数kv)&_sdk=umeng&linkid=xxx&_um_chnnl=share”等等,即URL里包含了JSSDK传递的data自定义参数。

    您可以

    利用下面第3步里的handleLinkURL函数来处理URL,解析出传递的动态参数

自定义
说明

此接口建议在应用新安装后第一次启动时调用,而不需要应用每次启动时都调用(并不是每次启动都需要页面跳转)。SDK会把成功获得的数据缓存在本地,APP以后再需要的时候也可以再次调用此接口获得,此时不会再走模糊匹配的逻辑。可是如果用户把App卸载了,那么用户自行重装的时候服务端会再次进行模糊匹配

3、 唤醒app的系统回调

以下是唤起已安装App的回调,即直接唤起App时传递的自定义参数通过以下回调获取,以下三个回调必须全部添加

//Universal link的回调
  -(BOOL)application:(UIApplication*)application continueUserActivity:(nonnull NSUserActivity*)userActivity restorationHandler:(nonnull void(^)(NSArray<id<UIUserActivityRestoring>>*_Nullable))restorationHandler
  {
    UINavigationController*platformVc =(UINavigationController*)self.window.rootViewController;
    UMMainViewController*vc = platformVc.viewControllers[0];
    if([MobClickLink handleUniversalLink:userActivity delegate:vc])
    {
      return YES;
     }
    //其它第三方处理
      return YES;
   }

//URL Scheme回调,iOS9以上,走这个方法
  -(BOOL)application:(UIApplication*)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id>*)options
   {
     NSLog(@"url:%@", url);
     UINavigationController*platformVc =(UINavigationController*)self.window.rootViewController;
     UMMainViewController*vc = platformVc.viewControllers[0];
     if([MobClickLink handleLinkURL:url delegate:vc])
        {
          return YES;
        }
     //其它第三方处理
          return YES;
      }

//URL Scheme回调,iOS9以下,走这个方法
   -(BOOL)application:(UIApplication*)application openURL:(nonnull NSURL *)url sourceApplication:(nullable NSString*)sourceApplication annotation:(nonnull id)annotation
      {
        NSLog(@"url:%@", url);
        UINavigationController*platformVc =(UINavigationController*)self.window.rootViewController;
        UMMainViewController*vc = platformVc.viewControllers[0];
        if([MobClickLink handleLinkURL:url delegate:vc])
          {
             return YES;
           }
         //其它第三方处理
             return YES;
        }
说明

handleLinkURL函数和 handleUniversalLink用于获取并识别UMeng的deeplink的url的参数并且上传对应的参数。MobClickLinkDelegate 为获取到UMeng的deeplink的回调

注意

如果想实现用户未安装时直接跳转到Appstore页面,请阅读FAQ:未安装跳转到404页面

U-Link集成文档介绍完毕,完成后请在测试设备上测试Deeplink拉起功能是否正常,以及在概况页查看U-Link相关指标数据是否正常

如果您希望统计出H5带来的新老用户,后续在App里的留存率/注册/付费等情况,可以参考统计App后续的留存率/注册/付费等数据

如果您希望实现老带新完整链路奖励和分享邀请KOL用户统计,可以参考社交分享关系链统计功能文档

常见问题

  1. 不能打开APP

  2. Universal link拼接URL时只有域名没有path

  3. 用户未安装时自动打开其他页面/打开404页面

  4. 免费生成Universal link及重定向功能说明

  5. iOS获取不到安装参数

  6. 如何统计到拉新用户/模糊匹配原理是什么

  7. 如何实现免邀请码安装

  8. 活动触发次数统计规则

  9. App启动次数为0

五、配置Universal link

如您想在iOS端使用Universal link拉起方式(仅iOS9及以上用户,用户体验比URL Scheme拉起方式更好),那么您需要先配置Universal link,详情可以参考苹果官方文档。并且自己配置的Universal link需要做重定向到下载页面工作,才能实现未安装时直接跳转到下载页面的功能。

2021年6月3日起,U-Link后台上线了Universal link免费生成及重定向功能,免去开发者自行配置,详情请看生成Universal link及重定向功能说明

1.准备一个支持HTTPS的域名

并且拥有该域名下的上传到根目录的权限(为了上传Apple指定文件)。

2.开发者中心配置

找到对应的App ID,在Application Services列表里有Associated Domains一条,把它变为Enabled就可以了。image.png

3.工程配置

  • Xcode 11.0版本

工程配置中相应功能:targets->Signing&Capabilites->Capability->Associated Domains,在其中的Domains中填入你想支持的域名,必须以applinks:为前缀。例如是 applink:www.baidu.com,具体步骤如下图:

image.pngimage.pngimage.png

注意:Universal link的域名和H5页面URL的域名不可以是同一个,详情请看Universal link同域不能唤起

  • Xcode 11.0以下版本

工程配置中相应功能:targets->Capabilites->Associated Domains,在其中的Domains中填入你想支持的域名,必须以applinks:为前缀。配置项目中的Associated Domains:image.png

4.配置指定文件

创建一个json格式的空文件(必须命名为apple-app-site-association,切记没有后缀),内容如下:

{
    "applinks":{
    "apps":[],
    "details":[
    {
      "appID":"9JA89QQLNQ.com.apple.wwdc",
      "paths":["/wwdc/news/","/videos/wwdc/2015/*"]
     }
                 ]
                  }
}
  • appID :为 teamID.bundleId形式,登陆开发者中心,在Account -> Membership里面可以找到Team ID。

  • paths:实际上就是限制链接里的哪些路径可以唤醒app,哪些路径不能唤醒app,假如您的域名是www.taobao.com,paths 里填 “*” ,那么此域名下的所有路径都能唤起app。而示例中写了两个path,那么只有www.taobao.com/wwdc/news 和www.taobao.com/videos/wwdc/2015 才能唤起app. 这里填写的path一定要和创建裂变营销活动时填写的App跳转path对应

details数组中可以配置多个APP的信息,如果公司内有多个APP需要支持Universal link,则可以直接添加多个。

5.上传指定文件

将这个文件上传到你的服务器,可以将这个文件放到服务器的根目录下,也可以放到.well-known这个子目录下。这是为了苹果能获取到你上传的文件。

上传完后,自己先访问一下,看看是否能够获取到,以上传到根目录下为例,请在浏览器内直接输入“https://www.baidu.com/apple-app-site-association” ,然后应该可以直接访问apple-app-site-association文件 ,这样才说明配置成功。当我们的App在设备上第一次运行时,如果支持Associated Domains功能,那么iOS会先请求https://domain.com/.well-known/apple-app-site-association, 如果此文件请求不到,再去请求https://domain.com/apple-app-site-association, 所以如果想要避免服务器接收过多GET请求,可以直接把apple-app-site-association放在./well-known目录下。

此外服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,即iOS只会在App第一次启动时请求一次,以后除非App更新或重新安装,否则不会在每次打开时请求apple-app-site-association。

苹果为了方便开发者,提供了一个网页来验证我们编写的这个apple-app-site-association是否合法有效,进入验证网址进行验证image.png

方法一:

在iOS设备中的备忘录中输入APP能识别的链接,然后直接点击此链接,就会直接跳转到你的app了。或是长按,在出现的弹出菜单中第二项是在’XXX’中打开,这也代表着成功:**image.png

方法二:

或是你将要测试的网址在Safari中打开,在出现的网页上方下滑,可以看到有在”XX”应用中打开image.png

7.在工程里的实现AppDelegate里对应的方法

当点击某个链接,直接可以进我们的app了,但是我们的目的是要能够获取到用户进来的链接,根据链接来展示给用户相应的内容。

-(BOOL)application:(UIApplication*)application continueUserActivity:(NSUserActivity*)userActivity restorationHandler:(void(^)(NSArray*_Nullable))restorationHandler {
if([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb])
{
        NSURL *url = userActivity.webpageURL;
if(url是我们希望处理的)
{
//进行我们的处理
}
else
{
[[UIApplication sharedApplication] openURL:url];
}
}

return YES;
}

8. 在微信、QQ里配置Universal link

微信目前已支持通过Universal link方式直接打开第三方App,要求SDK版本大于等于1.8.6.1。用户主要需要配置以下几步才能使用正常功能,详情配置步骤可以参照微信Universal link文档(1)首先按照苹果官方文档,配置universal link。微信对Universal Links配置有以下要求:

  • Universal Links必须支持https

  • Universal Links配置的paths不能带query参数

  • 微信使用Universal Links拉起第三方App时,会在Universal Links末尾拼接路径和参数,因此App配置的paths必须加上通配符/*

(2)然后向微信注册自己的应用id和Universal Links。

此外QQ也已支持Universal link跳转方式,要求SDK版本大于等于3.3.6.详情配置步骤可以参考QQ配置文档