基于ULink实现分享追踪新用户

299 阅读2分钟

配置分享链接参数

链接中加入um_from_appkey可以区分分享平台,再加上页面id、分享人id等

友盟控制台配置ULink

打开友盟ULink模块,打开分析裂变营销创建活动

  • App跳转path为app内收到可以看到哪个页面分享的
  • App页面传参和首次安装传参都是固定参数,就是链接里不用配置app就可以拿到的参数。
  • 页面原始链接为分享链接。
    打开设置Deeplink配置
  • 配置Android和iOS设置
  • 注意:使用Scheme方式跳转的,Universal Link不要写,写了网页JS会默认Universal Link跳转,我是使用了Scheme

JS配置

Vue

注意在文件目录public下打开index,添加

  <script src="https://g.alicdn.com/jssdk/u-link/index.min.js"></script>
mounted() {
    const ULink =window.ULink
    const url = (window.location.href ||'').split('?')[1]
    const data = ULink.getUriParams(url)
    ULink([{
      id: '****', // 后台生成的裂变活动LinkID
      data: data,
      selector: '#downbtn', // id名字,需要与页面内跳转按钮的id一致
      auto: false, // 含义见下文,
      lazy: false,
      useOpenInBrowerTips: 'default', // 在微信等内打开会提示去浏览器
      proxyOpenDownload(defaultAction, LinkInstance) {
        if (LinkInstance.solution.type === 'scheme') {
          if (ULink.isWechat || ULink.isQQ) {
            defaultAction()
          } else {
            window.location.href = LinkInstance.solution.downloadUrl
          }
        }
      }
    }])
},

html

<script src="https://g.alicdn.com/jssdk/u-link/index.min.js"></script>
<script>
    const ULink =window.ULink;
    const url = (window.location.href ||'').split('?')[1];
    const data = ULink.getUriParams(url);
ULink([{
    id:"****",// 后台生成的裂变活动LinkID
    data:data,
    selector:"#downbtn",//按钮的名称,与页面内跳转按钮id一致
    // 可选高级功能,具体含义请看下方U-Link API文档
    auto:false,
    timeout:2000,
    lazy:false,
    useOpenInBrowerTips: 'default', // 在微信等内打开会提示去浏览器
    proxyOpenDownload(defaultAction, LinkInstance) {
          if (LinkInstance.solution.type === 'scheme') {
            if (ULink.isWechat || ULink.isQQ) {
              defaultAction()
            } else {
              window.location.href = LinkInstance.solution.downloadUrl
            }
          }
        },
}]);
</script>

App内

首次安装

最好做个开关,安装后只调用一次即可

func getUMInstall(){
     MobClickLink.getInstallParams { params, url, error in
            ///params就是友盟后台配置好的首次安装参数、url为webpageurl包含了scheme加链接,这里写MobClickLink.handle(url, delegate: vc)会把拿到的链接转到delegate的vc里去实现,vc里拿到的参数与这里不同,所以看自己的需求需要拿哪些参数,如果分享人id或者页面id这种可变的参数,就转到vc去拿(当然也可以从url里拆出来),如果是定死的首次安装参数就在这里params拿。
     }
}

MobClickLinkDelegate

func getLinkPath(_ path: String!, params: [AnyHashable : Any]!) {
///这里path为裂变营销配置的App跳转path,比如path设置为qadetail问答详情,就知道要跳QADetailController,params为分享链接里的所有参数,包含userId、问答详情id等
}

通过分享页点击跳转到App指定页面

///scheme使用
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
///获取到当前的vc,最好是放在首页,与上面MobClickLinkDelegate的实现一样,因为首页是常驻的页面,必然可以收到消息然后获取当前页面的navigationController进行跳转,比如我在个人中心的设置页,首页收到代理的方法实现,然后拿到当前设置页的navigationController进行跳转。
MobClickLink.handle(url, delegate: vc)
}
///universal link使用
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
MobClickLink.handleUniversalLink(userActivity, delegate:vc)
}