先直接贴关键代码:
$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才存在的问题该如何解决?