浩森
浩森
  • 发布:2019-05-17 12:20
  • 更新:2019-05-17 12:20
  • 阅读:2099

Android平台设置UrlSchemes过程中遇到的几个坑

分类:HTML5+

官方代码

  
document.addEventListener('plusready',function(){    
    checkArguments();    
},false);    
// 判断启动方式    
function checkArguments(){    
    console.log("plus.runtime.launcher: "+plus.runtime.launcher);    
    var args= plus.runtime.arguments;    
    if(args){    
        // 处理args参数,如打开新页面等    
    }    
}    
// 处理从后台恢复    
document.addEventListener('newintent',function(){    
    console.log("addEventListener: newintent");    
    checkArguments();    
},false);    

官方代码没解释太多东西。

第一个坑:

<a herf="test://index.html">点击打开app</a>

app打开之后提示 test://index.html 这个页面打不开

解决方法:
传递参数不要用html后缀之类的形式。建议还是按照官方标准,使用json字符串形式,接收到之后解析url并且跳转。

<a herf="test://{'url':'index.html'}">点击打开app</a>

第二个坑:

app后台运行发起没有任何问题,app如果后台关闭,通过链接唤醒之后,跳转到参数页面,然后无限刷新,根本停止不下来
根据html5+手册介绍 plus.runtime.arguments 这个参数是只读的,设置为空,并且判断也没用

解决方法:

这个放在入口html文件,app关闭情况下,加载会先加载这个页面,这里判断并且执行跳转。
这个plus.runtime.arguments参数清理不掉,但是其他文件不执行,解决了无限跳转的问题!

  
  
document.addEventListener('plusready',function(){    
    checkArguments();    
},false);    

下面这个放在全局,app不关闭,后台切换到前台的唤醒,自己就执行一次,我也不知道为什么!

  
  
// 判断启动方式    
function checkArguments(){    
    console.log("plus.runtime.launcher: "+plus.runtime.launcher);    
    var args= plus.runtime.arguments;    
    if(args){    
        // 处理args参数,如打开新页面等    
    }    
}    
// 处理从后台恢复    
document.addEventListener('newintent',function(){    
    console.log("addEventListener: newintent");    
    checkArguments();    
},false);    

2 关注 分享
老哥教教我 d***@yunfanda.com

要回复文章请先登录注册