起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6385|回复: 14

[结贴] customURLScheme插件用法

[复制链接]

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
发表于 2017-9-18 14:44:34 | 显示全部楼层 |阅读模式
本帖最后由 qweasdzxc 于 2017-9-18 15:10 编辑

参考了http://docs.wex5.com/cordova-plugin-customurlscheme/
  1. require("cordova!cordova-plugin-customurlscheme");
  2. var base=require("$UI/system/api/native/base");
  3. var setState=require("$UI/demo/plugin/disabled");


  4. var Model = function(){     
  5. this.eventName = new Date().getTime() + "";
  6.         $(window).on('handleOpenURL.'+this.eventName,this.handleOpenURL);
  7.         this.wx=base.getWx();
  8. };

  9. //微信检测
  10.     Model.prototype.modelLoad = function(event){
  11.         if(this.wx){
  12.             setState.state(".custom-content","a[xid='open']");
  13.         }
  14.     };   
  15.     Model.prototype.handleOpenURL = function(event,url){
  16.         justep.Util.hint("接收到URL参数:  "+url );
  17. //        justep.Util.hint("开发者现在可以根据接收到的URL参数进行不同的处理,在此并不在做展示");   
  18.     };
  19.     Model.prototype.modelUnLoad = function(event){
  20.         $(window).off("handleOpenURL." + this.eventName);
  21.     };
复制代码

在index.w页面写的,但是打开APP后显示白屏,把代码屏蔽了能正常运行,什么原因?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36178
发表于 2017-9-18 15:20:03 | 显示全部楼层
放到了app的首页中写的?
这样运行平台的案例/UI2/demo/plugin/customURL/demo.w有问题吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-9-18 15:30:19 | 显示全部楼层
本帖最后由 qweasdzxc 于 2017-9-18 15:55 编辑
jishuang 发表于 2017-9-18 15:20
放到了app的首页中写的?
这样运行平台的案例/UI2/demo/plugin/customURL/demo.w有问题吗? ...

是在APP的index.w页面写的,我想实现的功能是正在浏览器或者微信、QQ上扫二维码,如果二维码识别成功,则通过判断设备是否安装APP,如果安装了则启动APP应用,并实现跳转,否在下载APP。是在index.w写吗?
把下面代码屏蔽了就能正常运行了,但是不会跳转,我设置了URL参数是X5XXPT
  1. //微信检测
  2.     Model.prototype.modelLoad = function(event){
  3.         if(this.wx){
  4.             setState.state(".custom-content","a[xid='open']");
  5.         }
  6.     };   
复制代码
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36178
发表于 2017-9-18 16:41:36 | 显示全部楼层
确认$(window).on('handleOpenURL.'+this.eventName,this.handleOpenURL);执行了吗?
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-9-18 17:00:24 | 显示全部楼层
jishuang 发表于 2017-9-18 16:41
确认$(window).on('handleOpenURL.'+this.eventName,this.handleOpenURL);执行了吗?

是在index.w里写吗?现在发现index.w页面modelUnLoad事件是加载的base.js啊,所以想知道这个JS要写在哪?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36178
发表于 2017-9-18 17:24:11 | 显示全部楼层
index.w继承的base.w
base.w是所有门户都用的,只有手机中用在index.w中实现,如果在base.w中有相同的事件,需要把具体的方法在index.w中的事件上也实现
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-9-18 18:06:07 | 显示全部楼层
jishuang 发表于 2017-9-18 17:24
index.w继承的base.w
base.w是所有门户都用的,只有手机中用在index.w中实现,如果在base.w中有相同的事件 ...
  1. require("cordova!cordova-plugin-customurlscheme");

  2. var Model = function(){
  3.                 this.callParent();
  4.                 //修改主页,初始化门户
  5.                 this.on('onInit', function(event) {
  6.                         event.config.main.url = '$UI/IntegratedApp/mobile/xfj/main.w';
  7.                         event.config.changePassword.url = '$UI/portal/mobile/changePassword/changePassword.w';
  8.                         event.config.loginURL = '$UI/IntegratedApp/mobile/xfj/login.w';
  9.                         event.config.leftURL = '';
  10.                        
  11.                         this.initPortal();
  12.                 });
  13.                
  14.                 //登录前清理相关
  15.                 this.on('onBeforeLogin', this.doBeforeLogin);
  16.                 //登录成功后加载展现
  17.                 this.on('onLogin', this.doAfterLogin);
  18.                 //onload事件
  19.                 this.on('onLoad', this.doLoad);
  20.                

  21.         this.eventName = new Date().getTime() + "";
  22.         $(window).on('handleOpenURL.'+this.eventName,this.handleOpenURL);
  23.    
  24.                 var u = navigator.userAgent, app = navigator.appVersion;
  25.                 var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; // android终端或者uc浏览器
  26.                 var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
  27.                 if (isIOS) {
  28.                     alert("isIOS");
  29.                         // 通过iframe的方式试图打开APP,如果能正常打开,会直接切换到APP,并自动阻止a标签的默认行为
  30.                         // 否则打开a标签的href链接
  31.                         var ifr = document.createElement('iframe');
  32.                         ifr.src = 'X5XXPT://';
  33.                         ifr.style.display = 'none';
  34.                         document.body.appendChild(ifr);
  35.                         window.setTimeout(function() {
  36.                                 document.body.removeChild(ifr);
  37.                         }, 3000);
  38.                 }
  39.                 if (isAndroid) {
  40.                         alert("isAndroid");
  41. var ifr = document.createElement("iframe");
  42. ifr.src = "X5XXPT://";// 打开app的协议,有app同事提供
  43. ifr.style.display = "none";
  44. document.body.appendChild(ifr);
  45. window.setTimeout(function(){
  46. document.body.removeChild(ifr);
  47. },2000);
  48.                 }
  49.         };

  50. Model.prototype.modelUnLoad = function(event) {
  51.                 if (this._updateDateTimeHandle)
  52.                         window.clearInterval(this._updateDateTimeHandle);
  53.                 $(window).off("handleOpenURL." + this.eventName);
  54.         };
  55.         // 在此接收URL参数
  56.         Model.prototype.handleOpenURL = function(event, url) {
  57.                 justep.Util.hint("接收到URL参数:  " + url);
  58.                 // justep.Util.hint("开发者现在可以根据接收到的URL参数进行不同的处理,在此并不在做展示");
  59.         };
复制代码
这是我现在的代码,还是不能跳转

回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36178
发表于 2017-9-19 09:14:07 | 显示全部楼层
先确认案例中的是否正常
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3395

积分

论坛元老

Rank: 8Rank: 8

积分
3395
QQ
 楼主| 发表于 2017-9-19 09:32:50 | 显示全部楼层
jishuang 发表于 2017-9-19 09:14
先确认案例中的是否正常

案例怎么打包在书记上测试?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36178
发表于 2017-9-19 10:38:53 | 显示全部楼层
自己配置一个功能菜单,url设置为/UI2/demo/plugin/customURL/demo.w对应的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2025-6-25 16:17 , Processed in 0.091367 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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