阿里云服务器免费领卷啦。

捡代码论坛-最全的游戏源码下载技术网站!

 找回密码
 立 即 注 册

QQ登录

只需一步,快速开始

搜索
关于源码区的附件失效或欺骗帖, 处理办法
查看: 3593|回复: 0

在应用(微信/浏览器)中拉起手机QQ

[复制链接]

4213

主题

210

回帖

12万

积分

管理员

管理员

Rank: 9Rank: 9Rank: 9

积分
127206
QQ
发表于 2017-4-30 13:57:20 | 显示全部楼层 |阅读模式


在应用(微信/浏览器)中拉起手机QQ


  1. mqqapi://forward/url?version
复制代码
  1. http://41e664-0.gz.1253619672.clb.myqcloud.com/url/wuyihb.html?_wv=3&t=1493478113833&
复制代码
场景是:当我们做一些活动用来拉新等等时,通常会限制用户只在手Q中打开。比如用户通过微信扫码到了我们H5活动页面。那么我们就可以通过伪协议将手Q拉起,并且将H5页面打开。用户到达的途径有很多,比如通过浏览器,通过微信,通过其他APP应用。

正解代码
先不看原理的话,代码应该是像下面的。今天我也参照了许多别人的代码,但大多数不是这个不兼容,就是微信拉不起来。或者是 IOS 拉起正常,但是 Android 就是不行。这通常是由于代码没有完备造成的。更主要是因为我们的浏览器什么的都在时时更新。
  1. /**
  2. * 检测浏览器UA
  3. * @type {Function}
  4. */
  5. var condition = (function() {
  6.    var ua = navigator.userAgent,
  7.        chrome = ua.match(/Chrome\/([\d.]+)/) || ua.match(/CriOS\/([\d.]+)/);
  8.    //利用正则获得匹配 安卓 UA
  9.    var getAndroidVersion = function() {
  10.        var ua = navigator.userAgent.toLowerCase(),
  11.            version = ua.match(/android\s([0-9\.]*)/);
  12.        return version ? version[1].split('.')[0] : false;
  13.    };
  14.    return {
  15.        chrome: chrome,  //true or false
  16.        androidVersion: getAndroidVersion()   //version
  17.    }
  18. });
  19. /**
  20. * 获得伪协议
  21. * @param jumpURL
  22. * @returns {string}
  23. */
  24. function getURL( normal ) {
  25.    if(normal) {
  26.        return 'mqqapi://forward/url?src_type=internal&version=1&url_prefix='+ btoa(location.href);
  27.    }
  28.    return "intent://forward/url?src_type=web&style=default&=1&version=1&url_prefix=" + btoa(location.href) + "#Intent;scheme=mqqapi;package=com.tencent.mobileqq;end";
  29. }
  30. /**
  31. * 检测是否安装了QQ,如果没有安装要引导用户安装
  32. */
  33. var checkIfInstallQQ = function() {
  34.   WeixinJSBridge.invoke("getInstallState", {
  35.       "packageUrl": "mqq://", //ios
  36.       "packageName": "com.tencent.mobileqq" //android
  37.   }, function(res) {
  38.       if(/^get_install_state:yes/.test(res.err_msg)) {
  39.           window.open( getURL( true ), '_self' );
  40.           window.setTimeout(function() {
  41.               WeixinJSBridge.invoke("closeWindow");
  42.           }, 1500);
  43.       } else if(/^get_install_state:no$/.test(res.err_msg)) {
  44.           if(confirm('您还没有安装手Q,现在去下载安装?')) {
  45.               window.location.replace('http://im.qq.com/mobileqq/touch/index.html');
  46.           }
  47.       } else {
  48.           Alert.show({
  49.               showCancel:false,
  50.               msg: "err:" + res.err_msg
  51.           });
  52.       }
  53.   });
  54. };
  55. /**
  56. * 判断是否在手q中打开,如果不是,则判断是否在微信打开
  57. * 如果在微信打开,调用微信的 JSBridge
  58. */
  59. if( !U.ua.QQ ){
  60.     Alert.show({
  61.         showCancel:false,
  62.         msg: "请在手q中打开此页面",
  63.         onConfirm : function () {
  64.             //如果在微信中打开
  65.             if(U.ua.weixin) {
  66.                 if (typeof WeixinJSBridge == "object" && typeof WeixinJSBridge.invoke == "function") {
  67.                     checkIfInstallQQ();
  68.                 } else {
  69.                     if (document.addEventListener) {
  70.                         document.addEventListener("WeixinJSBridgeReady", checkIfInstallQQ, false);
  71.                     } else if (document.attachEvent) {
  72.                         document.attachEvent("WeixinJSBridgeReady", checkIfInstallQQ);
  73.                         document.attachEvent("onWeixinJSBridgeReady", checkIfInstallQQ);
  74.                     }
  75.                 }
  76.             }else{
  77.                 //这里也可以判断下是否安装了手Q
  78.                 if(U.ua.android && condition.chrome && condition.androidVersion() >= 5) {
  79.                     window.open( getURL(false) );
  80.                 }else{
  81.                     window.open( getURL(true) );
  82.                 }
  83.             }
  84.         }
  85.     });
  86.     return;
  87. }
复制代码
  1. 原始地址:http://cailidan.cn/2016/10/16/%E5%9C%A8%E5%BA%94%E7%94%A8-%E5%BE%AE%E4%BF%A1-%E6%B5%8F%E8%A7%88%E5%99%A8-%E4%B8%AD%E6%8B%89%E8%B5%B7%E6%89%8B%E6%9C%BAQQ/
复制代码




捡代码论坛-最全的游戏源码下载技术网站! - 论坛版权郑重声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与捡代码论坛-最全的游戏源码下载技术网站!享有帖子相关版权
3、捡代码论坛版权,详细了解请点击。
4、本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
5、若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
6、如无法链接失效或侵犯版权,请给我们来信:jiandaima@foxmail.com

回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | 立 即 注 册

本版积分规则

技术支持
在线咨询
QQ咨询
3351529868

QQ|手机版|小黑屋|捡代码论坛-专业源码分享下载 ( 陕ICP备15015195号-1|网站地图

GMT+8, 2025-1-22 22:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表