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才存在的问题该如何解决?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
请问这个问题您解决了吗 是怎么解决的