移动互联网时代,一个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;
}
iOS
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)就将网页跳到下载页(就算时间过短了,反正这个中间页也有按钮可以直接打开应用)。