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

发布于 2022-09-05 01:31:01 字数 1877 浏览 13 评论 0

先直接贴关键代码:

$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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

说好的呢 2022-09-12 01:31:01

请问这个问题您解决了吗 是怎么解决的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文