zoukankan      html  css  js  c++  java
  • 网页二维码推广App的实现

    移动互联网时代,一个APP的平均推广成本早已经超过了10块。而推广通常分二类:

    1、已经下载过的用户,可以直接打开应用(一般人的手机上安装的应用都非常多,要快速找到某个应用是很困难的事情,而且Android、IOS的搜索都做的很烂~ ~ );

    2、未下载过的用户,跳转至下载页;

     

    手机设备又分为Android、iOS二大阵营,而原理基本上就是通过url scheme来实现:

     

    浏览器中直接打开

    Android:market://details?id=<package_name>

    官方文档: http://developer.android.com/distribute/tools/promote/linking.html  (需要翻墙),它会弹出一个中间页,中间页会显示一个“安装”或“打开”按钮。中国的Android市场太过混乱,好在大家都支持Google官方的这个market协议,建议直接用这个。

     

    如果是一个叫A的app想提示下载另外一个B的app,可以参考下面的代码:

    private String getGooglePlayStoreUrl(){
        String id = activity.getApplicationInfo().packageName; // current google play is   using package name as id

        PackageManager packageManager = activity.getApplicationContext().getPackageManager();
        Uri marketUri = Uri.parse("market://details?id=" + id);
        Intent marketIntent = new Intent(Intent.ACTION_VIEW).setData(marketUri);
        if (marketIntent.resolveActivity(packageManager) != null)
          return "market://details?id=" + id;
        else
          return "https://play.google.com/store/apps/details?id=" + id;
    }
     
    想对用户更友好一点:如果已安装就直接启动应用(跳过上面的中间页)或者未安装时跳到下载界面,可以自己在应用中注册一个自定义的url scheme,然后调用APP自定义的链接,在超过一定时间后(假设500毫秒后)没有响应,就直接跳到下载界面。

    iOS
    1) 直接跳转浏览器 https://itunes.apple.com/cn/app/idxxx 已安装的话就会显示“打开”,未安装就会提示“下载”;
    2) 直接使用APP自己注册的url scheme(前提是你必须已经安装了该APP);
     
    iOS9中在应用A中想判断应用B是否已经安装/可直接启动,需要在Info.plist中添加白名单,可自行搜索。
     
    想对用户更友好一点:如果已安装就直接启动应用(跳过上面的中间页)或者未安装时跳到下载界面,一样也是使用延时来处理。原理与Android一样,先调用自定义的url scheme,在超过一定时间,假定3S后没有响应,就直接跳到下载页。
     
     
    微信扫一扫功能
    单独把微信拿出来,是因为做了很多限制,而且因为微信用户群体太过庞大,不得不专门处理。
    拿上面的market://details?id=<package_name>来讲,你生成二维码,微信根本就扫不出来。怎么办呢?
     
     
    那问题又来了,我怎么知道玩家是通过微信扫一扫过来的啊,很简单。判断HTTP请求的User-Agent
    var ua = navigator.userAgent.toLowerCase();
    if (/micromessenger/i.test(ua)) {
        //在微信中被打开的...
    }

    比如Java、Node.js也是类似了,获取HTTP头HTTP_USER_AGENT判断一下即可

    可参考:如何判断微信内置浏览器>>

     

    =====================================

    总结,保守一点就是无论是否安装过应用,浏览器直接访问下面的地址,会打开中间页(Android某个应用商店或iOS的App Store):

    Android  market://details?id=<package_name>

    iOS https://itunes.apple.com/cn/app/idxxx

    但都会遇到被微信拦截的问题。想不被拦截就只能按官方的流程走下去。

     

    如果想做到,安装过应用就直接启动,没安装就跳到下载页,思路就是优先使用APP的自定义scheme来尝试打开应用,在超过一定时间后(假设3S)就将网页跳到下载页(就算时间过短了,反正这个中间页也有按钮可以直接打开应用)。

  • 相关阅读:
    numpy数组中round, around, rint, ceil, floor, modf, trunc, fix
    基于KNN算法实现手写数字识别
    PM2.5预测(李宏毅机器学习hw_1)
    numpy的array和asarray
    iOS socket
    UIScrollView
    ios读取文件
    CGContext绘图
    UINavigationController和UITabBarController合用
    window下svn开机自动启动
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/5013088.html
Copyright © 2011-2022 走看看