网页二维码推广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  (需要FQ),它会弹出一个中间页,中间页会显示一个“安装”或“打开”按钮。中国的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毫秒后)没有响应,就直接跳到下载界面。

详情可参考:Android手机上实现WebApp直接调起NativeApp

iOS

1) 直接跳转浏览器 https://itunes.apple.com/cn/app/idxxx 已安装的话就会显示“打开”,未安装就会提示“下载”;

2) 直接使用APP自己注册的url scheme(前提是你必须已经安装了该APP);

iOS9中在应用A中想判断应用B是否已经安装/可直接启动,需要在Info.plist中添加白名单,可自行搜索。

想对用户更友好一点:如果已安装就直接启动应用(跳过上面的中间页)或者未安装时跳到下载界面,一样也是使用延时来处理。原理与Android一样,先调用自定义的url scheme,在超过一定时间,假定3S后没有响应,就直接跳到下载页。

详情可参考:在webapp中判断native app是否安装并直接打开

微信扫一扫功能

单独把微信拿出来,是因为做了很多限制,而且因为微信用户群体太过庞大,不得不专门处理。

拿上面的market://details?id=<package_name>来讲,你生成二维码,微信根本就扫不出来。怎么办呢?

接入官方的应用宝微下载,地址在这里:http://wiki.open.qq.com/index.php?title=mobile/%E5%BA%94%E7%94%A8%E5%AE%9D%E5%BE%AE%E4%B8%8B%E8%BD%BD

那问题又来了,我怎么知道玩家是通过微信扫一扫过来的啊,很简单。判断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)就将网页跳到下载页(就算时间过短了,反正这个中间页也有按钮可以直接打开应用)。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序人生

谈谈用户权限系统

登录这事之于一个需要识别用户身份的产品,就仿佛cs101之于computer science。感谢各种语言里各种优秀的登录模块(比如nodejs的passpor...

31240
来自专栏云瓣

hexo摸爬滚打之进阶教程

本文首发在我的个人博客:http://muyunyun.cn/ 写博客有三个层次,第一层次是借鉴居多的博文,第二层次是借鉴后经过消化后有一定量产出的博文,第三...

54480
来自专栏Java技术分享圈

杨老师课堂_安卓教程第一篇之入门

9620
来自专栏地方网络工作室的专栏

打造前端MAC工作站(八)配置称手的 chrome 和 safari 浏览器

打造前端MAC工作站(八)配置称手的 chrome 和 safari 浏览器 前言 前端工程师绝大部分的工作成果都是需要在浏览器中查看的。当然,浏览器更是我们学...

298100
来自专栏AI科技评论

干货 | 马蜂窝数据被扒光, 用 Python 爬取网页信息 4 分钟就能搞定

图片来自https://www.freestock.com/free-photos/illustration-english-window-blue-sky-c...

23830
来自专栏琯琯博客

awesome-sysadmin-cn资源

系统管理员 资源列表,内容包括:备份/克隆软件、云计算/云存储、协作软件、配置管理、日志管理、监控、项目管理 备份 备份软件 Amanda:客户端-服务器模型备...

730120
来自专栏林冠宏的技术文章

独立开发 一个社交 APP 的架构分享 (已实现)

(本博客为原创:https://cloud.tencent.com/developer/user/1148436/activities) My BananaCl...

77180
来自专栏北京马哥教育

实战精华 | 搭建服务器的之后总结的一些个人经验

最近帮实验室装了两台服务器,计算用的服务器放在内网,通过一台堡垒机与外界相连。碰到很多小问题,在这里记录一下。 组建内网 这一部分没有太多好说的,堡垒机需要有两...

31840
来自专栏BY的专栏

利用 GitHub Pages 快速搭建个人博客前言快速开始写文章自定义域名进阶利用GithHub Desktop管理GitHub仓库修改个人介绍常见问题其他Star补充最后要说个事情

965100
来自专栏小白课代表

软件分享 | AutoCAD 2011 安装教程

6、姓氏名字组织随便输,比如:公众号小白课代表最棒,输入序列号:666-69696969,密钥:001C1

8710

扫码关注云+社区

领取腾讯云代金券