在基于 meteorjs (myapp://) 构建的科尔多瓦应用程序中处理深度链接
Posted
技术标签:
【中文标题】在基于 meteorjs (myapp://) 构建的科尔多瓦应用程序中处理深度链接【英文标题】:Handle deep linking in cordova app built on meteorjs (myapp://) 【发布时间】:2015-09-11 19:53:51 【问题描述】:我正在构建一个 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://”链接,而不是切换到我的(已经打开的)应用程序,一个新的实例应用程序正在启动。
[edit] 原来这两个问题是相关的。一旦我阻止了应用程序的新实例被初始化,handleOpenUrl 函数就会成功触发。
我使用 Android 模拟器进行所有测试。我还没有机会在 iOS 上进行测试。
[edit] iOS 根本没有给出这个问题。这只是一个 Android 问题。
如果有人对在 meteorjs 中实现自定义 URL 方案有任何经验,非常感谢您的反馈!
【问题讨论】:
你是如何让你的自定义 url 在模拟器上的 android 中工作的?我无法让模拟器注册它,但它在 ios 中效果很好 【参考方案1】:我设法解决了我面临的问题。这是解决方案,适用于面临类似问题的其他人。
首先,它只发生在 Android 上。 iOS启动应用并触发handleOpenUrl函数没有任何问题。
我在 Android 上遇到的两个问题原来是相互关联的。每次都会触发一个新的应用实例,从而阻止了 handleOpenUrl 函数被触发。
通过在 mobile-config.js 文件中添加一行代码解决了这两个问题:
App.setPreference("AndroidLaunchMode", "singleTask");
【讨论】:
以上是关于在基于 meteorjs (myapp://) 构建的科尔多瓦应用程序中处理深度链接的主要内容,如果未能解决你的问题,请参考以下文章