您如何处理深度链接插件中的简历场景?
Posted
技术标签:
【中文标题】您如何处理深度链接插件中的简历场景?【英文标题】:How you handle on resume scenarios in deep-link plugin? 【发布时间】:2016-10-06 05:39:46 【问题描述】:观察: 1)当应用启动时,设备就绪事件触发,然后用户终止应用。 如果用户单击应用程序链接,插件会正确打开应用程序并转到相应的页面。(此处 onDevice 就绪将触发,并且可观察的深度链接为传入的深度链接提供服务)。 2)在第 1 步之后,当应用程序切换时,暂停触发,现在用户点击来自 gmail 的应用程序链接,此处插件打开应用程序,并调用“onResume”事件。 问题:相同的 ondeviceready .subscribe() 将服务于相同的场景吗?在我的情况下,它不会发生。而且它永远不会在所有后续暂停/恢复(翻转应用并再次返回应用)上起作用。
为了解决这个问题,我在 onResume 块上添加了相同的调用:
$cordovaDeeplinks.route(
'#/home/xyz':
target: 'xyz',
parent: 'home'
).subscribe(
function(match)
, function (nomatch) //Since my url doesn't match, i am handling the navigation on nomatch.
var loc = nomatch.$link.fragment;
$rootScope.$apply(function()
$location.path(loc);
);
);
总结一下,我在 ondeviceready 和 onresume 调用中都有深度链接路由逻辑。
它适用于所有场景,除了: 如果 ondeviceready 深层链接已被使用,则在第一次 onresume 调用上。 1) 应用程序启动,ondevice 就绪事件触发,然后用户终止应用程序。 2) 用户点击了 Gmail 中的链接并打开了应用程序。 3)现在切换应用程序并再次单击链接-失败----(这是唯一失败的情况) 4)重复第3步-通过 - 工作正常 5)重复第3步 - 通过 - 工作正常
进一步调试,发现如下: 设备就绪:在插件上创建深度链接对象之前调用我的应用程序上的观察者 On Resume :在插件上创建深层链接对象后调用我的应用程序上的观察者。
为了解决这个问题,现在我已将我的 ondevice 就绪代码更改如下,并从 onresume 中删除了深层链接代码。
//outside onready
function subscribe_deeplink()
$cordovaDeeplinks.route(
'#/home/xyz':
target: 'xyz',
parent: 'home'
).subscribe(
function(match)
, function (nomatch)
$rootScope.isNavigated = true;
var loc = nomatch.$link.fragment;
subscribe_deeplink();
$rootScope.$apply(function()
$location.path(loc);
);
);
//inside onready
$cordovaDeeplinks.route(
'#/home/xyz':
target: 'xyz',
parent: 'home'
).subscribe(
function(match)
, function (nomatch)
$rootScope.isNavigated = true;
var loc = nomatch.$link.fragment;
subscribe_deeplink();
$rootScope.$apply(function()
$location.path(loc);
);
);
现在,深层链接适用于我的应用,适用于所有场景。
我想知道几件事: 1)这是一种建议的方式继续上述方式吗???? 2) 为什么在 deeplink 插件上没有讨论 onresume 场景。您如何处理简历场景。我在实现上遗漏了什么
【问题讨论】:
【参考方案1】:在Branch.io,我们实际上连接了onDeviceReady
和onResume
。基本框架:
onDeviceReady: function()
Branch.initSession();
,
onResume: function()
Branch.initSession();
,
initialize: function()
document.addEventListener('resume', onResume, false);
document.addEventListener('deviceready', onDeviceReady, false);
,
function DeepLinkHandler(data)
alert('Data from initSession: ' + data.data);
这显然不是与深度链接插件的完美关联,但作为参考点可能有用。
无耻插件:您还可以查看Branch.io 深度链接平台,因为它做所有相同的事情以及一些额外的好处,如延迟深度链接和归因分析。
【讨论】:
以上是关于您如何处理深度链接插件中的简历场景?的主要内容,如果未能解决你的问题,请参考以下文章
您如何处理 Apache Pig 中的空输入文件或丢失的输入文件?