cordova打开外部链接_cordova通过外部链接打开app,为什么handleopenurl方法不执行?...

先直接贴关键代码:

$rootScope.goalBillId = '';//外部链接带过来的参数billId

var userInfo = null;//用于判断app用户是否已经登录

function onResume() {

userInfo = Userinfo.getData('userData');

getBillFromLink().then(function (data) {

if(data.length>0 && !!userInfo){

$state.go('public.saleOrderDetail');

return;

}

if(data.length>0 && !userInfo){

$state.go('public.login');

}

});

}

function getBillFromLink() {

var deferred = $q.defer();

$timeout(function() {

window.handleOpenURL = function(url){

if(!!url){

$rootScope.goalBillId = url.split('billId')[1];

deferred.resolve($rootScope.goalBillId);

}else{

$rootScope.goalBillId = '';

deferred.reject($rootScope.goalBillId);

}

};

}, 0);

return deferred.promise;

}

$ionicPlatform.on("deviceready", function () {//app启动

userInfo = Userinfo.getData('userData');

document.addEventListener("resume", onResume, false);//监听app从后台被唤起的事件

getBillFromLink().then(function (data) {

if(data.length>0 && !!userInfo){

$state.go('public.saleOrderDetail');

return;

}

if(data.length>0 && !userInfo){

$state.go('public.login');

return;

}

$state.go('public.tabBuyer.index');

});

});

现在的问题是这样的:

app未运行的时候,从外部链接打开app正常触发deviceready事件,成功通过getBillFromLink()中的 window.handleOpenURL方法获取传过来的url;

切换让app转入后台,再第一次通过外链打开app,此时触发resume唤起事件,执行onResume(),可以正常执行至getBillFromLink(),但不触发window.handleOpenURL;

再一次让app转入后台,第二次通过外链打开app,此时能正常触发window.handleOpenURL,并且之后都是可以正常执行的。

想请教一下这种第一次从后台唤起app才存在的问题该如何解决?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值