处理在meteorjs上构建的cordova app中的深层链接(myapp://)

时间:2015-09-11 19:53:51

标签: android ios cordova meteor url-scheme

我正在构建一个meteorjs应用程序并将其部署为适用于Android和iOS的本机(cordova)应用程序。

我需要深入链接到我的应用,所以我可以通过关注网站上的链接来启动它。

我使用了Eddy Verbruggen(https://github.com/EddyVerbruggen/Custom-URL-scheme)的cordova插件实现了URL Scheme,我设法通过链接“myapp://”格式启动了我的应用程序。

问题是,即使应用程序成功启动,handleOpenUrl挂钩也不会被触发。

Meteor.startup(function() {
    handleOpenURL = function handleOpenURL(url) {
        console.log("received url: " + url);
        // parse url and proceed accordingly
    }
});

没有记录任何内容。所以我无法将任何参数传递给我的应用,甚至无法检测到应用是通过“myapp://”URL方案后面的链接启动的。

另外,我注意到即使我的应用程序已经打开,如果我切换到浏览器并单击特殊的“myapp://”链接,而不是切换到我的(已经打开的)应用程序,新的实例该应用程序即将推出。

[编辑]原来这两个问题是相关的。一旦我阻止初始化应用程序的新实例,就成功触发了handleOpenUrl函数。

我正在使用Android模拟器进行所有测试。我还没有机会在iOS上测试。

[编辑] iOS根本没有提出这个问题。这只是一个Android问题。

如果有任何人在meteorjs中实施自定义URL方案的经验,我们非常感谢您的反馈!

1 个答案:

答案 0 :(得分:0)

我设法解决了我面临的问题。对于遇到类似问题的其他人来说,这是解决方案。

首先,它只发生在Android上。 iOS没有任何问题启动应用程序并触发handleOpenUrl函数。

我在Android上面临的两个问题是,彼此之间存在相关性。每次触发应用程序的新实例这一事实阻止了handleOpenUrl函数被触发。

通过在mobile-config.js文件中添加一行代码来解决这两个问题:

App.setPreference("AndroidLaunchMode", "singleTask");